Произошла внутренняя ошибка сервера при попытке выполнить эту команду. моя команда
У меня проблема с моей командой.
Когда я запускаю его в игре, он говорит, что при попытке выполнить эту команду произошла внутренняя ошибка сервера.
Также в консоли есть очень длинный текст, который я не буду пытаться печатать, потому что я испорчу очень плохо.
Кроме того, я впервые использую аргументы, поэтому, возможно, я делаю их неправильно, но это выглядит так же, как учебник, который я просматривал.
package me.mcmatt.squidcp;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;
import com.sk89q.worldedit.bukkit.WorldEditPlugin;
public class Main extends JavaPlugin {
public void onEnable() {
Bukkit.getServer().getLogger().info("Squid CP booted up! Version: " + Bukkit.getPluginManager().getPlugin("SquidCarePackages").getDescription().getVersion());
}
public void onDisable() {
Bukkit.getServer().getLogger().info("Squid CP shut down!");
}
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
if (commandLabel.equalsIgnoreCase("squid")) {
if (!(sender instanceof Player)) {
sender.sendMessage(ChatColor.RED + "You must be a player to run this command");
} else {
Player player = (Player) sender;
if (!(args[1].toString().equalsIgnoreCase("set"))) {
player.sendMessage("Gratz");
}
}
}
return true;
}
public WorldEditPlugin getWorldEdit() {
Plugin p = Bukkit.getServer().getPluginManager().getPlugin("WorldEdit");
if (p instanceof WorldEditPlugin) return (WorldEditPlugin) p;
else return null;
}
}
1 ответ
Внутренняя ошибка, скорее всего, происходит из-за ArrayIndexOutOfBoundsException
бросается при выполнении squid
Команда без предоставления достаточных аргументов. Ваш код предполагает, что args
массив имеет по крайней мере длину 2 и, следовательно, второй аргумент, args[1]
, существует. args[0]
это первый String
в массиве. При вводе просто "/squid" или даже "/squid set" и без указания каких-либо дополнительных аргументов, возникает исключение, так как args
массив пуст или не содержит второй элемент. Проверьте, args
массив имеет правильную длину, добавив проверку, такую как if (args.length == 2) {}
или даже if (args.length > 1) {}
,
Я предполагаю, что вы хотели получить доступ только к первому String
в args
массив. изменения args[1]
в args[0]
позволит команде работать так, как вы, вероятно, хотели. Тем не менее, было бы хорошо по-прежнему убедиться, что массив имеет правильную длину, чтобы избежать возникновения этой ошибки, когда игрок неправильно использует команду, предоставляя слишком мало аргументов или вообще не используя их.