Enabling/Disabling 命令
Enabling/Disabling Commands
我的插件 yml 中有这个命令:
rankup:
description: Allows to rankup through the prison ranks
aliases: [ru]
但是有一个用于禁用命令的配置文件,如果您禁用此命令:
rankupstrue: false
我需要将其保留在插件 yml 中,以防在配置文件中将此布尔值设置为 true。但是,如果他们在发生任何事情之前禁用 onCommand 布尔值 return,就像这样:
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
为假,来自插件 yml?
或者如果那个布尔值是真的,有没有办法将它添加到插件 yml 中?
或者除了插件 yml 之外,还有什么方法可以阻止这个命令吗?
要解决此问题,您可以使用 PlayerCommandPreprocessEvent
并检查该命令是否等于执行此问题的命令。请务必在确认后取消活动。
// in the event
if(e.getMessage().equalsIgnoreCase("command"))e.setCancelled(true);
永远不要将命令放在 YAML 中。
没有从 plugin.yml 中删除命令的真正方法。相反,您更有可能破坏很多东西。听 PlayerCommandPreprocessEvent
并且如果命令具有您想要的名称加上真实的 rankupstrue 值,则取消命令的调用并使用事件的值,构建您自己的事件。使用事件的 getPlayer()
和 getMessage()
方法来执行此操作。
要清楚地回答这个问题,请使用指定的事件 PlayerCommandPreprocessEvent
并确保使用 e.getMessage()
方法有效。我要做的是创建一个 space "parser" 来创建一个像 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() 检查参数长度,这将 return 长度的整数。我没有添加这个,因为这只是一个例子。
我的插件 yml 中有这个命令:
rankup:
description: Allows to rankup through the prison ranks
aliases: [ru]
但是有一个用于禁用命令的配置文件,如果您禁用此命令:
rankupstrue: false
我需要将其保留在插件 yml 中,以防在配置文件中将此布尔值设置为 true。但是,如果他们在发生任何事情之前禁用 onCommand 布尔值 return,就像这样:
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
为假,来自插件 yml?
或者如果那个布尔值是真的,有没有办法将它添加到插件 yml 中?
或者除了插件 yml 之外,还有什么方法可以阻止这个命令吗?
要解决此问题,您可以使用 PlayerCommandPreprocessEvent
并检查该命令是否等于执行此问题的命令。请务必在确认后取消活动。
// in the event
if(e.getMessage().equalsIgnoreCase("command"))e.setCancelled(true);
永远不要将命令放在 YAML 中。
没有从 plugin.yml 中删除命令的真正方法。相反,您更有可能破坏很多东西。听 PlayerCommandPreprocessEvent
并且如果命令具有您想要的名称加上真实的 rankupstrue 值,则取消命令的调用并使用事件的值,构建您自己的事件。使用事件的 getPlayer()
和 getMessage()
方法来执行此操作。
要清楚地回答这个问题,请使用指定的事件 PlayerCommandPreprocessEvent
并确保使用 e.getMessage()
方法有效。我要做的是创建一个 space "parser" 来创建一个像 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() 检查参数长度,这将 return 长度的整数。我没有添加这个,因为这只是一个例子。