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

相关条目