From 0baf8f3cabe95101ce05173d491aab80425544be Mon Sep 17 00:00:00 2001 From: MiaoWoo Date: Tue, 25 Feb 2020 23:15:39 +0800 Subject: [PATCH] fix: event execute class type error Signed-off-by: MiaoWoo --- packages/api/src/event.ts | 15 +++++++++------ packages/core/src/index.ts | 1 + packages/plugin/src/interfaces.ts | 24 ++++++++++++++++++++++++ packages/plugin/src/manager.ts | 4 ++-- 4 files changed, 36 insertions(+), 8 deletions(-) diff --git a/packages/api/src/event.ts b/packages/api/src/event.ts index 567c7e47..ed7c4105 100644 --- a/packages/api/src/event.ts +++ b/packages/api/src/event.ts @@ -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,11 +94,14 @@ 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; - if (cost > 20) { - console.console(`§c注意! §6插件 §b${name} §6处理 §d${this.class2Name(eventCls)} §6事件 §c耗时 §4${cost}ms !`) + 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}`); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index c860a2af..8794c3de 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -48,6 +48,7 @@ class MiaoScriptCore { } disable() { + console.log("Disable MiaoScript Engine...") this.pluginManager.disable(); } } diff --git a/packages/plugin/src/interfaces.ts b/packages/plugin/src/interfaces.ts index bf3a4b86..a8c3ac36 100644 --- a/packages/plugin/src/interfaces.ts +++ b/packages/plugin/src/interfaces.ts @@ -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; diff --git a/packages/plugin/src/manager.ts b/packages/plugin/src/manager.ts index 977d77aa..e8532f8b 100644 --- a/packages/plugin/src/manager.ts +++ b/packages/plugin/src/manager.ts @@ -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) } }