Solved Bugs On Config Handling

Discussion in 'Plugin Development' started by codekrafter, Jun 27, 2015.

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

    codekrafter

    I Cant Seem To Fix my Null Pointer Exceptions So I Brough Them Here!

    Error (open)

    Code:
    [11:50:12 INFO]: [SkyWars] Disabling SkyWars v1.0
    [11:50:12 ERROR]: Error occurred while disabling SkyWars v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at net.codekrafter.plugins.skywars.main.SkyWars.onDisable(SkyWars.java:75) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:323) ~[spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.java.JavaPluginLoader.disablePlugin(JavaPluginLoader.java:359) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.SimplePluginManager.disablePlugin(SimplePluginManager.java:424) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.SimplePluginManager.disablePlugins(SimplePluginManager.java:417) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.SimplePluginManager.clearPlugins(SimplePluginManager.java:458) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.reload(CraftServer.java:711) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:645) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchServerCommand(CraftServer.java:631) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.DedicatedServer.aM(DedicatedServer.java:353) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:317) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at java.lang.Thread.run(Thread.java:744) [?:1.8.0]
    [11:50:12 INFO]: [ProtocolLib] Disabling ProtocolLib v3.6.3-SNAPSHOT
    [11:50:12 INFO]: [Vault] Disabling Vault v1.5.3-b37
    [11:50:12 INFO]: [MGLib] Disabling MGLib v0.4.1
    [11:50:12 INFO]: [MGLib] Ending all minigames due to server restart/reload
    [11:50:12 INFO]: [MGLib] MGLib v0.4.1 has been disabled!
    [11:50:12 INFO]: [PlugMan] Disabling PlugMan v2.0.4
    [11:50:13 INFO]: [PlugMan] Loading PlugMan v2.0.4
    [11:50:13 INFO]: [MGLib] Loading MGLib v0.4.1
    [11:50:13 INFO]: [Vault] Loading Vault v1.5.3-b37
    [11:50:13 INFO]: [ProtocolLib] Loading ProtocolLib v3.6.3-SNAPSHOT
    [11:50:13 INFO]: [SkyWars] Loading SkyWars v1.0
    [11:50:13 INFO]: [Magic] Loading Magic v0.0.1
    [11:50:13 INFO]: [Vault] Enabling Vault v1.5.3-b37
    [11:50:13 INFO]: [Vault] [Permission] SuperPermissions loaded as backup permission system.
    [11:50:13 INFO]: [Vault] Enabled Version 1.5.3-b37
    [11:50:13 INFO]: [ProtocolLib] Enabling ProtocolLib v3.6.3-SNAPSHOT
    [11:50:13 INFO]: [ProtocolLib] Started structure compiler thread.
    [11:50:13 INFO]: [PlugMan] Enabling PlugMan v2.0.4
    [11:50:13 INFO]: [MGLib] Enabling MGLib v0.4.1
    [11:50:13 INFO]: [MGLib] MGLib v0.4.1 has been enabled!
    [11:50:13 INFO]: [SkyWars] Enabling SkyWars v1.0
    [11:50:13 ERROR]: Error occurred while enabling SkyWars v1.0 (Is it up to date?)
    java.lang.NullPointerException
        at net.codekrafter.plugins.skywars.main.SkyWars.onEnable(SkyWars.java:49) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:321) ~[spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:335) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:405) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.java:355) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.java:315) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.reload(CraftServer.java:744) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.Bukkit.reload(Bukkit.java:534) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:23) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServer.java:645) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchServerCommand(CraftServer.java:631) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.DedicatedServer.aM(DedicatedServer.java:353) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:317) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:623) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:526) [spigot.jar:git-Spigot-47b1dff-f233e7d]
        at java.lang.Thread.run(Thread.java:744) [?:1.8.0]
    [11:50:13 INFO]: [Magic] Enabling Magic v0.0.1
    [11:50:13 INFO]: Server permissions file permissions.yml is empty, ignoring it
    [11:50:13 INFO]: CONSOLE: Reload complete.
    [11:50:13 INFO]: [PlugMan] Metrics started: http://mcstats.org/plugin/PlugMan
    [11:50:13 INFO]: [Vault] Checking for Updates ...
    [11:50:14 INFO]: [PlugMan] No update was found.
    [11:50:14 INFO]: [Vault] No new version available
    >
    


    Main Code (open)

    Code:
    package net.codekrafter.plugins.skywars.main;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    import net.amigocraft.mglib.api.Minigame;
    import net.codekrafter.plugins.skywars.inventory.InventorySerializable;
    import net.codekrafter.plugins.skywars.listeners.SkyWarsListener;
    import net.codekrafter.plugins.utils.Cuboid;
    import net.codekrafter.plugins.utils.Hider;
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.configuration.serialization.ConfigurationSerializable;
    import org.bukkit.configuration.serialization.ConfigurationSerialization;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class SkyWars extends JavaPlugin {
        public static Minigame mg;
        public boolean reload = false;
        // public SaveFile chestsFile = new SaveFile(this, "chests");
        public Map<String, Inventory> chests = new HashMap<String, Inventory>();
        public List<String> chestDir;
        public List<Map<String, Object>> chestList;
    
        // private CommandsManager<CommandSender> commands;
    
        @SuppressWarnings("unchecked")
        @Override
        public void onEnable() {
            setClass(Cuboid.class);
            getServer().getPluginManager().registerEvents(new SkyWarsListener(),
                    this);
            ConfigurationSerialization.registerClass(InventorySerializable.class);
            chestList = (List<Map<String, Object>>) getConfig().get("chest.chests");
            if(chestList == null) {
                Inventory inv = Bukkit.createInventory(null, 27, "Test Chest");
                inv.addItem(new ItemStack(Material.APPLE, 5));
                Map<String, Object> map = new InventorySerializable(inv).serialize();
                chestList.add(map);
            }
            chestDir = getConfig().getStringList("chest.directory");
            int i = 0;
            for (Map<String, Object> chest : chestList) {
                Inventory chest1 = InventorySerializable.deserialize(
                        chestList.get(i)).getInv();
                i++;
            }
    
            if (!reload) {
                mg = Minigame.registerPlugin(this);
            } else {
                mg = Minigame.getMinigameInstance(this.getName());
            }
            reload = false;
        }
    
        @Override
        public void onDisable() {
            getConfig().set("chest.directory", chestDir);
            if(chestList == null) {
                Inventory inv = Bukkit.createInventory(null, 27, "Test Chest");
                inv.addItem(new ItemStack(Material.APPLE, 5));
                InventorySerializable invs = new InventorySerializable(inv);
                Map<String, Object> map = invs.serialize();
                chestList.add(map);
            }
            getConfig().set("chest.chests", chestList);
            saveConfig();
        }
    
        public void setClass(final Class<?> clazz) {
            if (ConfigurationSerializable.class.isAssignableFrom(clazz)) {
                Class<? extends ConfigurationSerializable> serializable = clazz
                        .asSubclass(ConfigurationSerializable.class);
                ConfigurationSerialization.registerClass(serializable);
            }
        }
    
        @Override
        public boolean onCommand(CommandSender s, Command cmd, String l,
                String[] args) {
            if (l.equalsIgnoreCase("skywars")) {
                if (args.length == 0 || args[0] == null || args[0] == ""
                        || args[0] == " ") {
                    s.sendMessage(ChatColor.translateAlternateColorCodes(
                            "&".toCharArray()[0],
                            "&3+&b===================================================&3+"));
                    s.sendMessage(ChatColor.translateAlternateColorCodes(
                            "&".toCharArray()[0],
                            "&b&lAsk Codekrafter For Help Using The Skywars Plugin, He's Too Lazy To Write A Help Page"));
                    s.sendMessage(ChatColor.translateAlternateColorCodes(
                            "&".toCharArray()[0],
                            "&3+&b===================================================&3+"));
                } else {
                    if (args[0].equalsIgnoreCase("reload")) {
                        reload(s);
                    } else if (args[0].equalsIgnoreCase("tool")) {
                        if (args.length >= 2) {
                            tool(s, args[1]);
                        } else {
                            tool(s, s.getName());
                        }
                    }
                }
            }
            return true;
    
        }
    
        private void reload(CommandSender s) {
            reload = true;
            getConfig();
            saveConfig();
            getServer().getPluginManager().disablePlugin(this);
            getServer().getPluginManager().enablePlugin(this);
            s.sendMessage(ChatColor.GREEN + "Sky Wars Plugin reloaded!");
            System.out.println(s.getName() + " Has Reload Sky Wars!");
        }
    
        private void tool(CommandSender s, String arg) {
            if (s instanceof Player) {
                Player p = (Player) s;
                if (arg == "" || arg == " " || arg == null) {
                    ItemStack is = new ItemStack(Material.DIAMOND_HOE);
                    ItemMeta meta = is.getItemMeta();
                    List<String> lore = new ArrayList<String>();
                    lore.add(Hider.hide("META:{<tool>}"));
                    meta.setLore(lore);
                    meta.setDisplayName(ChatColor.translateAlternateColorCodes(
                            "&".toCharArray()[0], "&9&lSkyWars&8> Tool"));
                    is.setItemMeta(meta);
                    p.getInventory().addItem(is);
                } else {
                    if (Bukkit.getPlayer(arg) != null) {
                        ItemStack is = new ItemStack(Material.DIAMOND_HOE);
                        ItemMeta meta = is.getItemMeta();
                        List<String> lore = new ArrayList<String>();
                        lore.add(Hider.hide("META:{<tool>}"));
                        meta.setLore(lore);
                        meta.setDisplayName(ChatColor.translateAlternateColorCodes(
                                "&".toCharArray()[0], "&9&lSkyWars&8> Tool"));
                        is.setItemMeta(meta);
                        Bukkit.getPlayer(arg).getInventory().addItem(is);
                    } else {
                        s.sendMessage(ChatColor.DARK_RED
                                + "Please Specify A Player");
                    }
                }
            } else {
                if (arg == "" || arg == " " || arg == null) {
                    s.sendMessage(ChatColor.DARK_RED + "Player Not Found");
                } else {
                    if (Bukkit.getPlayer(arg) != null) {
                        ItemStack is = new ItemStack(Material.DIAMOND_HOE);
                        ItemMeta meta = is.getItemMeta();
                        List<String> lore = new ArrayList<String>();
                        lore.add(Hider.hide("META:{<tool>}"));
                        meta.setLore(lore);
                        meta.setDisplayName(ChatColor.translateAlternateColorCodes(
                                "&".toCharArray()[0], "&9&lSkyWars&8> Tool"));
                        is.setItemMeta(meta);
                        Bukkit.getPlayer(arg).getInventory().addItem(is);
                    } else {
                        s.sendMessage(ChatColor.DARK_RED + "Player Not Found");
                    }
                }
            }
        }
    }
    
     
  2. chestList is null. When it is null, you can't just do stuff with it
    You need to initialize it first
     
  3. Offline

    codekrafter

Thread Status:
Not open for further replies.

Share This Page