Solved Entity Damage Event

Discussion in 'Plugin Development' started by BurnerDiamond, Jan 25, 2015.

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

    BurnerDiamond

    For some weird reason this isn't working and I'm not sure why.

    Code:
    package torax.events;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    
    public class Health implements Listener {
    
        public void onDamageEvent(EntityDamageEvent e) {
            Player p = (Player) e.getEntity();
            if(p instanceof Player) {
                p.sendMessage("Hi how you doing");
                if(p.getHealth() <= 10){
                    p.setHealth(20);
                }  
            }
        }
    }
      
    
    Main code:

    Code:
    package torax.paintball;
    
    import org.bukkit.ChatColor;
    import org.bukkit.World;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    
    import torax.events.Health;
    import torax.inventories.Inventories;
    
    public class Main extends JavaPlugin {
        public static Main plugin;
      
        public void onEnable() {
          
            getServer().getPluginManager().registerEvents(new Health(), this);
          
            plugin = this;
        }
      
        public void onDisable() {
          
            getConfig().options().copyDefaults(true);
            saveConfig();
          
            plugin = null;
          
        }
      
         public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
             
                if(!(sender instanceof Player)) {
                sender.sendMessage(ChatColor.YELLOW + "The console cannot use this command!");
                return true;
             
                }
              
                if(cmd.getName().equalsIgnoreCase("PBS")) {
                    Player p = (Player) sender;
                  
                    double Getx = p.getLocation().getX();
                    double Gety = p.getLocation().getY();
                    double Getz = p.getLocation().getZ();
                    World Getworld = p.getLocation().getWorld();
             
                     Main.plugin.getConfig().set("Spawn.X", Getx);        
                    Main.plugin.getConfig().set("Spawn.Y", Gety);         
                    Main.plugin.getConfig().set("Spawn.Z", Getz);         
                    Main.plugin.getConfig().set("Spawn.World", Getworld);     
                  
                    saveConfig();
                          
                    return true;
                }
      
              
                if(cmd.getName().equalsIgnoreCase("machine")) {
                    Player p = (Player) sender;
                    Inventories inventories = new Inventories();
                    ItemStack MachineGun = inventories.getMachineGun();
                    ItemStack ShotGun = inventories.getShotGun();
                    ItemStack Rifle = inventories.getRifle();
                  
                    p.getInventory().addItem(MachineGun);
                    p.getInventory().addItem(ShotGun);
                    p.getInventory().addItem(Rifle);
             
         }
                return false;
         }
    
    } 
     
  2. Offline

    FerusGrim

    Define "isn't working".

    Code:java
    1. Player p = (Player) e.getEntity();
    2. if(p instanceof Player) {

    Check if the Entity is an instanceof a Player before casting the Entity to a Player Object.
     
  3. Offline

    BurnerDiamond

    @FerusGrim

    As in nothing is happening I changed it to this but it's still not working.

    Code now

    Code:
    package torax.events;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    
    public class Health implements Listener {
    
        public void onDamageEvent(EntityDamageEvent e) {
            if(e instanceof Player) {
                Player p = (Player) e.getEntity();
                p.sendMessage("Hi how you doing");
                if(p.getHealth() <= 10){
                    p.setHealth(20);
                }   
            }
        }
    }
       
    
     
  4. Offline

    FerusGrim

    You seem to have forgotten
    Code:java
    1. @EventHandler
    above the event.
     
  5. Offline

    BurnerDiamond

    @FerusGrim

    I deserve to be called an idiot....
     
  6. Offline

    FerusGrim

    Just keep practicing. Read some Java books. Maybe try making your own programs before using an API. But suck? Nah. Just a mistake, mate.
     
  7. Offline

    BurnerDiamond

    @FerusGrim

    I know basic Java this was just a simple mistake.

    Have a good one mate.

    Nah I'm still getting a problem.

    Not sure what it is though?

    Code:
    package torax.events;
    
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    
    public class Health implements Listener {
       
        @EventHandler
        public void onDamageEvent(EntityDamageEvent e) {
            if(e instanceof Player) {
                Player p = (Player) e.getEntity();
                p.sendMessage("Hi how you doing");
                if(p.getHealth() <= 10){
                    p.setHealth(20);
                }   
            }
        }
    }
       
    
    @FerusGrim

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 13, 2016
  8. Offline

    FerusGrim

    Ah.

    'e' is the event.

    Code:java
    1. if (e.getEntity() instanceof Player) {
     
  9. Code:java
    1.  
    2. @EventHandler
    3. public void onDamage(EntityDamageByEntityEvent event) {
    4. if(!(event.getEntity() instanceof Player)) { return; }
    5. Player player = (Player) event.getEntity();
    6. dobule damage = event.getFinalDamage();
    7. if(player.getHealth() - damage <= 0) {
    8. event.setCancelled(true);
    9. player.setHealth(20.0);
    10. }
    11. }
    12.  
     
  10. Offline

    FerusGrim

    @MaTaMoR_ Don't just write it out for him. xD
     
  11. I'm member of SpoonFeed legion !
     
  12. Offline

    FerusGrim

  13. Offline

    BurnerDiamond

    @MaTaMoR_
    @FerusGrim

    Thanks for the spoonfeed but I came up with the problem one second before you posted it!

    Code:
    package torax.events;
    
    import org.bukkit.GameMode;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.Listener;
    import org.bukkit.event.entity.EntityDamageEvent;
    
    public class Health implements Listener {
      
        @EventHandler
        public void onDamageEvent(EntityDamageEvent e) {
            if(e instanceof Player) {
                Player p = (Player) e.getEntity();
                if(p.getHealth() - e.getDamage() <= 1){
                    p.setHealth(20);
                    p.setGameMode(GameMode.CREATIVE);
                    p.setAllowFlight(true);
                }  
            }
        }
    }
      
    
    The problem now is that each time a mob burns it sends an error message to the console

    Code:
    [16:30:31 ERROR]: Could not pass event EntityDamageEvent to PaintBall v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEvent(CraftEventFactory.java:107) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:537) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:523) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:569) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.d(EntityLiving.java:1031) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.damageEntity(EntityLiving.java:675) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityMonster.damageEntity(EntityMonster.java:48) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityZombie.damageEntity(EntityZombie.java:164) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.Entity.C(Entity.java:321) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.C(EntityLiving.java:156) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityInsentient.C(EntityInsentient.java:111) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.Entity.h(Entity.java:241) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.h(EntityLiving.java:1360) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityInsentient.h(EntityInsentient.java:150) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityMonster.h(EntityMonster.java:25) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityZombie.h(EntityZombie.java:231) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.entityJoinedWorld(World.java:1418) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.playerJoinedWorld(World.java:1396) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.tickEntities(World.java:1281) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.WorldServer.tickEntities(WorldServer.java:481) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:649) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R4.entity.CraftZombie cannot be cast to org.bukkit.entity.Player
        at torax.events.Health.onDamageEvent(Health.java:13) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.6.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[?:1.6.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[?:1.6.0_65]
        at java.lang.reflect.Method.invoke(Method.java:597) ~[?:1.6.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        ... 28 more[16:30:31 ERROR]: Could not pass event EntityDamageEvent to PaintBall v1.0
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:294) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:501) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:486) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEvent(CraftEventFactory.java:107) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:537) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:523) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:569) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.d(EntityLiving.java:1031) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.damageEntity(EntityLiving.java:675) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityMonster.damageEntity(EntityMonster.java:48) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityZombie.damageEntity(EntityZombie.java:164) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.Entity.C(Entity.java:321) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.C(EntityLiving.java:156) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityInsentient.C(EntityInsentient.java:111) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.Entity.h(Entity.java:241) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityLiving.h(EntityLiving.java:1360) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityInsentient.h(EntityInsentient.java:150) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityMonster.h(EntityMonster.java:25) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.EntityZombie.h(EntityZombie.java:231) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.entityJoinedWorld(World.java:1418) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.playerJoinedWorld(World.java:1396) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.World.tickEntities(World.java:1281) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.WorldServer.tickEntities(WorldServer.java:481) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:649) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:258) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:558) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:469) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
    Caused by: java.lang.ClassCastException: org.bukkit.craftbukkit.v1_7_R4.entity.CraftZombie cannot be cast to org.bukkit.entity.Player
        at torax.events.Health.onDamageEvent(Health.java:13) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.6.0_65]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) ~[?:1.6.0_65]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) ~[?:1.6.0_65]
        at java.lang.reflect.Method.invoke(Method.java:597) ~[?:1.6.0_65]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:292) ~[craftbukkit.jar:git-Bukkit-1.7.9-R0.2-24-g07d4558-b3116jnks]
        ... 28 more
    Do I need to check if a the entity is not a (!p instanceof Player)?

    Never mind fixed it!

    Changed it to e.getEntity() instanceof Player as @FerusGrim suggested!

    "SOLVED"

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 13, 2016
  14. I think you didnt read my code.
     
Thread Status:
Not open for further replies.

Share This Page