Startup problems

Discussion in 'Plugin Development' started by damo1995, Feb 1, 2012.

Thread Status:
Not open for further replies.
  1. Hello all,

    Ever since the new 1.1 RB and the new EventHandlers i've been unable to figure out why my console is erroring and how i can fix it and wondered if anybody would be able to shed some light onto it.

    It uses worldguard and wondered if it could be to do with that being outdated?

    Error:
    Code:
    2012-02-01 19:19:14 [SEVERE] Could not load 'plugins\AnimalProtect.jar' in folder 'plugins': 
    java.lang.reflect.InvocationTargetException
     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
     at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
     at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
     at java.lang.reflect.Constructor.newInstance(Unknown Source)
     at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:136)
     at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:285)
     at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:200)
     at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:156)
     at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:132)
     at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52)
     at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:148)
     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:408)
     at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
    Caused by: java.lang.NullPointerException
     at me.damo1995.AnimalProtect.EntityDamageListener.<init>(EntityDamageListener.java:25)
     at me.damo1995.AnimalProtect.Main.<init>(Main.java:12)
     ... 13 more
    
    Main.class:
    Code:
    package me.damo1995.AnimalProtect;
    
    import java.util.logging.Logger;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;
    public class Main extends JavaPlugin{
     Logger log = Logger.getLogger("Minecraft");
     public final EntityDamageListener DamageListener = new EntityDamageListener(this);
     public void onEnable() {
     
      this.logMessage("Enabled");
      getServer().getPluginManager().registerEvents(DamageListener, this);
     }
     public void onDisable() {
      this.logMessage("Disabled");
     }
     protected void logMessage(String msg){
      PluginDescriptionFile pdFile = this.getDescription();
      this.log.info(pdFile.getName() + " " + pdFile.getVersion() + ": " +msg);
      
     }
    
    }
     
    
    EntityDamageListener.class:
    Code:
    package me.damo1995.AnimalProtect;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.entity.Arrow;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.LivingEntity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageByEntityEvent;
    import org.bukkit.event.entity.EntityDamageEvent;
    import com.sk89q.worldedit.bukkit.BukkitUtil;
    import com.sk89q.worldguard.bukkit.WorldGuardPlugin;
    import com.sk89q.worldguard.domains.DefaultDomain;
    import com.sk89q.worldguard.protection.regions.ProtectedRegion;
    public class EntityDamageListener implements Listener {
     public static Main plugin;
     public EntityDamageListener(Main instance) {
      plugin = instance;
     }
       WorldGuardPlugin wg = (WorldGuardPlugin)plugin.getServer().getPluginManager().getPlugin("WorldGuard");
    @EventHandler  
          public void onEntityDamage(EntityDamageEvent e) { if (e.isCancelled()) return;
            if (!(e instanceof EntityDamageByEntityEvent)) return;
            EntityDamageByEntityEvent event = (EntityDamageByEntityEvent)e;
            if (!(event.getDamager() instanceof Player)) return;
            Player player = (Player)event.getDamager();
            LivingEntity le = (LivingEntity)event.getEntity();
            Entity arrow = ((EntityDamageByEntityEvent) event).getDamager();
            Location loc = le.getLocation();
            Arrow a = (Arrow) e.getEntity();
            for(ProtectedRegion region: wg.getRegionManager(loc.getWorld()).getApplicableRegions(BukkitUtil.toVector(loc)))
            {
           //  player.sendMessage("Region " + region.getId());//
             DefaultDomain members = region.getMembers();
             DefaultDomain owners = region.getOwners();
             for(@SuppressWarnings("unused") String member: members.getPlayers());
            if (!(event.getEntity() instanceof LivingEntity)) return;
            if ((le instanceof Player)) return;
            if(members.getPlayers().contains(player.getName()) || owners.getPlayers().contains(player.getName()) || player.hasPermission("worldguard.region.define")){
             e.setCancelled(false);   
             
            }
            else{event.setCancelled(true); player.sendMessage(ChatColor.RED + "[AnimalProtect]: You cannot kill mobs here!");}
            if(arrow instanceof Arrow && le instanceof Player){
             if(members.getPlayers().contains(a.getShooter()) || owners.getPlayers().contains(a.getServer())){
              e.setCancelled(false);
              
             }
             else
              e.setCancelled(true);
             player.sendMessage("Nope.avi");
             
            }
          
            
        
     
         }
      }
    }
    
    Thanks in advanced
    Damo
     
  2. well you inistatiate the damagelistener BEFORE the main class gets constructed. So instatiate the damagelistener in the onEnable()-method should work.
     
  3. OK, So i tried
    Code:
    package me.damo1995.AnimalProtect;
    
    import java.util.logging.Logger;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.java.JavaPlugin;
    public class Main extends JavaPlugin{
     Logger log = Logger.getLogger("Minecraft");
    
     public void onEnable() {
      EntityDamageListener DamageListener = new EntityDamageListener(this);
      this.logMessage("Enabled");
      getServer().getPluginManager().registerEvents(DamageListener, this);
     }
     public void onDisable() {
      this.logMessage("Disabled");
     }
     protected void logMessage(String msg){
      PluginDescriptionFile pdFile = this.getDescription();
      this.log.info(pdFile.getName() + " " + pdFile.getVersion() + ": " +msg);
      
     }
    
    }
    
    and receved
    Code:
    2012-02-01 19:52:59 [SEVERE] Error occurred while enabling AnimalProtect v0.1 (Is it up to date?): null
    java.lang.NullPointerException
     at me.damo1995.AnimalProtect.EntityDamageListener.<init>(EntityDamageListener.java:25)
     at me.damo1995.AnimalProtect.Main.onEnable(Main.java:16)
     at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:231)
     at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:1057)
     at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:379)
     at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:191)
     at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:174)
     at net.minecraft.server.MinecraftServer.t(MinecraftServer.java:357)
     at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:344)
     at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:175)
     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:408)
     at net.minecraft.server.ThreadServerApplication.run(SourceFile:465)
    
    Its possibley me being stupid but i dont know...

    Anybody else?

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

    theguynextdoor

    Try and remove the this.logMessage stuff, e.g annotate it out. And run it again. See if that is what causes the error
     
  5. Tried this and it still did the same.

    After some tinkering i have found its down to this
    Code:
    WorldGuardPlugin wg = (WorldGuardPlugin)plugin.getServer().getPluginManager().getPlugin("WorldGuard");
    All i need to do now is figure out how to fix it -.-

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 23, 2016
  6. I can't really see that in code but if that line is outside of the constructor, then there's you problem. I would just declare the variable before without any value and then setting it in the constructor of the listener.
     
Thread Status:
Not open for further replies.

Share This Page