如何禁用原版指令 或者其他插件的指令,我现在写的插件和其他插件有冲突
本帖最后由 浅念哥 于 2019-9-24 13:12 编辑
一般开发插件时尽量避免这样的冲突。
用户也可以通过以下方式解决指令冲突:
使用/bukkit:xxx执行原版的xxx指令
使用/插件名:xxx执行这个插件的xxx指令
如果一定要用这个指令可以使用指令预处理事件并修改优先级:
PlayerCommandPreprocessEvent:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerCommandPreprocessEvent.html
@EventHandler(priority = EventPriority.HIGHEST)
调用event.setCancelled(true);中断指令
一般开发插件时尽量避免这样的冲突。
用户也可以通过以下方式解决指令冲突:
使用/bukkit:xxx执行原版的xxx指令
使用/插件名:xxx执行这个插件的xxx指令
如果一定要用这个指令可以使用指令预处理事件并修改优先级:
PlayerCommandPreprocessEvent:https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerCommandPreprocessEvent.html
@EventHandler(priority = EventPriority.HIGHEST)
调用event.setCancelled(true);中断指令
楼上说的很好了 如果真要“禁用”的原版命令话 应该做不到 但是你可以禁用的权限 如果需要禁用特定插件的特定命令 也可以在plugin.yml中将该命令注释掉(前提是插件使用此方法注册命令) 或者在执行时指定执行是哪个插件提供的命令 方法为 /插件名:命令名
666666666666666666666666
你可以选择修改你插件的命令,或者添加命令别名,毕竟是你和别人冲突,不可能让别人改,那就自己改好了,
另外,如果非要移除某个命令,好像也不是不可能的。Bukkit 有一个 commandMap ,具体哪个类里忘了,用反射获取它,然后删掉你想删掉的命令的名字,大概就可以了,我没测试过,你可以尝试一下。
另外,如果非要移除某个命令,好像也不是不可能的。Bukkit 有一个 commandMap ,具体哪个类里忘了,用反射获取它,然后删掉你想删掉的命令的名字,大概就可以了,我没测试过,你可以尝试一下。
我有个问题,怎么禁用me这个指令?
可以移除对应权限
具体:org/bukkit/command/default
具体:org/bukkit/command/default