我的插件yml中有这个命令:
rankup:
description: Allows to rankup through the prison ranks
aliases: [ru]
但是,有一个用于禁用命令的配置文件,如果禁用此命令:
rankupstrue: false
如果在配置文件中将此布尔值设置为true,我需要在插件yml中保留它。但是,如果它们禁用了这个,我会在发生任何事情之前返回onCommand boolean,如下所示:
public boolean onCommand(CommandSender s, Command cmd, String label, String[] args){
if(main.getConfig().getBoolean("rankupstrue"))return true;
// code
}
然后我在onEnable
中启用它getCommand("rankup").setExecutor(new RankupCore(this, qm));
但是,如果禁用此命令的布尔值设置为false并且备用插件具有相同的命令,则替代插件的命令将不起作用。为了解决这个问题,我已经尝试停止在onEnable中启用它:
if(main.getConfig().getBoolean("rankupstrue"))
{
// getCommand
}
然而,这给我带来了同样的结果。然后我默认回到插件yml。有没有办法删除:
rankup:
description: Allows to rankup through the prison ranks
aliases: [ru]
如果rankupstrue
为false,则从插件yml ? 或者有没有办法将其添加到插件yml中,如果该布尔值为true? 或者有没有办法以插件yml之外的任何方式阻止此命令?
答案 0 :(得分:0)
要清楚地回答这个问题,请使用指定的事件PlayerCommandPreprocessEvent
,并确保使用e.getMessage()
方法有效。我要做的是创建一个空间“解析器”来创建一个像感觉一样的参数。
public void onCommandEvent(PlayerCommandPreprocessEvent e) {
Player player = e.getPlayer();
String message = e.getMessage();
String[] args = message.split(" ");
if(args[0] == "command") {
print(args[1]); // Prints the first argument
}
}
现在您需要做的另一件事是使用args.length()检查参数长度,该长度将返回整数。我没有添加这个,因为这只是一个例子。
答案 1 :(得分:-1)
要解决此问题,您可以使用PlayerCommandPreprocessEvent
并检查该命令是否与执行此问题的命令相同。确认在检查确认后取消活动。
// in the event
if(e.getMessage().equalsIgnoreCase("command"))e.setCancelled(true);
答案 2 :(得分:-1)
永远不要将命令放在YAML中。
没有真正的方法从plugin.yml中删除命令。你更有可能打破很多事情。收听PlayerCommandPreprocessEvent
并且如果命令具有您想要的名称加上真正的rankupstrue值,则取消调用命令并使用事件的值构建您自己的事件。使用事件的getPlayer()
和getMessage()
方法执行此操作。