Problem with Gamemode Command

Discussion in 'Plugin Development' started by Juflos, Oct 17, 2019.

Thread Status:
Not open for further replies.
  1. Offline

    Juflos

    Hey,
    I am currently in the process of programming a Gamemode Command, so far as I am finished and in my opinion everything is correct, but I get the following error in the console as soon as I execute the command:

    Code:
    [12:50:21] [Server thread/INFO]: Juflos issued server command: /gm 1
    [12:50:21] [Server thread/ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing command 'gm' in plugin JuflEssentials v1.0.0
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:47) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:149) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:710) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1641) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1481) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:1) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$0(PlayerConnectionUtils.java:19) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(SourceFile:144) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(SourceFile:118) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.MinecraftServer.aX(MinecraftServer.java:909) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:902) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeAll(SourceFile:103) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:885) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:819) [spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
    Caused by: java.lang.NullPointerException
            at de.juflos.essentials.commands.Gamemode.onCommand(Gamemode.java:24) ~[?:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:45) ~[spigot-1.14.4.jar:git-Spigot-94af569-d6b3edd]
            ... 17 more
    The thing is, my game mode is changed, but I still get the error message in the console, as well as ingame....

    Has anyone an Ahunng why that is and how to fix it?
    Here is my Gamamode class:

    Code:
    public class Gamemode implements CommandExecutor{   
        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
            if(sender instanceof Player) {
                Player p = (Player) sender;
                if(p.hasPermission("essentials.gamemode")) {
                    if(args.length == 1) {
                        if(args[0].equalsIgnoreCase("0")) {
                            p.setGameMode(GameMode.SURVIVAL);
                            p.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde auf §6Überleben §7gesetzt.");
                        } else if(args[0].equalsIgnoreCase("1")) {
                            p.setGameMode(GameMode.CREATIVE);
                            p.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde auf §6Kreativ §7gesetzt.");
                        } else if(args[0].equalsIgnoreCase("2")) {
                            p.setGameMode(GameMode.ADVENTURE);
                            p.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde auf §6Abenteuer §7gesetzt.");
                        } else if(args[0].equalsIgnoreCase("1")) {
                            p.setGameMode(GameMode.SPECTATOR);
                            p.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde auf §6Zuschauer §7gesetzt.");
                        } else
                            p.sendMessage(Main.getInstance().prefix + "Bitte verwende: §6/gm <0-3>");
                       
                    } else if(args.length == 2) {
                        Player t = Bukkit.getPlayer(args[0]);
                        if(!(t == null)) {
                            if(args[1].equalsIgnoreCase("0")) {
                                t.setGameMode(GameMode.SURVIVAL);
                                t.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde von §6" + p.getName() + " §7auf §6Überleben §7gesetzt.");
                                p.sendMessage(Main.getInstance().prefix + "§7Du hast den Spielmodus von §6" + t.getName() + " §7auf §6Überleben §7gesetzt.");
                            } else if(args[1].equalsIgnoreCase("1")) {
                                t.setGameMode(GameMode.CREATIVE);
                                t.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde von §6" + p.getName() + " §7auf §6Kreativ §7gesetzt.");
                                p.sendMessage(Main.getInstance().prefix + "§7Du hast den Spielmodus von §6" + t.getName() + " §7auf §6Kreativ §7gesetzt.");
                            } else if(args[1].equalsIgnoreCase("2")) {
                                t.setGameMode(GameMode.ADVENTURE);
                                t.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde von §6" + p.getName() + " §7auf §6Abenteuer §7gesetzt.");
                                p.sendMessage(Main.getInstance().prefix + "§7Du hast den Spielmodus von §6" + t.getName() + " §7auf §6Abenteuer §7gesetzt.");
                            } else if(args[1].equalsIgnoreCase("1")) {
                                t.setGameMode(GameMode.SPECTATOR);
                                t.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde von §6" + p.getName() + " §7auf §6Zuschauer §7gesetzt.");
                                p.sendMessage(Main.getInstance().prefix + "§7Du hast den Spielmodus von §6" + t.getName() + " §7auf §6Zuschauer §7gesetzt.");
                            } else
                                p.sendMessage(Main.getInstance().prefix + "Bitte verwende §6/gm <Spieler> <0-3>");
                        } else
                            p.sendMessage(Main.getInstance().messageManager.getPlayerNullMessage());
                    } else
                        p.sendMessage(Main.getInstance().prefix + "Bitte verwende §6/gm <0-3> §7oder §6/gm <Spieler> <0-3>");
                } else
                    p.sendMessage(Main.getInstance().messageManager.getNoPermMessage());
            } else
                sender.sendMessage(Main.getInstance().messageManager.getNoConsoleMessage());
            return false;
        }
    
    }
    I hope someone can help me.
    Best regards
    Juflos
     
  2. Offline

    timtower Administrator Administrator Moderator

  3. Offline

    Juflos

    The Target player

    The Target player

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Oct 17, 2019
  4. Offline

    timtower Administrator Administrator Moderator

    @Juflos What code on the line?
     
  5. Offline

    Juflos

    @timtower Player t = Bukkit.getPlayer(args[0]);
     
  6. Offline

    timtower Administrator Administrator Moderator

    Please post your full class using https://pastebin.com, so with includes and package names.
    Because line 24 is not the line 24 in that code block.
     
  7. Offline

    Juflos

  8. Offline

    timtower Administrator Administrator Moderator

    @Juflos Now it is this line:
    Code:
    p.sendMessage(Main.getInstance().prefix + "§7Dein Spielmodus wurde auf §6Kreativ §7gesetzt.");
    Your getInstance() is returing null.
     
  9. Offline

    Juflos

    @timtower
    But why ?
    Look, here is my Main class and in another plugin of mine it worked just as well ...
    Respectively, I can not tell a difference also, as I did in the other plugin

    Main Class:
    https://pastebin.com/FRisdRAS
     
    Last edited: Oct 17, 2019
  10. Offline

    timtower Administrator Administrator Moderator

  11. Offline

    Juflos

    @timtower
    I set "private static Main main;" and in an another plugin of me it works
     
  12. Offline

    timtower Administrator Administrator Moderator

    @Juflos That is declaring, you never give it a value.
     
  13. Offline

    robertlit

    @Juflos You should do ....main = this;
     
  14. Offline

    Strahan

    lol well, your opinion means squat to the JVM :)

    Also you should read up on dependency injection instead of just throwing static at it, and the ChatColor enum exists for a reason - you should use it.
     
    robertlit likes this.
Thread Status:
Not open for further replies.

Share This Page