fix: event execute class type error

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2020-02-25 23:15:39 +08:00
parent eba21c08dc
commit e323467ed8
4 changed files with 36 additions and 8 deletions

View File

@ -77,7 +77,7 @@ export namespace event {
}
name2Class(name: any, event: string) {
var eventCls = this.mapEvent[event.toLowerCase()] || this.mapEvent[event.toLowerCase() + 'event'];
let eventCls = this.mapEvent[event.toLowerCase()] || this.mapEvent[event.toLowerCase() + 'event'];
if (!eventCls) {
try {
eventCls = base.getClass(eventCls);
@ -94,12 +94,15 @@ export namespace event {
execute(name, exec, eventCls) {
return (...args: any[]) => {
try {
var time = new Date().getTime()
exec(args[args.length - 1]);
var cost = new Date().getTime() - time;
let event = args[args.length - 1];
if (eventCls.isAssignableFrom(event.getClass())) {
let time = Date.now()
exec(event);
let cost = Date.now() - time;
if (cost > 20) {
console.console(`§c注意! §6插件 §b${name} §6处理 §d${this.class2Name(eventCls)} §6事件 §c耗时 §4${cost}ms !`)
}
}
} catch (ex) {
console.console(`§6插件 §b${name} §6处理 §d${this.class2Name(eventCls)} §6事件时发生异常 §4${ex}`);
console.ex(ex);

View File

@ -48,6 +48,7 @@ class MiaoScriptCore {
}
disable() {
console.log("Disable MiaoScript Engine...")
this.pluginManager.disable();
}
}

View File

@ -20,7 +20,13 @@ export namespace interfaces {
public disable() { }
}
interface BaseMetadata {
/**
*
*/
name?: string;
/**
*
*/
servers?: string[];
}
export interface PluginMetadata extends BaseMetadata {
@ -50,19 +56,37 @@ export namespace interfaces {
target?: any;
}
interface ExecMetadata extends BaseMetadata {
/**
*
*/
executor?: string;
}
export interface CommandMetadata extends ExecMetadata {
/**
*
*/
paramtypes?: string[];
}
export interface TabCompleterMetadata extends ExecMetadata {
/**
*
*/
paramtypes?: string[];
}
export interface ListenerMetadata extends ExecMetadata {
}
export interface ConfigMetadata extends BaseMetadata {
/**
*
*/
version?: number;
/**
*
*/
variable?: string;
/**
* yml
*/
format?: string;
}
export type PluginLike = Plugin | string;

View File

@ -98,7 +98,7 @@ export class PluginManagerImpl implements plugin.PluginManager {
try {
if (pl[func]) pl[func].call(pl)
} catch (ex) {
console.console(`§6插件 §b${pl.description.name} §6执行 §d${func} §6方法时发生错误 §4${ex}`)
console.console(`§6Plugin §b${pl.description.name} §6exec §d${func} §6function error §4${ex}`)
console.ex(ex)
}
}
@ -146,7 +146,7 @@ export class PluginManagerImpl implements plugin.PluginManager {
this.updatePlugin(file)
this.createPlugin(file)
} catch (ex) {
console.console(`§6插件 §b${file.name} §6初始化时发生错误 §4${ex.message}`)
console.console(`§6Plugin §b${file.name} §6initialize error §4${ex.message}`)
console.ex(ex)
}
}