外观
事件与命令路线图
先从需求选择接口,不要让一个插件订阅所有事件。
常见需求映射
| 需求 | 接口或基类 | 注册入口 |
|---|---|---|
| 玩家进入与离开 | IPlayerEnterGameEventHandle | PlayerEnterGameEventManager |
| 玩家正式进入 Playing | IPlayerIntoPlayingHandle | PlayerIntoPlayingEventManager |
| 放置与破坏方块 | IPlayerBreakAndPlaceHandle | PlayerBreakAndPlaceBlockEventManager |
| 交互、使用与攻击 | IPlayerInteractEventHandle | PlayerInteractEventManager |
| 玩家移动 | IPlayerMoveHandle | PlayerMoveEventManager |
| 聊天与告示牌 | IMessageEventHandle | MessageEventManager |
| 自定义密码验证 | IPasswordValidationEventHandle | PasswordValidationEventManager |
| 生物受伤与治疗 | ICreatureHealthEventHandle | 对应健康事件管理器 |
| 方块内容变化 | IBlockChangeEventHandle | BlockChangeEventManager |
| 自定义命令 | AbstractProcessCmd | DLL 扫描时自动注册 |
准确签名、返回值约定和命名空间见完整接口参考。
bool 返回值
多数事件中的 false 表示阻止原行为。多个插件同时处理时,任何插件的拒绝都可能使最终结果失败,因此:
- 默认允许时显式返回
true; - 日志中记录阻止原因、玩家和位置;
- 不用异常代替权限拒绝;
- 确认插件卸载后不会留下永久锁定数据。
命令设计
命令类继承 AbstractProcessCmd。设计时至少考虑:
AuthLevel权限等级;DisplayType是否在帮助中可见;- 参数缺失和非法输入;
- 玩家上下文与控制台上下文;
- 是否支持
GetSuggestions自动补全; - 长耗时任务不能阻塞主循环。
注册与清理
事件通常在 Initialize() 注册。如果当前服务端支持卸载或热重载,应在对应阶段调用 RemoveObject(this)。配置读取放在 Load(),持久化写入放在 Save(),不要重复注册事件。
IyDkuovku7bkuI7lkb3ku6Tot6/nur/lm74KCuWFiOS7jumcgOaxgumAieaLqeaOpeWPo++8jOS4jeimgeiuqeS4gOS4quaPkuS7tuiuoumYheaJgOacieS6i+S7tuOAggoKIyMg5bi46KeB6ZyA5rGC5pig5bCECgp8IOmcgOaxgiB8IOaOpeWPo+aIluWfuuexuyB8IOazqOWGjOWFpeWPoyB8CnwgLS0tIHwgLS0tIHwgLS0tIHwKfCDnjqnlrrbov5vlhaXkuI7nprvlvIAgfCBgSVBsYXllckVudGVyR2FtZUV2ZW50SGFuZGxlYCB8IGBQbGF5ZXJFbnRlckdhbWVFdmVudE1hbmFnZXJgIHwKfCDnjqnlrrbmraPlvI/ov5vlhaUgUGxheWluZyB8IGBJUGxheWVySW50b1BsYXlpbmdIYW5kbGVgIHwgYFBsYXllckludG9QbGF5aW5nRXZlbnRNYW5hZ2VyYCB8Cnwg5pS+572u5LiO56C05Z2P5pa55Z2XIHwgYElQbGF5ZXJCcmVha0FuZFBsYWNlSGFuZGxlYCB8IGBQbGF5ZXJCcmVha0FuZFBsYWNlQmxvY2tFdmVudE1hbmFnZXJgIHwKfCDkuqTkupLjgIHkvb/nlKjkuI7mlLvlh7sgfCBgSVBsYXllckludGVyYWN0RXZlbnRIYW5kbGVgIHwgYFBsYXllckludGVyYWN0RXZlbnRNYW5hZ2VyYCB8Cnwg546p5a6256e75YqoIHwgYElQbGF5ZXJNb3ZlSGFuZGxlYCB8IGBQbGF5ZXJNb3ZlRXZlbnRNYW5hZ2VyYCB8Cnwg6IGK5aSp5LiO5ZGK56S654mMIHwgYElNZXNzYWdlRXZlbnRIYW5kbGVgIHwgYE1lc3NhZ2VFdmVudE1hbmFnZXJgIHwKfCDoh6rlrprkuYnlr4bnoIHpqozor4EgfCBgSVBhc3N3b3JkVmFsaWRhdGlvbkV2ZW50SGFuZGxlYCB8IGBQYXNzd29yZFZhbGlkYXRpb25FdmVudE1hbmFnZXJgIHwKfCDnlJ/nianlj5fkvKTkuI7msrvnlpcgfCBgSUNyZWF0dXJlSGVhbHRoRXZlbnRIYW5kbGVgIHwg5a+55bqU5YGl5bq35LqL5Lu2566h55CG5ZmoIHwKfCDmlrnlnZflhoXlrrnlj5jljJYgfCBgSUJsb2NrQ2hhbmdlRXZlbnRIYW5kbGVgIHwgYEJsb2NrQ2hhbmdlRXZlbnRNYW5hZ2VyYCB8Cnwg6Ieq5a6a5LmJ5ZG95LukIHwgYEFic3RyYWN0UHJvY2Vzc0NtZGAgfCBETEwg5omr5o+P5pe26Ieq5Yqo5rOo5YaMIHwKCuWHhuehruetvuWQjeOAgei/lOWbnuWAvOe6puWumuWSjOWRveWQjeepuumXtOingVvlrozmlbTmjqXlj6Plj4LogINdKC9kZXZlbG9wZXIvc2VydmVyLXBsdWdpbi1hcGkp44CCCgojIyBgYm9vbGAg6L+U5Zue5YC8CgrlpJrmlbDkuovku7bkuK3nmoQgYGZhbHNlYCDooajnpLrpmLvmraLljp/ooYzkuLrjgILlpJrkuKrmj5Lku7blkIzml7blpITnkIbml7bvvIzku7vkvZXmj5Lku7bnmoTmi5Lnu53pg73lj6/og73kvb/mnIDnu4jnu5PmnpzlpLHotKXvvIzlm6DmraTvvJoKCi0g6buY6K6k5YWB6K645pe25pi+5byP6L+U5ZueIGB0cnVlYO+8mwotIOaXpeW/l+S4reiusOW9lemYu+atouWOn+WboOOAgeeOqeWutuWSjOS9jee9ru+8mwotIOS4jeeUqOW8guW4uOS7o+abv+adg+mZkOaLkue7ne+8mwotIOehruiupOaPkuS7tuWNuOi9veWQjuS4jeS8mueVmeS4i+awuOS5hemUgeWumuaVsOaNruOAggoKIyMg5ZG95Luk6K6+6K6hCgrlkb3ku6Tnsbvnu6fmib8gYEFic3RyYWN0UHJvY2Vzc0NtZGDjgILorr7orqHml7boh7PlsJHogIPomZHvvJoKCi0gYEF1dGhMZXZlbGAg5p2D6ZmQ562J57qn77ybCi0gYERpc3BsYXlUeXBlYCDmmK/lkKblnKjluK7liqnkuK3lj6/op4HvvJsKLSDlj4LmlbDnvLrlpLHlkozpnZ7ms5XovpPlhaXvvJsKLSDnjqnlrrbkuIrkuIvmlofkuI7mjqfliLblj7DkuIrkuIvmlofvvJsKLSDmmK/lkKbmlK/mjIEgYEdldFN1Z2dlc3Rpb25zYCDoh6rliqjooaXlhajvvJsKLSDplb/ogJfml7bku7vliqHkuI3og73pmLvloZ7kuLvlvqrnjq/jgIIKCiMjIOazqOWGjOS4jua4heeQhgoK5LqL5Lu26YCa5bi45ZyoIGBJbml0aWFsaXplKClgIOazqOWGjOOAguWmguaenOW9k+WJjeacjeWKoeerr+aUr+aMgeWNuOi9veaIlueDremHjei9ve+8jOW6lOWcqOWvueW6lOmYtuauteiwg+eUqCBgUmVtb3ZlT2JqZWN0KHRoaXMpYOOAgumFjee9ruivu+WPluaUvuWcqCBgTG9hZCgpYO+8jOaMgeS5heWMluWGmeWFpeaUvuWcqCBgU2F2ZSgpYO+8jOS4jeimgemHjeWkjeazqOWGjOS6i+S7tuOAggo=
