Player Damage Event not running?

Discussion in 'Plugin Development' started by MezaGalaxus, Nov 25, 2015.

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

    MezaGalaxus

    Here's one I can't quite get my head around. This code ran perfectly fine in the past and now I can't get it to execute. Can anyone tell me why this code in my event listener isn't running?

    My main class:
    Code:
    package com.mezamc.shields;
    
    import java.util.logging.Logger;
    
    import org.bukkit.plugin.PluginDescriptionFile;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import com.mezamc.shields.commands.Shield;
    import com.mezamc.shields.events.PlayerDamaged;
    import com.mezamc.shields.events.PlayerJoin;
    
    public class Main extends JavaPlugin{
      
        public void onEnable(){
            PluginDescriptionFile pdfFile = getDescription();
            Logger logger = getLogger();
          
            registerCommands();
            registerEvents();
            registerConfig();
          
            logger.info(pdfFile.getName() + " V." + pdfFile.getVersion() + " has been enabled!");
        }
      
        public void onDisable(){
            PluginDescriptionFile pdfFile = getDescription();
            Logger logger = getLogger();
          
            logger.info(pdfFile.getName() + " V." + pdfFile.getVersion() + " has been disabled!");
        }
      
        public void registerCommands(){
            getCommand("shield").setExecutor(new Shield());
        }
      
        public void registerEvents(){
            PluginManager pm = getServer().getPluginManager();
          
            pm.registerEvents(new PlayerDamaged(), this);
            pm.registerEvents(new PlayerJoin(), this);
        }
      
        public void registerConfig(){
            getConfig().options().copyDefaults(true);
            saveConfig();
        }
    }
    
    My event listener:
    Code:
    package com.mezamc.shields.events;
    
    import org.bukkit.Bukkit;
    import org.bukkit.entity.Entity;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    import com.connorlinfoot.titleapi.TitleAPI;
    import com.mezamc.shields.Main;
    
    public class PlayerDamaged implements Listener {
      
        private Main plugin;
    
        public void onPlayerDamaged(final EntityDamageEvent event){
            Entity entity = event.getEntity();
            if(entity instanceof Player){
                Player player = (Player)entity;
                TitleAPI.sendTitle(player,0,1,0,"","3");
                Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
                    @Override
                    public void run(){
                        TitleAPI.sendTitle(player,0,1,0,"","2");
                    }
                },20L);
                Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
                    @Override
                    public void run(){
                        TitleAPI.sendTitle(player,0,1,0,"","1");
                    }
                },20L);
                Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
                    @Override
                    public void run(){
                        player.removePotionEffect(PotionEffectType.ABSORPTION);
                        player.addPotionEffect(new PotionEffect(PotionEffectType.ABSORPTION,
                                1000000, 4));
                    }
                },20L);
            }
        }
    }
    
     
  2. Offline

    Scimiguy

    You forgot @EventHander
     
  3. Offline

    MezaGalaxus

    After making that amendment to the code and removing the non working API, this still doesn't run correctly. "player.sendMessage("Runs");" works in game but the code inside "Bukkit.getScheduler()" doesn't run.

    Code:
    @EventHandler
        public void onPlayerDamaged(final EntityDamageEvent event){
            Entity entity = event.getEntity();
            if(entity instanceof Player){
                Player player = (Player)entity;
                player.sendMessage("Runs");
                Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
                    @Override
                    public void run(){
                        player.removePotionEffect(PotionEffectType.ABSORPTION);
                        player.addPotionEffect(new PotionEffect(PotionEffectType.ABSORPTION,
                                1000000, 4));
                    }
                },60L);
            }
     
  4. Offline

    Scimiguy

    Use a bukkitrunnable instead
     
  5. Offline

    MezaGalaxus

    Could you possibly provide me with an example?
     
  6. Offline

    Scimiguy

  7. Offline

    MezaGalaxus

    @Scimiguy
    I've again amended the code and I'm now getting this error.

    Error:
    Code:
    [11:42:50] [Server thread/ERROR]: Could not pass event EntityDamageEvent to Shields v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:85) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:538) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:524) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:570) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityLiving.d(EntityLiving.java:1068) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityHuman.d(EntityHuman.java:860) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityLiving.damageEntity(EntityLiving.java:709) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityHuman.damageEntity(EntityHuman.java:801) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityPlayer.damageEntity(EntityPlayer.java:486) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityLiving.e(EntityLiving.java:905) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityHuman.e(EntityHuman.java:1441) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.Block.a(Block.java:595) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.Entity.a(Entity.java:810) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityLiving.a(EntityLiving.java:157) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.EntityPlayer.a(EntityPlayer.java:612) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:444) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.PacketPlayInFlying.a(SourceFile:126) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.PacketPlayInPosition.a(SourceFile:57) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_60]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_60]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-8a983f9-e81edfc]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_60]
    Caused by: java.lang.IllegalArgumentException: Plugin cannot be null
        at org.apache.commons.lang.Validate.notNull(Validate.java:192) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.validate(CraftScheduler.java:397) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.runTaskTimer(CraftScheduler.java:123) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.craftbukkit.v1_8_R1.scheduler.CraftScheduler.runTaskLater(CraftScheduler.java:106) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at org.bukkit.scheduler.BukkitRunnable.runTaskLater(BukkitRunnable.java:64) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        at com.mezamc.shields.events.PlayerDamaged.onJoin(PlayerDamaged.java:30) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_60]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_60]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_60]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[spigot.jar:git-Spigot-8a983f9-e81edfc]
        ... 29 more
    Code:
    Code:
    package com.mezamc.shields.events;
    
    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.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    import org.bukkit.scheduler.BukkitRunnable;
    
    import com.mezamc.shields.Main;
    
    public class PlayerDamaged implements Listener {
    
        private Main plugin;
    
        @EventHandler
        public void onJoin(EntityDamageEvent event) {
            Entity entity = event.getEntity();
            if (entity instanceof Player) {
                Player player = (Player)entity;
                new BukkitRunnable() {
                    @Override
                    public void run() {
                        player.removePotionEffect(PotionEffectType.ABSORPTION);
                        player.addPotionEffect(new PotionEffect(PotionEffectType.ABSORPTION,
                                1000000, 4));
                    }
                }.runTaskLater(this.plugin, 60);
            }
        }
    }
    
     
    Last edited: Nov 26, 2015
  8. Offline

    Xerox262

    Plugin cannot be null, you never assigned your plugin field with a value. You need to pass it from your main class.
     
  9. Offline

    dlange

Thread Status:
Not open for further replies.

Share This Page