[SPIGOT-2458] EntityDamageEvent fired twice Created: 27/Jun/16  Updated: 27/Jun/16  Resolved: 27/Jun/16

Status: Resolved
Project: Spigot
Component/s: None
Affects Version/s: None
Fix Version/s: None

Type: Bug Priority: Minor
Reporter: AverageBloke Assignee: Unassigned
Resolution: Cannot Reproduce Votes: 0
Labels: 1.10, 1.10.2, spigot

Attachments: PNG File 2016-06-27_07.48.59.png    
Plugin: -

 Description   

EntityDamageEvent and EntityDamageByEntityEvent are being fired twice.
This causes some problems in my plugin development.



 Comments   
Comment by AverageBloke [ 27/Jun/16 ]

Thank you for your helpful assistance, it turns out I've registered the listeners multiple times, like you said, sorry for the trouble!

Comment by md_5 [ 27/Jun/16 ]

I think you are double registering your listeners. Note how the events are the same hash code.

Comment by AverageBloke [ 27/Jun/16 ]

My bad and sorry for annoying.
Is there something I can do to figure out exactly why this may be happening? all I'm doing is listening for the damage event, and there are no other plugins.
I copy/pasted your code, and this is the output:

[10:09:28 INFO]: org.bukkit.event.entity.EntityDamageByEntityEvent@79315a72[damager=CraftPlayer

{name=GamePayers},modifiers={BASE=7.0, BLOCKING=-0.0, ARMOR=-0.0, RESISTANCE=-0.0, MAGIC=-0.0, ABSORPTION=-0.0},modifierFunctions={BASE=constant(-0.0), BLOCKING=net.minecraft.server.v1_10_R1.EntityLiving$2@55ca1481, ARMOR=net.minecraft.server.v1_10_R1.EntityLiving$3@2dfbe56f, RESISTANCE=net.minecraft.server.v1_10_R1.EntityLiving$4@7296ee67, MAGIC=net.minecraft.server.v1_10_R1.EntityLiving$5@107d88d, ABSORPTION=net.minecraft.server.v1_10_R1.EntityLiving$6@46cba30},originals={BASE=7.0, BLOCKING=-0.0, ARMOR=-0.0, RESISTANCE=-0.0, MAGIC=-0.0, ABSORPTION=-0.0},cancelled=false,cause=ENTITY_ATTACK,entity=CraftPlayer{name=McRonalds},name=<null>,async=false]
[10:09:28 INFO]: org.bukkit.event.entity.EntityDamageByEntityEvent@79315a72[damager=CraftPlayer{name=GamePayers}

,modifiers=

{BASE=7.0, BLOCKING=-0.0, ARMOR=-0.0, RESISTANCE=-0.0, MAGIC=-0.0, ABSORPTION=-0.0},modifierFunctions={BASE=constant(-0.0), BLOCKING=net.minecraft.server.v1_10_R1.EntityLiving$2@55ca1481, ARMOR=net.minecraft.server.v1_10_R1.EntityLiving$3@2dfbe56f, RESISTANCE=net.minecraft.server.v1_10_R1.EntityLiving$4@7296ee67, MAGIC=net.minecraft.server.v1_10_R1.EntityLiving$5@107d88d, ABSORPTION=net.minecraft.server.v1_10_R1.EntityLiving$6@46cba30},originals={BASE=7.0, BLOCKING=-0.0, ARMOR=-0.0, RESISTANCE=-0.0, MAGIC=-0.0, ABSORPTION=-0.0}

,cancelled=true,cause=ENTITY_ATTACK,entity=CraftPlayer

{name=McRonalds}

,name=<null>,async=false]

Comment by md_5 [ 27/Jun/16 ]

See my above code....

Comment by AverageBloke [ 27/Jun/16 ]

Have you tried broadcasting a message when the event gets fired? The player gets damaged once, but it will broadcast 2 messages. Alternatively, send a message to the player, and you'll notice 2 messages pop up.

Comment by md_5 [ 27/Jun/16 ]

Well I cannot reproduce. The above code fires one event.

Comment by AverageBloke [ 27/Jun/16 ]

I have no other plugins running on the server. I've noticed that this happens to other users aswell.

Comment by md_5 [ 27/Jun/16 ]

Cannot reproduce.
Maybe you have a plugin firing fake damage events?

    @EventHandler
    public void damage(EntityDamageEvent event)
    {
        getServer().broadcastMessage( ReflectionToStringBuilder.toString( event ) );
        event.setCancelled( true );
    }
Comment by AverageBloke [ 27/Jun/16 ]

Code to reproduce the issue:

@EventHandler
public void onEntityDamage(EntityDamageEvent event) {
	if (event.getEntity() instanceof Player) {
		Bukkit.broadcastMessage("Damage: " + event.getDamage() + "  FinalDamage: " + event.getFinalDamage() + "  Cause: " + event.getCause().toString());
		event.setCancelled(true);
	}
}
Generated at Tue Apr 15 09:41:56 UTC 2025 using Jira 10.3.3#10030003-sha1:d220e3fefc8dfc6d47f522d3b9a20c1455e12b7b.