From c73732994c7370bb66eb09b9ed9da12207ff5e1d Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 13 Aug 2022 02:19:34 +0200 Subject: [PATCH] Make EntityCombustByBlockEvent be fired for some entities that aren't subclasses of LivingEntity, consistent with the way it is fired for entities that are combusted by BaseFireBlock --- ...stByBlockEvent-be-fired-for-some-ent.patch | 52 +++++++++++++++++++ 1 file changed, 52 insertions(+) create mode 100644 patches/server/0935-Make-EntityCombustByBlockEvent-be-fired-for-some-ent.patch diff --git a/patches/server/0935-Make-EntityCombustByBlockEvent-be-fired-for-some-ent.patch b/patches/server/0935-Make-EntityCombustByBlockEvent-be-fired-for-some-ent.patch new file mode 100644 index 0000000000..a2ef3ebd4f --- /dev/null +++ b/patches/server/0935-Make-EntityCombustByBlockEvent-be-fired-for-some-ent.patch @@ -0,0 +1,52 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Alex +Date: Sat, 13 Aug 2022 02:13:05 +0200 +Subject: [PATCH] Make EntityCombustByBlockEvent be fired for some entities + that aren't subclasses of LivingEntity, consistent with the way it is fired + for entities that are combusted by BaseFireBlock + + +diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java +index 2283cdb3f90215e741e9fd4a408c363366cf4763..10d34b33029afdcba77f582545ce27347797b636 100644 +--- a/src/main/java/net/minecraft/world/entity/Entity.java ++++ b/src/main/java/net/minecraft/world/entity/Entity.java +@@ -80,6 +80,11 @@ import net.minecraft.world.entity.animal.AbstractFish; + import net.minecraft.world.entity.animal.Animal; + import net.minecraft.world.entity.item.ItemEntity; + import net.minecraft.world.entity.player.Player; ++import net.minecraft.world.entity.projectile.AbstractArrow; ++import net.minecraft.world.entity.projectile.AbstractHurtingProjectile; ++import net.minecraft.world.entity.projectile.ShulkerBullet; ++import net.minecraft.world.entity.projectile.ThrowableProjectile; ++import net.minecraft.world.entity.vehicle.AbstractMinecart; + import net.minecraft.world.entity.vehicle.Boat; + import net.minecraft.world.item.Item; + import net.minecraft.world.item.ItemStack; +@@ -888,7 +893,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + public void lavaHurt() { + if (!this.fireImmune()) { + // CraftBukkit start - Fallen in lava TODO: this event spams! +- if ((this instanceof net.minecraft.world.entity.LivingEntity || this instanceof net.minecraft.world.entity.item.ItemEntity) && this.remainingFireTicks <= 0) { // Paper - EntityCombustByBlockEvent should be called when ItemEntity is burned by lava ++ if (this.remainingFireTicks <= 0 && shouldCallEntityCombustEvent()) { // Paper - EntityCombustByBlockEvent should be called for when an entity is combusted by lava consistent with how it is called for BaseFireBlock + // not on fire yet + org.bukkit.block.Block damager = (this.lastLavaContact == null) ? null : org.bukkit.craftbukkit.block.CraftBlock.at(level, lastLavaContact); + org.bukkit.entity.Entity damagee = this.getBukkitEntity(); +@@ -912,6 +917,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource { + } + } + ++ // Paper start - a helper method for determining whether an entity combust event should be called ++ private boolean shouldCallEntityCombustEvent() { ++ return (this instanceof net.minecraft.world.entity.LivingEntity) || ++ (this instanceof AbstractArrow) || ++ (this instanceof AbstractHurtingProjectile) || ++ (this instanceof ShulkerBullet) || ++ (this instanceof ThrowableProjectile) || ++ (this instanceof AbstractMinecart) || ++ (this instanceof Boat); ++ } ++ // Paper end ++ + public void setSecondsOnFire(int seconds) { + // CraftBukkit start + this.setSecondsOnFire(seconds, true);