(spigot) 运行“/g create”命令时出现空错误

时间:2021-02-07 20:48:42

标签: java plugins 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 个答案:

答案 0 :(得分:0)

您不需要使用这些方法来创建路径或类似方法。如果要将数据保存在 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

我建议您检查 Bukkit Configuration API Reference