Solved Java throwing me an error I don't even know how to read.

Discussion in 'Plugin Development' started by YouDontKnowO, Jul 25, 2017.

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

    YouDontKnowO

    I'm pretty new to the Bukkit community, it feels like taking a blind guess whenever I add something to my code. Just from that information alone, it's no surprise that Java is throwing me an error. Just to clarify, I can read most Java errors just fine, but my plugin appears to be setting off a chain reaction. An error in my plugin leads to an error in the Bukkit's code leads to an error in the Minecraft server code.

    I don't even know what to say other than I feel like the problem stems from the commands I have.

    EDIT: I fixed this almost immediately after posting. Here's the solution for anyone who has the same problem.

    Before, my plugin.yml looked like this:
    Code:
    name: GradeAlert
    version: 1.0
    main: me.ClickbaitDurv.GradeAlert.MainClass
    description: An alert plugin.
    
    commands:
        gradehelp:
            usage: /gradehelp
    The command 'gradehelp' in the plugin.yml was supposed to be the command 'ghelp' in my actual code. I also added the other command that was missing from the plugin.yml file. The lesson here is to make sure your plugin.yml is up-to-date!

    Code:
    name: GradeAlert
    version: 1.0
    main: me.ClickbaitDurv.GradeAlert.MainClass
    description: An alert plugin.
    
    commands:
        ghelp:
            usage: /<command>
        galert:
            usage: /<command> <message>
    Here's the error I get
    Code:
    [19:54:29 ERROR]: Error occurred while enabling GradeAlert v1.0 (Is it up to date?)
    java.lang.NullPointerException: null
            at me.ClickbaitDurv.GradeAlert.MainClass.onEnable(MainClass.java:11) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:402) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:378) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:327) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at net.minecraft.server.v1_12_R1.MinecraftServer.t(MinecraftServer.java:421) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at net.minecraft.server.v1_12_R1.MinecraftServer.l(MinecraftServer.java:382) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at net.minecraft.server.v1_12_R1.MinecraftServer.a(MinecraftServer.java:337) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at net.minecraft.server.v1_12_R1.DedicatedServer.init(DedicatedServer.java:272) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:544) [spigot-1.12.jar:git-Spigot-99c2a37-d35483b]
            at java.lang.Thread.run(Unknown Source) [?:1.8.0_141]
    Main Class (titled MainClass.java)
    Code:
    package me.ClickbaitDurv.GradeAlert.commands;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    public class PrefixCommand implements CommandExecutor {
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player player = (Player) sender;
            if (sender instanceof Player ) {
                if (cmd.getName().equalsIgnoreCase("ghelp")) {
                    player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lGradeAlert Help:\n&7&oNo commands yet!"));
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("galert")) {
                    String broadcastMsg = "";
    
                    for(int i = 0; i < args.length; i++){
                        String arg = args[i] + " ";
                        broadcastMsg = broadcastMsg + arg;
                    }
                  
                    Bukkit.broadcastMessage((ChatColor.translateAlternateColorCodes('&', broadcastMsg)));
                    return true;
                }
            } else {
                sender.sendMessage("Whoops! GradeAlert commands can only be run by a non-console user with appropriate permissions!");
            }
            return true;
        }
    
    }
    
    PrefixCommand.java
    Code:
    package me.ClickbaitDurv.GradeAlert.commands;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    
    public class PrefixCommand implements CommandExecutor {
    
        @Override
        public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
            Player player = (Player) sender;
            if (sender instanceof Player ) {
                if (cmd.getName().equalsIgnoreCase("ghelp")) {
                    player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6&lGradeAlert Help:\n&7&oNo commands yet!"));
                    return true;
                }
                if (cmd.getName().equalsIgnoreCase("galert")) {
                    String broadcastMsg = "";
    
                    for(int i = 0; i < args.length; i++){
                        String arg = args[i] + " ";
                        broadcastMsg = broadcastMsg + arg;
                    }
                  
                    Bukkit.broadcastMessage((ChatColor.translateAlternateColorCodes('&', broadcastMsg)));
                    return true;
                }
            } else {
                sender.sendMessage("Whoops! GradeAlert commands can only be run by a non-console user with appropriate permissions!");
            }
            return true;
        }
    
    }
    
    plugin.yml
    Code:
    name: GradeAlert
    version: 1.0
    main: me.ClickbaitDurv.GradeAlert.MainClass
    description: An alert plugin.
    
    commands:
        gradehelp:
            usage: /gradehelp
     
    Last edited: Jul 25, 2017
  2. Offline

    Machine Maker

    @YouDontKnowO
    Please mark this thread as solved if your issue is resolved.
     
    YouDontKnowO likes this.
Thread Status:
Not open for further replies.

Share This Page