#java #plugins #minecraft
#java #Плагины #Minecraft
Вопрос:
Недавно у меня возникла проблема при написании плагина для моего сервера. Я столкнулся с ошибкой, которая никогда не менялась в каждой форме команды, это ошибка :
[21:23:32 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'g' in plugin TheNewCore v0.135.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[patched_1.16.5.jar:git-Paper-457]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.5.jar:git-Paper-457]
at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:807) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2021) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1832) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1785) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:23) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1133) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1126) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeAll(IAsyncTaskHandler.java:95) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1262) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:997) ~[patched_1.16.5.jar:git-Paper-457]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:174) ~[patched_1.16.5.jar:git-Paper-457]
at java.lang.Thread.run(Thread.java:832) [?:?]
Caused by: java.lang.IllegalArgumentException: Cannot create path without a section
at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[patched_1.16.5.jar:git-Paper-457]
at org.bukkit.configuration.MemorySection.createPath(MemorySection.java:922) ~[patched_1.16.5.jar:git-Paper-457]
at org.bukkit.configuration.MemorySection.createPath(MemorySection.java:905) ~[patched_1.16.5.jar:git-Paper-457]
at me.Walitam.TheNewCore.TheNewCore.onCommand(TheNewCore.java:55) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[patched_1.16.5.jar:git-Paper-457]
... 19 more
и я не знаю, как это исправить. Вот код команды :
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (label.equalsIgnoreCase("g")) {
if (sender instanceof Player) {
if (args.length == 0) {
// INSTANCIATION OF THE PLAYER
Player player = (Player) sender;
// SHOWING THE MENU TO THE PLAYER
player.sendMessage(ChatColor.DARK_GREEN "" ChatColor.BOLD "" ChatColor.ITALIC "L'aide des Guildes de TheNewCore, bienvenue !");
player.sendMessage(ChatColor.GRAY "" ChatColor.BOLD "------------------------------");
player.sendMessage(ChatColor.GREEN "/g " ChatColor.WHITE ":" ChatColor.GREEN " montre ce menu d'aide.");
player.sendMessage(ChatColor.GRAY "" ChatColor.BOLD "------------------------------");
player.sendMessage(ChatColor.GREEN "/g create <gname> <gpword> " ChatColor.WHITE ":" ChatColor.GREEN " crée une guilde avec le nom et le mot de passe entrés.");
player.sendMessage(ChatColor.GRAY "" ChatColor.BOLD "------------------------------");
player.sendMessage(ChatColor.GREEN "/g delete <gname> <gpword> " ChatColor.WHITE ":" ChatColor.GREEN " supprime une guilde avec le nom et le mot de passe entrés.");
player.sendMessage(ChatColor.GRAY "" ChatColor.BOLD "------------------------------");
player.sendMessage(ChatColor.GREEN "/g add <pname> " ChatColor.WHITE ":" ChatColor.GREEN " ajoute un joueur avec le nom entré dans votre guilde.");
player.sendMessage(ChatColor.GRAY "" ChatColor.BOLD "------------------------------");
player.sendMessage(ChatColor.GREEN "/g remove <pname> " ChatColor.WHITE ":" ChatColor.GREEN " retire un joueur du nom entré de votre guilde.");
}
if (args[0].equalsIgnoreCase("create")) {
Player player = (Player) sender;
if (args.length <= 2) {
player.sendMessage(ChatColor.RED "Il manque des arguments :/");
} else {
String creatorplayername = player.getName();
String guildname = args[1];
String guildpassword = args[2];
getConfig().createPath(getConfig().getConfigurationSection("guilds"), guildname);
ConfigurationSection guildid = getConfig().getConfigurationSection("guilds." guildname);
getConfig().createPath(guildid, "creator");
getConfig().set("creator", creatorplayername);
getConfig().createPath(guildid, "password");
ConfigurationSection passwordsection = getConfig().getConfigurationSection("guilds." guildpassword);
getConfig().set("guilds.password", guildpassword);
}
if (args[0].equalsIgnoreCase("delete")) {
sender.sendMessage(ChatColor.RED "You just executed the " ChatColor.WHITE "/g delete" ChatColor.RED " command !");
}
if (args[0].equalsIgnoreCase("add")) {
sender.sendMessage(ChatColor.RED "You just executed the " ChatColor.WHITE "/g add" ChatColor.RED " command !");
}
if (args[0].equalsIgnoreCase("remove")) {
sender.sendMessage(ChatColor.RED "You just executed the " ChatColor.WHITE "/g remove" ChatColor.RED " command !");
}
} else {
// IF YOU NO PLAYER
sender.sendMessage("[TheNewCore] Vous n'êtes pas un joueur, vous n'avez donc pas accès aux guildes ;)");
}
return true;
}
}
return true;
}
Ответ №1:
Вам не нужно использовать методы для создания путей или аналогичные. Если вы хотите сохранить данные в файле YML в следующем формате:
guilds:
my_guild_name:
creator: "Im_Fran"
password: "MyPassword123"
Используйте следующий код
getConfig().set("guilds.my_guild_name.creator", "Im_Fran"); // This will store the creator
getConfig().set("guilds.my_guild_name.password", "MyPassword123"); // This will store the password
Я предлагаю вам проверить ссылку на API конфигурации Bukkit