Mirror von
https://github.com/PaperMC/Paper.git
synchronisiert 2024-12-19 21:10:10 +01:00
Fixed ENTITY_DAMAGE involving slimes (per DHowet)
Dieser Commit ist enthalten in:
Ursprung
51be9e77c6
Commit
c97fa40d2b
@ -357,6 +357,22 @@ public abstract class EntityHuman extends EntityLiving {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CraftBukkit start - this is here instead of EntityMonster because EntityLiving(s) that aren't monsters
|
||||||
|
// also damage the player in this way. For example, EntitySlime.
|
||||||
|
if (entity instanceof EntityLiving) {
|
||||||
|
CraftServer server = ((WorldServer) this.world).getServer();
|
||||||
|
org.bukkit.entity.Entity damager = entity.getBukkitEntity();
|
||||||
|
org.bukkit.entity.Entity damagee = this.getBukkitEntity();
|
||||||
|
DamageCause damageType = EntityDamageEvent.DamageCause.ENTITY_ATTACK;
|
||||||
|
EntityDamageByEntityEvent event = new EntityDamageByEntityEvent(damager, damagee, damageType, i);
|
||||||
|
server.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// CraftBukkit end
|
||||||
|
|
||||||
return i == 0 ? false : super.a(entity, i);
|
return i == 0 ? false : super.a(entity, i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -79,8 +79,10 @@ public class EntityMonster extends EntityCreature implements IMonster {
|
|||||||
protected void a(Entity entity, float f) {
|
protected void a(Entity entity, float f) {
|
||||||
if ((double) f < 1.5D && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) {
|
if ((double) f < 1.5D && entity.boundingBox.e > this.boundingBox.b && entity.boundingBox.b < this.boundingBox.e) {
|
||||||
this.attackTicks = 20;
|
this.attackTicks = 20;
|
||||||
// CraftBukkit start
|
// CraftBukkit start - this is still duplicated here and EntityHuman because it's possible for an EntityMonster
|
||||||
if (entity instanceof EntityLiving) {
|
// to damage another EntityMonster, and we want to catch those events.
|
||||||
|
// This does not fire events for slime attacks, as they're not an EntityMonster.
|
||||||
|
if (entity instanceof EntityLiving && !(entity instanceof EntityHuman)) {
|
||||||
CraftServer server = ((WorldServer) this.world).getServer();
|
CraftServer server = ((WorldServer) this.world).getServer();
|
||||||
org.bukkit.entity.Entity damager = this.getBukkitEntity();
|
org.bukkit.entity.Entity damager = this.getBukkitEntity();
|
||||||
org.bukkit.entity.Entity damagee = (entity == null) ? null : entity.getBukkitEntity();
|
org.bukkit.entity.Entity damagee = (entity == null) ? null : entity.getBukkitEntity();
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren