Plugin Manager Error

Discussion in 'Plugin Development' started by scorbin60943, Jan 19, 2013.

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

    scorbin60943

    I am making a plugin and when I try to run It a get a error.

    Error:
    Code:
    2013-01-19 20:46:19 [INFO] [Stomper] Enabling Stomper v0.2
    2013-01-19 20:46:19 [INFO] Stomper Enabled | Version 0.2
    2013-01-19 20:46:19 [SEVERE] Error occurred while enabling Stomper v0.2 (Is it up to date?)
    java.lang.NullPointerException
        at me.scorbin60943.stomper.events.PlayerListener.<init>(PlayerListener.java:14)
        at me.scorbin60943.stomper.Stomper.onEnable(Stomper.java:22)
        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(SimplePluginManager.java:381)
        at org.bukkit.craftbukkit.v1_4_6.CraftServer.loadPlugin(CraftServer.java:282)
        at org.bukkit.craftbukkit.v1_4_6.CraftServer.enablePlugins(CraftServer.java:264)
        at net.minecraft.server.v1_4_6.MinecraftServer.j(MinecraftServer.java:321)
        at net.minecraft.server.v1_4_6.MinecraftServer.e(MinecraftServer.java:300)
        at net.minecraft.server.v1_4_6.MinecraftServer.a(MinecraftServer.java:259)
        at net.minecraft.server.v1_4_6.DedicatedServer.init(DedicatedServer.java:149)
        at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:399)
        at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
    Main Class:
    Code:
    package me.scorbin60943.stomper;
     
    import java.util.logging.Logger;
     
    import me.scorbin60943.stomper.events.PlayerListener;
     
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class Stomper extends JavaPlugin implements Listener{
        public final Logger logger = Logger.getLogger("Minecraft");
        public static Stomper plugin;
       
            @Override
            public void onEnable(){
                PluginDescriptionFile pdfFile = this.getDescription();
                this.logger.info(pdfFile.getName() + " Enabled" + " | Version " + pdfFile.getVersion());
               
                PluginManager pm = getServer().getPluginManager();
                pm.registerEvents(new PlayerListener(this), this);
                this.logger.info("-Loaded Events");
               
                getConfig().options().copyDefaults(true);
                this.saveDefaultConfig();
                this.logger.info("-Loaded Config");
            }
            @Override
            public void onDisable() {
                PluginDescriptionFile pdfFile = this.getDescription();
                this.logger.info(pdfFile.getName() + " Disabled");
           
                saveConfig();
                this.logger.info("-Saved Config");
                }
    }
    
    PlayerListener
    Code:
    package me.scorbin60943.stomper.events;
     
    import me.scorbin60943.stomper.Stomper;
     
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
     
    public class PlayerListener implements Listener {
        private Stomper plugin;
        int StompRange = plugin.getConfig().getInt("StompRange");
        int StomperMinFall = plugin.getConfig().getInt("StomperMinFall");
        int StompDamage = plugin.getConfig().getInt("StompDamage");
       
       
        public PlayerListener(Stomper plugin){
            this.plugin = plugin;
        }
       
        @EventHandler
        public void OnFall(EntityDamageEvent event){
            Entity ent = event.getEntity();
            if(ent instanceof Player){
                    Player player = (Player) ent;
                    if(event.getCause() == DamageCause.FALL){
                        if(event.getDamage() > StomperMinFall){
                            event.setCancelled(true);
                          if(StompDamage > 0){
                                player.damage(plugin.getConfig().getInt("StompDamage"));}
                        }
                        for(Entity nearby: player.getNearbyEntities(StompRange, StompRange, StompRange)){
                            if(nearby instanceof Player){
                                Player targetplayer = (Player) nearby;
                                targetplayer.damage(event.getDamage());
                            }
                        }
                    }
            }
        }
    }
    please help.

    Everyone has my permission to take this into eclipse and test it.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  2. int StompRange = plugin.getConfig().getInt("StompRange");
    My guess is getConfig is returning a null.
     
  3. Offline

    scorbin60943

    So what do I do to fix it?
     
  4. Offline

    ZachBora

    put a default value after "StompRange"
    int StompRange = plugin.getConfig().getInt("StompRange", 5);
     
  5. Offline

    scorbin60943

    Same error
     
  6. Offline

    EnvisionRed

    When the PlayerListener class is instantiated, it is calling all of those variable declarations before setting plugin to the instance you passed in the constructor. Do this instead:
    Code:
    private Stomper plugin;
    private int StompRange, StomperMinFall, StompDamage;
     
    public PlayerListener(Stomper plugin){
        this.plugin = plugin;
        StompRange = plugin.getConfig().getInt("StompRange");
        StomperMinFall = plugin.getConfig().getInt("StomperMinFall");
        StompDamage = plugin.getConfig().getInt("StompDamage");
    }
     
    ZachBora likes this.
  7. Offline

    ZachBora

    EnvisionRed scorbin60943
    You could do it like envisionred said, or you could put those variables in the Stomper class instead.
     
  8. Offline

    scorbin60943

    thanks it works!
     
Thread Status:
Not open for further replies.

Share This Page