Problem/Bug Configuration ERROR

Discussion in 'Bukkit Help' started by czarmin02, Apr 17, 2017.

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

    czarmin02

    I have a NullPointerExpection error. I tried to read something from the config file but i got this error.

    Code:
    package hu.czarmin.survivalboost.Handlers;
    
    
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.World;
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.entity.ArmorStand;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.scheduler.BukkitScheduler;
    
    import hu.czarmin.survivalboost.main;
    
    public class PetMotionHandler implements Listener {
       
        private static Location loc;
       
        public static void start(main pl) {
            @SuppressWarnings("deprecation")
            Player p = Bukkit.getPlayer("czarmin");
            FileConfiguration cfg = main.cfg(pl);
            p.sendMessage("1");
            if(cfg.getConfigurationSection("CustomPets").getKeys(false) == null) { // <--- There is the problem
                p.sendMessage("null");
            } else {
                p.sendMessage("everything");
            }
            BukkitScheduler scheduler = Bukkit.getServer().getScheduler();
            p.sendMessage("2");
            scheduler.scheduleSyncRepeatingTask(pl, new Runnable() {
                @Override
                public void run() {
                    p.sendMessage("3");
                    for(String section : cfg.getConfigurationSection("CustomPets").getKeys(false)) {
                        p.sendMessage("4");
                        String name = ChatColor.translateAlternateColorCodes('&', cfg.getString("CustomPets." + section + ".getName"));
                        p.sendMessage("5");
                        p.sendMessage(name);
                        ArmorStand petAS = (ArmorStand) findCustomPet(name, p);
                        p.sendMessage("6");
                        Entity pet = findCustomPet(name + "|Custom_pet|", p);
                        p.sendMessage("7");
                        for(Player p : Bukkit.getOnlinePlayers()) {
                            p.sendMessage(petAS.getCustomName());
                            p.sendMessage(pet.getCustomName());
                        }
                        petAS.teleport(pet.getLocation());
                        if(loc != pet.getLocation()) {
                            ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE, 1);
                            item.setDurability((short) (cfg.getInt("CustomPets." + section + ".getModel") + 1));
                            petAS.setHelmet(item);
                        } else {
                            ItemStack item = new ItemStack(Material.DIAMOND_PICKAXE, 1);
                            item.setDurability((short) (cfg.getInt("CustomPets." + section + ".getModel")));
                            petAS.setHelmet(item);
                        }
                    }
                }
            }, 0L, 5L);
        }
       
        private static Entity findCustomPet(String name, Player player) {
            for(World world : Bukkit.getWorlds()) {
                player.sendMessage("/1");
                for(Entity mob : world.getEntities()) {
                    player.sendMessage("/2");
                    if(mob.getCustomName().equals(name)) {
                        player.sendMessage("/3");
                        return mob;
                    } else {
                        player.sendMessage("/4");
                        return null;
                    }
                }
            }
            player.sendMessage("/5");
            return null;
        }
       
    }
    
    The config file:
    Code:
    CustomPets:
      PandaTest:
        getType: !!org.bukkit.entity.EntityType 'WOLF'
        getModel: 1
        getName: '&aPandaTest'
    Error:
    Code:
    [12:01:15 ERROR]: Error occurred while enabling SurvivalBoost v0.1 (Is it up to date?)
    java.lang.NullPointerException
            at hu.czarmin.survivalboost.Handlers.PetMotionHandler.start(PetMotionHandler.java:28) ~[?:?]
            at hu.czarmin.survivalboost.main.onEnable(main.java:33) ~[?:?]
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:271) ~[craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:329) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:404) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugin(CraftServer.java:361) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.craftbukkit.v1_11_R1.CraftServer.enablePlugins(CraftServer.java:323) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.craftbukkit.v1_11_R1.CraftServer.reload(CraftServer.java:729) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.Bukkit.reload(Bukkit.java:549) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at hu.czarmin.survivalboost.commands.update.onCommand(update.java:37) [update.jar:?]
            at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:140) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at org.bukkit.craftbukkit.v1_11_R1.CraftServer.dispatchCommand(CraftServer.java:629) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.PlayerConnection.handleCommand(PlayerConnection.java:1294) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.PlayerConnection.a(PlayerConnection.java:1154) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(SourceFile:37) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.PacketPlayInChat.a(SourceFile:9) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.PlayerConnectionUtils$1.run(SourceFile:13) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_121]
            at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_121]
            at net.minecraft.server.v1_11_R1.SystemUtils.a(SourceFile:46) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.MinecraftServer.D(MinecraftServer.java:695) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.DedicatedServer.D(DedicatedServer.java:360) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.MinecraftServer.C(MinecraftServer.java:650) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at net.minecraft.server.v1_11_R1.MinecraftServer.run(MinecraftServer.java:554) [craftbukkit-1.11.2.jar:git-Bukkit-1f6c04c]
            at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
    
     
  2. Offline

    CopyPaste

    Have you got:
    @Override
    public void onEnable() {
    }
     
  3. @CopyPaste
    Code:java
    1. if(cfg.getConfigurationSection("CustomPets").getKeys(false) == null) { // <--- There is the problem
    The problem is that you're for some reason invoking getKeys(false) on the configuration section. If the configuration section doesn't exist, getConfigurationSection() will already return null. No need for the getKeys() call.
     
  4. Offline

    timtower Administrator Administrator Moderator

    @czarmin02 For the getType in your config: use Enum#name
     
  5. Offline

    czarmin02

    I think the problem is the config loading. There is my main class:
    Code:
    package hu.czarmin.survivalboost;
    
    import java.io.File;
    import java.util.logging.Logger;
    
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import hu.czarmin.survivalboost.Handlers.PetMotionHandler;
    import hu.czarmin.survivalboost.Handlers.SpawnPet;
    import hu.czarmin.survivalboost.commands.update;
    import hu.czarmin.survivalboost.listeners.CustomCraftings;
    import hu.czarmin.survivalboost.listeners.CustomEffects;
    import hu.czarmin.survivalboost.listeners.CustomPetSpawn;
    import hu.czarmin.survivalboost.listeners.CustomXP;
    import hu.czarmin.survivalboost.listeners.DetectCosmetic;
    
    public class main extends JavaPlugin {
      
        public void onEnable() {
            PluginDescriptionFile pdfFile = getDescription();
            Logger logger = getLogger();
          
            CustomCraftings.loadRecipes();
            registerCommands();
            registerEvents();
            configManager();
          
            logger.info(pdfFile.getName() + " has been enabled! (V." + pdfFile.getVersion() + ")");
          
            PetMotionHandler.start(this);
        }
      
        public void onDisable() {
            PluginDescriptionFile pdfFile = getDescription();
            Logger logger = getLogger();
          
            logger.info(pdfFile.getName() + " has been disabled! (V." + pdfFile.getVersion() + ")");
            getServer().getScheduler().cancelTask(PetMotionHandler.schedulerpet);
        }
      
        public void registerCommands() {
            getCommand("updateplugin").setExecutor(new update());
        }
      
        public void registerEvents() {
            PluginManager pm = getServer().getPluginManager();
          
            pm.registerEvents(new DetectCosmetic(), this);
            pm.registerEvents(new CustomEffects(), this);
            pm.registerEvents(new CustomXP(), this);
            pm.registerEvents(new SpawnPet(this), this);
            pm.registerEvents(new CustomPetSpawn(this), this);
        }
      
        public void serverConfigReload() {
            reloadConfig();
        }
      
        public void configManager() {
            File config = new File(getDataFolder(), "config.yml");
            if(!config.exists()) {
                getConfig().options().copyDefaults(true);
                saveDefaultConfig();
            }
        }
      
        public static FileConfiguration cfg(main plugin) {
            return plugin.getConfig();
        }
    }
    
    and thanks for helping me! A big thanks for everyone.
     
    Last edited: Apr 22, 2017
Thread Status:
Not open for further replies.

Share This Page