Skip to content
服务器插件与终端接口

事件与命令路线图

先从需求选择接口,不要让一个插件订阅所有事件。

常见需求映射

需求接口或基类注册入口
玩家进入与离开IPlayerEnterGameEventHandlePlayerEnterGameEventManager
玩家正式进入 PlayingIPlayerIntoPlayingHandlePlayerIntoPlayingEventManager
放置与破坏方块IPlayerBreakAndPlaceHandlePlayerBreakAndPlaceBlockEventManager
交互、使用与攻击IPlayerInteractEventHandlePlayerInteractEventManager
玩家移动IPlayerMoveHandlePlayerMoveEventManager
聊天与告示牌IMessageEventHandleMessageEventManager
自定义密码验证IPasswordValidationEventHandlePasswordValidationEventManager
生物受伤与治疗ICreatureHealthEventHandle对应健康事件管理器
方块内容变化IBlockChangeEventHandleBlockChangeEventManager
自定义命令AbstractProcessCmdDLL 扫描时自动注册

准确签名、返回值约定和命名空间见完整接口参考

bool 返回值

多数事件中的 false 表示阻止原行为。多个插件同时处理时,任何插件的拒绝都可能使最终结果失败,因此:

  • 默认允许时显式返回 true
  • 日志中记录阻止原因、玩家和位置;
  • 不用异常代替权限拒绝;
  • 确认插件卸载后不会留下永久锁定数据。

命令设计

命令类继承 AbstractProcessCmd。设计时至少考虑:

  • AuthLevel 权限等级;
  • DisplayType 是否在帮助中可见;
  • 参数缺失和非法输入;
  • 玩家上下文与控制台上下文;
  • 是否支持 GetSuggestions 自动补全;
  • 长耗时任务不能阻塞主循环。

注册与清理

事件通常在 Initialize() 注册。如果当前服务端支持卸载或热重载,应在对应阶段调用 RemoveObject(this)。配置读取放在 Load(),持久化写入放在 Save(),不要重复注册事件。

玩家共建文档 · 原版、插件版、联机版与插件联机版请注意区分