Null Exception Error Help

Discussion in 'Plugin Development' started by IcyRelic, Jul 21, 2013.

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

    IcyRelic

    Here is the error

    Code:
    22:30:58 [SEVERE] Error occurred while enabling LegendaryOreLogs v1.0 (Is it up
    to date?)
    java.lang.NullPointerException
            at me.icyrelic.com.API.LBApi.createAutoBan(LBApi.java:21)
            at me.icyrelic.com.LegendaryOreLogs.onEnable(LegendaryOreLogs.java:42)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:457)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:381)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.loadPlugin(CraftServer.jav
    a:282)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.enablePlugins(CraftServer.
    java:264)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.reload(CraftServer.java:60
    5)
            at org.bukkit.Bukkit.reload(Bukkit.java:275)
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    9)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServe
    r.java:523)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchServerCommand(Craf
    tServer.java:512)
            at net.minecraft.server.v1_6_R2.DedicatedServer.ar(DedicatedServer.java:
    262)
            at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:2
    27)
            at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:4
    86)
            at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java
    :419)
            at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:5
    82)
    LBApi.java:21
    Code:
    plugin.mysql.createBan(name, admin, type, unban, reason);
    Full createAutoBan Method
    Code:
        public static void createAutoBan(String name, String admin, String type, String unban, String reason){
            plugin.mysql.createBan(name, admin, type, unban, reason);
           
        } 
    LegendaryOreLogs.java:42
    Code:
    LBApi.createAutoBan("Player", "LegendaryOreLogs", "0", "", "AutoBan: Xray");
     
  2. Offline

    StrangeOne101

    It would probably help if we had all of your class to work with...

    And I don't know/have used the LBApi before. I have no idea what it does. If it has javadocs, it should tell you what you did wrong.
     
  3. Offline

    IcyRelic



    No it doesnt have java docs and you dont know what it is cuz i created it yesterday :) ill give you both classes

    LBApi
    Code:
    package me.icyrelic.com.API;
     
    import org.bukkit.ChatColor;
     
    import me.icyrelic.com.LegendaryBans;
     
     
     
    public class LBApi {
       
        static LegendaryBans plugin;
        public LBApi(LegendaryBans instance) {
     
            plugin = instance;
     
            }
       
       
        public static void createAutoBan(String name, String admin, String type, String unban, String reason){
            System.out.println("Start");
            plugin.mysql.createBan(name, admin, type, unban, reason);
            System.out.println("Done");
           
        }
       
        public static void sendBanMessage(String admin, String reason, Boolean tempban, String tempbantime, String player){
           
            if(tempban){
                plugin.getServer().broadcastMessage(ChatColor.YELLOW+player.toLowerCase()+ChatColor.GOLD+" was tempbanned by "+ChatColor.YELLOW+admin+ChatColor.GOLD+". Reason: "+ChatColor.YELLOW+reason);
                plugin.getServer().broadcastMessage(ChatColor.YELLOW + player + ChatColor.GOLD + " is temporarily banned for " +ChatColor.YELLOW+  tempbantime);
            }else{
                plugin.getServer().broadcastMessage(ChatColor.YELLOW+player.toLowerCase()+ChatColor.GOLD+" was banned by "+ChatColor.YELLOW+admin+ChatColor.GOLD+". Reason: "+ChatColor.YELLOW+reason);
            }
           
        }
       
     
    }
    

    LegendaryOreLogs
    Code:
    package me.icyrelic.com;
     
    import java.util.HashMap;
     
    import me.icyrelic.com.API.LBApi;
    import me.icyrelic.com.Commands.orelogs;
    import me.icyrelic.com.Listeners.blockbreak;
     
    import org.bukkit.ChatColor;
    import org.bukkit.block.Block;
    import org.bukkit.entity.Player;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class LegendaryOreLogs extends JavaPlugin{
       
        public String prefix = ("[" + ChatColor.GREEN + "LegendaryOreLogs" + ChatColor.WHITE + "]");
        public HashMap<String, Long> diamonds = new HashMap<String, Long>();
        public HashMap<String, Long> gold = new HashMap<String, Long>();
        public HashMap<String, Long> iron = new HashMap<String, Long>();
        public HashMap<String, Long> coal = new HashMap<String, Long>();
        public HashMap<String, Long> redstone = new HashMap<String, Long>();
        public HashMap<String, Long> lapis = new HashMap<String, Long>();
        public HashMap<String, Long> emerald = new HashMap<String, Long>();
        public HashMap<String, Long> diamondsv = new HashMap<String, Long>();
        public HashMap<String, Long> goldv = new HashMap<String, Long>();
        public HashMap<String, Long> ironv = new HashMap<String, Long>();
        public HashMap<String, Long> coalv = new HashMap<String, Long>();
        public HashMap<String, Long> redstonev = new HashMap<String, Long>();
        public HashMap<String, Long> lapisv = new HashMap<String, Long>();
        public HashMap<String, Long> emeraldv = new HashMap<String, Long>();
        public HashMap<String, String> players = new HashMap<String, String>();
       
        public HashMap<Block, Long> blocksntime = new HashMap<Block, Long>();
        public HashMap<String, Block> blocksnplayer = new HashMap<String, Block>();
        public HashMap<String, Long> blockids = new HashMap<String, Long>();
       
       
        @Override
        public void onEnable(){
           
            //Check for xray
            LBApi.createAutoBan("Player", "LegendaryOreLogs", "0", "", "AutoBan: Xray");
           
            LBApi.sendBanMessage("LegendaryOreLogs", "AutoBan: Xray", false, "", "Player");
           
           
            getServer().getPluginManager().registerEvents(new blockbreak(this), this);
            getCommand("orelogs").setExecutor(new orelogs(this));
            sendMsg();
            resetLists();
        }
       
       
       
       
        public void resetLists(){
            getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                public void run() {
                   
                   
                   
                   
                    //Reset lists
                   
                    diamonds.clear();
                    gold.clear();
                    iron.clear();
                    coal.clear();
                    redstone.clear();
                    lapis.clear();
                    emerald.clear();
                    diamondsv.clear();
                    goldv.clear();
                    ironv.clear();
                    coalv.clear();
                    redstonev.clear();
                    lapisv.clear();
                    emeraldv.clear();
                    players.clear();
                   
                }
            }, 0L, 1200*60);
                       
                        //30 mins 36000L
                        //1 min 1200
        }   
       
        public void sendMsg(){
            getServer().getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {
                public void run() {
                   
                    for(Player p : getServer().getOnlinePlayers()){
                        if(p.hasPermission("LegendaryOreLogs.Logs")){
                            p.sendMessage(prefix + ChatColor.GRAY + " Logs are being reset in 5 minutes! View Them With /orelogs");
                        }
                    }
                   
                }
            }, 0L, 1200*55);
                       
                        //30 mins 36000L
                        //1 min 1200
        }
    }
    
     
  4. Offline

    Samthelord1

    Your if else in your API looks a bit dodgy, why not 2 if's like if (tempban) and if (ban)

    And I see a onEnable but no onDisable

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 3, 2016
  5. Offline

    IcyRelic

    you dont need one

    Any suggestions?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 3, 2016
  6. Offline

    Miner_Fil

    You are getting a Null Exception Error because tempban has no Value so by Default, it has set it to null.
    If i was you, I would put boolean tempban on a new line and then give it a value of true or false.
     
  7. Offline

    IcyRelic



    But it should still work the way it is because in the LegendaryBans tempban command i have

    plugin.mysql.createBan(player, sender.getName(), "1", ""+z, reason);

    and in the ban command i have

    plugin.mysql.createBan(player, sender.getName(), "0", "", reason); //This one works 100% fine

    its null there too and it should work fine
     
  8. Offline

    mmiillkkaa

    You are calling the methods that use "plugin" statically, so "plugin" is not initialized.
    Instead of using them that way, initialize a new instance of LBApi in your onEnable.
     
    1Rogue likes this.
  9. Offline

    1Rogue

    You are getting a NullPointerException because plugin.mysql.etc doesn't point to anything...

    By that, I mean I don't see a single public variable in your main class named "mysql". Also, plugin looks like it may not mean anything either, since you are calling a static method in a class, which then leads back to a main class that you have not passed to it either.

    You would want to do something like this, and get rid of the static in the methods within LBApi.

    Code:java
    1.  
    2. private LBApi api;
    3.  
    4. @Override
    5. public void onEnable() {
    6.  
    7. api = new LBApi(this);
    8.  
    9. api.createAutoBan("Player", "LegendaryOreLogs", "0", "", "AutoBan: Xray");
    10. api.sendBanMessage("LegendaryOreLogs", "AutoBan: Xray", false, "", "Player");
    11.  
    12.  
    13. getServer().getPluginManager().registerEvents(new blockbreak(this), this);
    14. getCommand("orelogs").setExecutor(new orelogs(this));
    15. sendMsg();
    16. resetLists();
    17. }
    18.  
    19. public LBApi getAPI() {
    20. return api;
    21. }
    22.  
     
  10. Offline

    IcyRelic

    [​IMG]

    [​IMG]

    any new suggestions

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 3, 2016
  11. Offline

    1Rogue

    What is your main class for the plugin, LegendaryBans, or LegendaryOreBlocks? You don't need two classes that extend JavaPlugin
     
  12. Offline

    IcyRelic

    these r 2 different plugins trying to work together and yes there is 2 working plugins
    the only thing that doesnt work is the api
     
  13. Offline

    IcyRelic

    Still need help

    bump

    New Error

    Code:
    13:14:08 [SEVERE] Could not load 'plugins\LegendaryOreLogs.jar' in folder 'plugi
    ns'
    org.bukkit.plugin.InvalidPluginException: java.lang.NoClassDefFoundError: me/icy
    relic/com/API/LBApi
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:182)
            at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.
    java:305)
            at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager
    .java:230)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.loadPlugins(CraftServer.ja
    va:239)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.reload(CraftServer.java:60
    3)
            at org.bukkit.Bukkit.reload(Bukkit.java:275)
            at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:
    23)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
    9)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchCommand(CraftServe
    r.java:523)
            at org.bukkit.craftbukkit.v1_6_R2.CraftServer.dispatchServerCommand(Craf
    tServer.java:512)
            at net.minecraft.server.v1_6_R2.DedicatedServer.ar(DedicatedServer.java:
    262)
            at net.minecraft.server.v1_6_R2.DedicatedServer.t(DedicatedServer.java:2
    27)
            at net.minecraft.server.v1_6_R2.MinecraftServer.s(MinecraftServer.java:4
    86)
            at net.minecraft.server.v1_6_R2.MinecraftServer.run(MinecraftServer.java
    :419)
            at net.minecraft.server.v1_6_R2.ThreadServerApplication.run(SourceFile:5
    82)
    Caused by: java.lang.NoClassDefFoundError: me/icyrelic/com/API/LBApi
            at me.icyrelic.com.LegendaryOreLogs.<init>(LegendaryOreLogs.java:38)
            at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     
            at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
     
            at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Sou
    rce)
            at java.lang.reflect.Constructor.newInstance(Unknown Source)
            at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.j
    ava:178)
            ... 14 more
    Caused by: java.lang.ClassNotFoundException: me.icyrelic.com.API.LBApi
            at java.net.URLClassLoader$1.run(Unknown Source)
            at java.security.AccessController.doPrivileged(Native Method)
            at java.net.URLClassLoader.findClass(Unknown Source)
            at org.bukkit.plugin.java.PluginClassLoader.findClass0(PluginClassLoader
    .java:80)
            at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.
    java:53)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            at java.lang.ClassLoader.loadClass(Unknown Source)
            ... 20 more

    LBApi.java
    Code:
    package me.icyrelic.com.API;
     
    import org.bukkit.ChatColor;
     
    import me.icyrelic.com.LegendaryBans;
    import me.icyrelic.com.Data.MySQL;
     
     
     
    public final class LBApi {
       
        private LegendaryBans plugin;
       
        private MySQL mysql = new MySQL(plugin);
       
        public final boolean createBan(String name, String admin, String type, String unban, String reason){
            return mysql.createBan(name, admin, type, unban, reason);
        }
       
        public final void sendBanMessage(String admin, String reason, Boolean tempban, String tempbantime, String player){
           
            if(tempban){
                plugin.getServer().broadcastMessage(ChatColor.YELLOW+player.toLowerCase()+ChatColor.GOLD+" was tempbanned by "+ChatColor.YELLOW+admin+ChatColor.GOLD+". Reason: "+ChatColor.YELLOW+reason);
                plugin.getServer().broadcastMessage(ChatColor.YELLOW + player + ChatColor.GOLD + " is temporarily banned for " +ChatColor.YELLOW+  tempbantime);
            }else{
                plugin.getServer().broadcastMessage(ChatColor.YELLOW+player.toLowerCase()+ChatColor.GOLD+" was banned by "+ChatColor.YELLOW+admin+ChatColor.GOLD+". Reason: "+ChatColor.YELLOW+reason);
            }
           
        }
       
     
    }
    

    LegendaryOreLogs
    Code:
    public LBApi api = new LBApi();
       
       
        public void onEnable(){
           
           
           
           
            if(api.createBan("Player", "LegendaryOreLogs", "0", "0", "AutoBan: Xray")){
                api.sendBanMessage("LegendaryOreLogs", "AutoBan: Xray", false, "", "Player");
            }else{
                System.out.println("Ban Failed");
            }
            
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 3, 2016
Thread Status:
Not open for further replies.

Share This Page