aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch')
-rw-r--r--patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch55
1 files changed, 55 insertions, 0 deletions
diff --git a/patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch b/patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch
new file mode 100644
index 0000000000..073f462bcf
--- /dev/null
+++ b/patch-remap/og/net/minecraft/world/entity/item/EntityTNTPrimed.patch
@@ -0,0 +1,55 @@
+--- a/net/minecraft/world/entity/item/EntityTNTPrimed.java
++++ b/net/minecraft/world/entity/item/EntityTNTPrimed.java
+@@ -19,6 +19,11 @@
+ import net.minecraft.world.level.block.Blocks;
+ import net.minecraft.world.level.block.state.IBlockData;
+
++// CraftBukkit start;
++import org.bukkit.craftbukkit.event.CraftEventFactory;
++import org.bukkit.event.entity.ExplosionPrimeEvent;
++// CraftBukkit end
++
+ public class EntityTNTPrimed extends Entity implements TraceableEntity {
+
+ private static final DataWatcherObject<Integer> DATA_FUSE_ID = DataWatcher.defineId(EntityTNTPrimed.class, DataWatcherRegistry.INT);
+@@ -28,6 +33,8 @@
+ public static final String TAG_FUSE = "fuse";
+ @Nullable
+ public EntityLiving owner;
++ public float yield = 4; // CraftBukkit - add field
++ public boolean isIncendiary = false; // CraftBukkit - add field
+
+ public EntityTNTPrimed(EntityTypes<? extends EntityTNTPrimed> entitytypes, World world) {
+ super(entitytypes, world);
+@@ -79,10 +86,13 @@
+
+ this.setFuse(i);
+ if (i <= 0) {
+- this.discard();
++ // CraftBukkit start - Need to reverse the order of the explosion and the entity death so we have a location for the event
++ // this.discard();
+ if (!this.level().isClientSide) {
+ this.explode();
+ }
++ this.discard();
++ // CraftBukkit end
+ } else {
+ this.updateInWaterStateAndDoFluidPushing();
+ if (this.level().isClientSide) {
+@@ -93,9 +103,14 @@
+ }
+
+ private void explode() {
+- float f = 4.0F;
++ // CraftBukkit start
++ // float f = 4.0F;
++ ExplosionPrimeEvent event = CraftEventFactory.callExplosionPrimeEvent((org.bukkit.entity.Explosive)this.getBukkitEntity());
+
+- this.level().explode(this, this.getX(), this.getY(0.0625D), this.getZ(), 4.0F, World.a.TNT);
++ if (!event.isCancelled()) {
++ this.level().explode(this, this.getX(), this.getY(0.0625D), this.getZ(), event.getRadius(), event.getFire(), World.a.TNT);
++ }
++ // CraftBukkit end
+ }
+
+ @Override