ICommandRegistrar 与三种实现
基本信息
| 类型 | 说明 |
|---|---|
| 接口 | mypermissions.command.core.registrar.ICommandRegistrar |
| 方法 | void registerCommand(ICommand cmd, String permNode, boolean defaultPerm) |
| 选择点 | CommandManager.makeRegistrar()(构造期一次性决定) |
三种实现对比
| 实现 | 何时被选 | 行为差异 |
|---|---|---|
VanillaCommandRegistrar |
兜底(无 Bukkit、无 ForgeEssentials) | 直接 CommandHandler.registerCommand(cmd) |
ForgeEssentialsCommandRegistrar |
Loader.isModLoaded("ForgeEssentials") |
父类 vanilla 行为;当前源码里 PermissionManager.registerPermission(...) 已注释,只把命令丢给 FE 自带的 CommandHandler |
BukkitCommandRegistrar |
ClassUtils.isBukkitLoaded()(优先于 FE) |
反射查找 CommandHandler.registerCommand(ICommand, String);找不到则 ERROR 降级为 vanilla |
相关条目
- CommandManager - 三选一工厂
- CommandModel - 被注册的对象