Java 启用/禁用命令

Java 启用/禁用命令,java,boolean,yaml,bukkit,Java,Boolean,Yaml,Bukkit,我的插件yml中有以下命令: rankup: 描述:允许在监狱队伍中穿行 别名:[ru] 但是,有一个用于禁用命令的配置文件,如果禁用此命令: rankupstrue:false 我需要将其保存在插件yml中,以防在配置文件中将此布尔值设置为true。但是,如果他们禁用此选项,我会在发生任何事情之前返回onCommand布尔值,如下所示: public boolean onCommand(CommandSender s, Command cmd, String label, String[]

我的插件yml中有以下命令:

rankup:
描述:允许在监狱队伍中穿行
别名:[ru]
但是,有一个用于禁用命令的配置文件,如果禁用此命令:

rankupstrue:false
我需要将其保存在插件yml中,以防在配置文件中将此布尔值设置为true。但是,如果他们禁用此选项,我会在发生任何事情之前返回onCommand布尔值,如下所示:

public boolean onCommand(CommandSender s, Command cmd, String label, String[] args){
    if(main.getConfig().getBoolean("rankupstrue"))return true;
    // code
}
然后,我在这里的合一中启用它

getCommand("rankup").setExecutor(new RankupCore(this, qm));
但是,如果禁用此命令的布尔值设置为false,并且替代插件具有相同的命令,则替代插件的命令将不起作用。要解决此问题,我已尝试停止在OneTable中启用它:

if(main.getConfig().getBoolean("rankupstrue"))
{
    // getCommand
}
然而,这给我带来了同样的结果。然后我默认返回到插件yml。有没有办法删除:

rankup:
描述:允许在监狱队伍中穿行
别名:[ru]
如果
rankupstrue
为false,则从插件yml中选择? 或者,如果布尔值为真,有没有办法将其添加到插件yml中?
或者,除了插件yml之外,是否还有其他方法可以阻止此命令?

要解决此问题,您可以使用
playerCommandPrepreprocessEvent
并检查该命令是否与处理此问题的命令相同。确保在检查确认后取消活动

// in the event
if(e.getMessage().equalsIgnoreCase("command"))e.setCancelled(true);

永远不要把命令放在YAML中


没有真正的方法从plugin.yml中删除命令。相反,你更有可能破坏很多东西。收听
playerCommandPrepreprocessEvent
,如果该命令具有您想要的名称加上真实的rankupstrue值,请取消该命令的调用,并使用该事件的值构造您自己的事件。使用事件的
getPlayer()
getMessage()
方法执行此操作。

要清楚回答此问题,请使用指定的事件
playerCommandPreprepreceEvent
,并使用
e.getMessage()
方法确保该事件有效。我要做的是创建一个空间“解析器”来创建一个类似于feel的参数

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()检查参数长度,它将返回长度的整数。我没有添加这一点,因为这只是一个示例。

onCommand()的
onCommand()方法只针对您的插件执行。虽然不同的插件不应具有相同的命令,但您的行为很奇怪,可能取决于外部因素。一个可能的选项是使用“Bukkit.getPluginManager()”中“SimplePluginManager”类的反射来访问“commandMap”commandMap字段。我自己也尝试过很多方法,我能够在没有插件YAML的情况下注册命令,但不幸的是没有注销它们。祝你好运