gpt4 book ai didi

java - Bukkit 插件踢原因仅使用第一个单词

转载 作者:行者123 更新时间:2023-12-01 19:45:13 26 4
gpt4 key购买 nike

所以我正在为我的服务器创建一个踢/禁止命令,格式为/踢名称原因。我一切正常,但 原因 只能是 1 个单词,除此之外的任何内容,例如 /kick BattleDash hello world 会说 BattleDash 因 被踢你好

这是我的代码:

    if (cmd.getName().equalsIgnoreCase("kick") && sender instanceof Player) {

Player player = (Player) sender;

int length = args.length;

if (length >= 2) {

boolean playerFound = false;

for (Player playerToKick : Bukkit.getServer().getOnlinePlayers()) {
if(playerToKick.getName().equalsIgnoreCase(args[0])) {
playerToKick.kickPlayer(ChatColor.RED + "Kicked by Administrator " + player.getName() + "\nReason: " + args[1]);
player.sendMessage(ChatColor.RED + "[BATTLEDASHLOGS]: Kicked player " + playerToKick.getName() + "succesfully!");
break;
}
}

if (playerFound == false) {
player.sendMessage(ChatColor.RED + "[BATTLEDASHLOGS]: " + args[0] + " was not found!");
}

} else player.sendMessage(ChatColor.RED + "[BATTLEDASHLOGS]: Incorrect arguments!" + ChatColor.RED + " /kick <PlayerName> <reason>");

return true;

}

(此外,如果您不包含原因,则会在聊天中给出内部错误并在控制台中发生异常)

最佳答案

您的代码由于其编程方式而这样做。

如果我们看一下接受参数的行:

playerToKick.kickPlayer(ChatColor.RED + "Kicked by Administrator " + player.getName() + "\nReason: " + args[1]);

我们可以看到您仅使用args[1]。如果我们将消息视为数组,问题就很清楚了:

在位置 0(记住数组从 0 开始):BattleDash

1:你好

2:世界

当您在消息中仅使用 args[1] 时,将仅使用 hello!相反,我们需要做的是使用所有参数。一种方法是这样的:

// First, transform your array into a list, so it's easier to understand
List<String> arguments = new ArrayList<>(args);

String playerName = arguments.get(0); // Get the player name
arguments.remove(0); // Remove the player name from our arguments list, we don't want it in the message

String message = String.join(" ", arguments); // Combine all the other arguments into a message

关于java - Bukkit 插件踢原因仅使用第一个单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53622090/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com