NPE with getting a Double from the Config

Discussion in 'Plugin Development' started by MistPhizzle, Oct 8, 2012.

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

    MistPhizzle

    Hello, I am working with Configs and what not, and I'm getting the following error:

    Code:
    181024 SEV: Could not pass event EntityDamageByEntityEvent to MobEffects
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:332)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.event.CraftEventFactory.callEvent(CraftEventFactory.java:80)
        at org.bukkit.craftbukkit.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:364)
        at org.bukkit.craftbukkit.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:386)
        at net.minecraft.server.EntityLiving.damageEntity(EntityLiving.java:591)
        at net.minecraft.server.EntityAnimal.damageEntity(SourceFile:124)
        at net.minecraft.server.EntityWolf.k(EntityWolf.java:175)
        at net.minecraft.server.PathfinderGoalMeleeAttack.d(PathfinderGoalMeleeAttack.java:79)
        at net.minecraft.server.PathfinderGoalSelector.a(PathfinderGoalSelector.java:87)
        at net.minecraft.server.EntityLiving.bc(EntityLiving.java:1216)
        at net.minecraft.server.EntityLiving.d(EntityLiving.java:1091)
        at net.minecraft.server.EntityAgeable.d(EntityAgeable.java:36)
        at net.minecraft.server.EntityAnimal.d(SourceFile:32)
        at net.minecraft.server.EntityWolf.d(EntityWolf.java:98)
        at net.minecraft.server.EntityLiving.h_(EntityLiving.java:447)
        at net.minecraft.server.EntityWolf.h_(EntityWolf.java:108)
        at net.minecraft.server.World.tickEntity(World.java:1367)
        at net.minecraft.server.World.entityJoinedWorld(World.java:1329)
        at net.minecraft.server.WorldServer.entityJoinedWorld(WorldServer.java:533)
        at net.minecraft.server.World.playerJoinedWorld(World.java:1319)
        at net.minecraft.server.World.tickEntities(World.java:1217)
        at net.minecraft.server.WorldServer.tickEntities(WorldServer.java:446)
        at net.minecraft.server.MinecraftServer.q(MinecraftServer.java:565)
        at net.minecraft.server.DedicatedServer.q(DedicatedServer.java:213)
        at net.minecraft.server.MinecraftServer.p(MinecraftServer.java:475)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:407)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
    Caused by: java.lang.NullPointerException
        at com.etriacraft.MobEffects.Listeners.MEZombieListener.ZombieBlindness(MEZombieListener.java:26)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:330)
    Not quite sure why, but here are my classes:
    Main Class:
    Code:
    package com.etriacraft.MobEffects;
     
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.util.logging.Logger;
     
    import org.bukkit.configuration.file.FileConfiguration;
    import org.bukkit.configuration.file.YamlConfiguration;
    import org.bukkit.plugin.java.JavaPlugin;
    import com.etriacraft.MobEffects.Listeners.*;
     
    public class MobEffects extends JavaPlugin {
     
        protected Logger log;
        protected UpdateChecker updateChecker;
     
        File configFile;
        FileConfiguration config;
     
        MobEffectsCommand mec;
     
        @Override
        public void onEnable() {
            // Initialize Config
            configFile = new File(getDataFolder(), "config.yml");
     
            // Use firstRun() method
            try {
                firstRun();
            } catch (Exception e) {
                e.printStackTrace();
            }
     
            // Declare FileCOnfigurations, load COnfigs
            config = new YamlConfiguration();
            loadYamls();
     
            // Logger
            this.log = this.getLogger();
     
            // Events
            this.getServer().getPluginManager().registerEvents(new MEBlazeListener(), this);
            this.getServer().getPluginManager().registerEvents(new MECaveSpiderListener(), this);
            this.getServer().getPluginManager().registerEvents(new MECreeperListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEEnderDragonListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEEndermanListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEIronGolemListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEPlayerListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEPigZombieListener(), this);
            this.getServer().getPluginManager().registerEvents(new MESilverfishListener(), this);
            this.getServer().getPluginManager().registerEvents(new MESlimeListener(), this);
            this.getServer().getPluginManager().registerEvents(new MESnowGolemListener(), this);
            this.getServer().getPluginManager().registerEvents(new MESpiderListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEZombieListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEGiantListener(), this);
            this.getServer().getPluginManager().registerEvents(new MEWolfListener(), this);
            //
            this.getServer().getPluginManager().registerEvents(new MiscListener(), this);
            //
     
            // UpdateChecker to Console
            this.updateChecker = new UpdateChecker(this, "http://dev.bukkit.org/server-mods/mobeffects/files.rss");
            if (UpdateChecker.updateNeeded() && this.getConfig().getBoolean("AutoCheckForUpdates", true)) {
                this.log.info("A new version is available: " + this.updateChecker.getVersion());
                this.log.info("Get it from: " + this.updateChecker.getLink());
            }
            // Metrics
            try {
                MetricsLite metrics = new MetricsLite(this);
                metrics.start();
            } catch (IOException e) {
                // Failed to submit stats :-(
            }
        }
     
        public void onDisable() {
        // Stuff will be here eventually
        }
        // Methods
        private void firstRun() throws Exception {
            if (!configFile.exists()) {
                configFile.getParentFile().mkdirs();
                copy(getResource("config.yml"), configFile);
            }
        }
     
        private void copy(InputStream in, File file) {
            try {
                OutputStream out = new FileOutputStream(file);
                byte[] buf = new byte[1024];
                int len;
                while ((len = in.read(buf))>0) {
                    out.write(buf,0,len);
                }
                out.close();
                in.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
        public void saveYamls() {
            try {
                config.save(configFile);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        public void loadYamls() {
            try {
                config.load(configFile);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
     
    }
    
    My MEZombieListener Class (The first 30 or so lines, it only mentions up to 26 in the Stack Trace)
    Code:
    package com.etriacraft.MobEffects.Listeners;
     
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.entity.Zombie;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
     
    import com.etriacraft.MobEffects.Config;
    import com.etriacraft.MobEffects.MobEffects;
     
    public class MEZombieListener implements Listener {
     
        public MobEffects plugin;
     
        @EventHandler
        public void ZombieBlindness(EntityDamageByEntityEvent event) {
            Entity e = event.getEntity();
            Entity damager = event.getDamager();
            String world = e.getWorld().getName();
            double rand = Math.random();
            boolean dodged = false;
            if (rand <= plugin.getConfig().getDouble("Zombie.Blindness.DodgeChance") / 100) {
                dodged = true;
            } if ( plugin.getConfig().getBoolean("Zombie.Blindness.Enabled", true) && damager instanceof Zombie && e instanceof Player && plugin.getConfig().getStringList("Worlds").contains(world) && !dodged) {
                Player player = (Player) e;
                player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, plugin.getConfig().getInt("Zombie.Blindness.Time"), plugin.getConfig().getInt("Zombie.Blindness.Power")));
            }
        }
    and lastly, my config (This one is quite long, so I'll just show you the part in question again)
    Code:
    Zombie:
      Blindness:
        Enabled: false
        Power: 0
        Time: 500
        DodgeChance: 10.0
    If someone could help me figure out what is wrong here, I would greatly appreciate it.

    Thanks in advance :)

    bump.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 29, 2016
  2. Offline

    gomeow

  3. Offline

    MistPhizzle

    Oh I've since fixed it. I have made the config in a much simpler way, not sure why I didn't before.

    Thanks V10lator. I forgot to update the thread to solved.
     
Thread Status:
Not open for further replies.

Share This Page