我正在尝试制作一个插件,它必须阻止由config设置的指定命令。我做了这个,但它不会阻止任何命令。
代码:
@EventHandler(priority = EventPriority.HIGHEST)
public void onPreprocess(PlayerCommandPreprocessEvent event)
{
Player player = event.getPlayer();
String command = event.getMessage();
List<String> bCmds = this.plugin.cfg.getStringList("blocked-commands");
for (String bCmd : bCmds)
{
if(command.equalsIgnoreCase(bCmd))
{
event.setCancelled(true);
}
}
}
配置:
blocked-commands:
- /pl
- /op
- /sp
- /gravityblock
PS:我尝试使用:
String command = event.getMessage().subString(1);
感谢您的帮助…:)
注册事件?实现的监听器?
此外,您的代码无法使用命令中的附加参数。如果它包含空格,请将其拆分为“”并获取第一个元素以仅获取命令
如果包含(" ")) cmd=cmd. split("")[0];
正如Bukkit的wiiki所述,优先级按以下顺序调用:
也许您可以尝试使用最低优先级,以便在处理命令之前取消事件。
我也相信该命令可能有参数,因此它可能不等于提供的字符串,您也应该尝试
String command = event.getMessage();
if (command.toLowerCase().startsWith("/command") ) {
//cancel
}