Skip to content

Commit 22410ee

Browse files
committed
Rename merge level NON_STRICT to LENIENT
1 parent 2a34b35 commit 22410ee

9 files changed

+107
-66
lines changed

patches/api/0004-Merge-Cannon-Entities.patch

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ Subject: [PATCH] Merge Cannon Entities
66

77
diff --git a/src/main/java/me/samsuik/sakura/entity/merge/MergeLevel.java b/src/main/java/me/samsuik/sakura/entity/merge/MergeLevel.java
88
new file mode 100644
9-
index 0000000000000000000000000000000000000000..16e68720eaf2eeedb2ba9bb906c21a16fc818e89
9+
index 0000000000000000000000000000000000000000..506ea3cb8c3b965661a65f9a91903999c1eba309
1010
--- /dev/null
1111
+++ b/src/main/java/me/samsuik/sakura/entity/merge/MergeLevel.java
12-
@@ -0,0 +1,65 @@
12+
@@ -0,0 +1,64 @@
1313
+package me.samsuik.sakura.entity.merge;
1414
+
1515
+import java.util.Locale;
@@ -20,21 +20,20 @@ index 0000000000000000000000000000000000000000..16e68720eaf2eeedb2ba9bb906c21a16
2020
+ */
2121
+ NONE(-1),
2222
+ /**
23-
+ * Merge entities with the same OOE, properties and position.
24-
+ * This is safe for all use cases and won't cause breakage.
23+
+ * "STRICT" merges entities with the same properties, position, momentum and OOE.
24+
+ * This is considered safe to use, and will not break cannon mechanics.
2525
+ */
2626
+ STRICT(1),
2727
+ /**
28-
+ * Merge entities with the same properties and position.
29-
+ * If the entities are known to have merged in the past
30-
+ * this will be able to merge them together regardless of OOE.
28+
+ * "LENIENT" merges entities aggressively by tracking the entities that have
29+
+ * previously merged. This is a hybrid of "SPAWN" and "STRICT" merging, with the
30+
+ * visuals of "STRICT" merging and better merging potential of "SPAWN" merging.
3131
+ */
32-
+ NON_STRICT(2),
32+
+ LENIENT(2),
3333
+ /**
34-
+ * This will make sure of Non-Strict as a base, once the cannon
35-
+ * has past the "on spawn" merge threshold it will be deemed safe
36-
+ * for on spawn merging. This will merge all entities together on
37-
+ * spawn that have merged together in the past.
34+
+ * "SPAWN" merges entities one gametick after they have spawned. Merging is
35+
+ * only possible after it has been established that the entity is safe to
36+
+ * merge by collecting information on the entities that merge together over time.
3837
+ */
3938
+ SPAWN(3);
4039
+
@@ -95,7 +94,7 @@ index 0000000000000000000000000000000000000000..c241a3a359cad1d7c2cdb690649e0cac
9594
+ void setStacked(int stacked);
9695
+}
9796
diff --git a/src/main/java/org/bukkit/entity/FallingBlock.java b/src/main/java/org/bukkit/entity/FallingBlock.java
98-
index 95e75f5a4ccdedd3b26f8639f37de9450ed63d6b..be52a64e73e7880c6a28d8a6912923973b7cb13b 100644
97+
index 7904c716a3b0869ebf2f9b416536c59121a539a8..2479453b96a75fda2c307261f84c91034e73000d 100644
9998
--- a/src/main/java/org/bukkit/entity/FallingBlock.java
10099
+++ b/src/main/java/org/bukkit/entity/FallingBlock.java
101100
@@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull;
@@ -108,7 +107,7 @@ index 95e75f5a4ccdedd3b26f8639f37de9450ed63d6b..be52a64e73e7880c6a28d8a691292397
108107
/**
109108
* Get the Material of the falling block
110109
diff --git a/src/main/java/org/bukkit/entity/TNTPrimed.java b/src/main/java/org/bukkit/entity/TNTPrimed.java
111-
index 0813bd913c8fdb2001963ce3e82c07c2af105418..0bc227b6ba953c778ac950ec40f99276c77e880c 100644
110+
index 87e717c9ea61b0cbf536bc62fa829ddcfae5ad8c..ba84b3cbbd3358b16b21a18baa9c1812733fc144 100644
112111
--- a/src/main/java/org/bukkit/entity/TNTPrimed.java
113112
+++ b/src/main/java/org/bukkit/entity/TNTPrimed.java
114113
@@ -6,7 +6,7 @@ import org.jetbrains.annotations.Nullable;

patches/server/0003-Sakura-Configuration-Files.patch

Lines changed: 47 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -388,10 +388,10 @@ index 0000000000000000000000000000000000000000..5296d4e0a1041932e36562f42fbf3e1d
388388
+}
389389
diff --git a/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java b/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java
390390
new file mode 100644
391-
index 0000000000000000000000000000000000000000..04dc81634277d05894076a2cafde60ca35e1886e
391+
index 0000000000000000000000000000000000000000..f8770f97e3ad6c2746bc436b2b2c895cecd43996
392392
--- /dev/null
393393
+++ b/src/main/java/me/samsuik/sakura/configuration/SakuraConfigurations.java
394-
@@ -0,0 +1,251 @@
394+
@@ -0,0 +1,253 @@
395395
+package me.samsuik.sakura.configuration;
396396
+
397397
+import com.google.common.collect.Table;
@@ -417,6 +417,7 @@ index 0000000000000000000000000000000000000000..04dc81634277d05894076a2cafde60ca
417417
+import it.unimi.dsi.fastutil.objects.Reference2LongOpenHashMap;
418418
+import me.samsuik.sakura.configuration.transformation.world.V3_RenameKnockback;
419419
+import me.samsuik.sakura.configuration.transformation.world.V2_VerticalKnockbackUseDefault;
420+
+import me.samsuik.sakura.configuration.transformation.world.V4_RenameNonStrictMergeLevel;
420421
+import net.minecraft.core.RegistryAccess;
421422
+import net.minecraft.core.registries.Registries;
422423
+import net.minecraft.resources.ResourceLocation;
@@ -579,6 +580,7 @@ index 0000000000000000000000000000000000000000..04dc81634277d05894076a2cafde60ca
579580
+ final ConfigurationTransformation.VersionedBuilder versionedBuilder = Transformations.versionedBuilder();
580581
+ V2_VerticalKnockbackUseDefault.apply(versionedBuilder);
581582
+ V3_RenameKnockback.apply(versionedBuilder);
583+
+ V4_RenameNonStrictMergeLevel.apply(versionedBuilder);
582584
+ // ADD FUTURE VERSIONED TRANSFORMS TO versionedBuilder HERE
583585
+ versionedBuilder.build().apply(node);
584586
+ }
@@ -645,7 +647,7 @@ index 0000000000000000000000000000000000000000..04dc81634277d05894076a2cafde60ca
645647
+}
646648
diff --git a/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java b/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java
647649
new file mode 100644
648-
index 0000000000000000000000000000000000000000..a019905f4fb7ec8743136ca406584dbcc73801f5
650+
index 0000000000000000000000000000000000000000..0d015331a5143a0e45c4576e1ba51e50b2d46d87
649651
--- /dev/null
650652
+++ b/src/main/java/me/samsuik/sakura/configuration/WorldConfiguration.java
651653
@@ -0,0 +1,199 @@
@@ -680,7 +682,7 @@ index 0000000000000000000000000000000000000000..a019905f4fb7ec8743136ca406584dbc
680682
+public class WorldConfiguration extends ConfigurationPart {
681683
+
682684
+ private static final Logger LOGGER = LogUtils.getClassLogger();
683-
+ static final int CURRENT_VERSION = 3; // (when you change the version, change the comment, so it conflicts on rebases): rename filter bad nbt from spawn eggs
685+
+ static final int CURRENT_VERSION = 4; // (when you change the version, change the comment, so it conflicts on rebases): rename filter bad nbt from spawn eggs
684686
+
685687
+ private transient final ResourceLocation worldKey;
686688
+ WorldConfiguration(ResourceLocation worldKey) {
@@ -918,6 +920,47 @@ index 0000000000000000000000000000000000000000..efba1f83cb079d0e75904adc439b715d
918920
+ builder.addVersion(VERSION, transformationBuilder.build());
919921
+ }
920922
+}
923+
diff --git a/src/main/java/me/samsuik/sakura/configuration/transformation/world/V4_RenameNonStrictMergeLevel.java b/src/main/java/me/samsuik/sakura/configuration/transformation/world/V4_RenameNonStrictMergeLevel.java
924+
new file mode 100644
925+
index 0000000000000000000000000000000000000000..198eb5f030ec5def4d93dec51dde352261654bb5
926+
--- /dev/null
927+
+++ b/src/main/java/me/samsuik/sakura/configuration/transformation/world/V4_RenameNonStrictMergeLevel.java
928+
@@ -0,0 +1,35 @@
929+
+package me.samsuik.sakura.configuration.transformation.world;
930+
+
931+
+import org.checkerframework.checker.nullness.qual.Nullable;
932+
+import org.spongepowered.configurate.ConfigurateException;
933+
+import org.spongepowered.configurate.ConfigurationNode;
934+
+import org.spongepowered.configurate.NodePath;
935+
+import org.spongepowered.configurate.transformation.ConfigurationTransformation;
936+
+import org.spongepowered.configurate.transformation.TransformAction;
937+
+
938+
+import java.util.Locale;
939+
+
940+
+import static org.spongepowered.configurate.NodePath.path;
941+
+
942+
+public final class V4_RenameNonStrictMergeLevel implements TransformAction {
943+
+ private static final int VERSION = 4;
944+
+ private static final String OLD_LEVEL_NAME = "NON_STRICT";
945+
+ private static final String NEW_LEVEL_NAME = "LENIENT";
946+
+ private static final NodePath PATH = path("cannons", "merge-level");
947+
+ private static final V4_RenameNonStrictMergeLevel INSTANCE = new V4_RenameNonStrictMergeLevel();
948+
+
949+
+ private V4_RenameNonStrictMergeLevel() {}
950+
+
951+
+ public static void apply(ConfigurationTransformation.VersionedBuilder builder) {
952+
+ builder.addVersion(VERSION, ConfigurationTransformation.builder().addAction(PATH, INSTANCE).build());
953+
+ }
954+
+
955+
+ @Override
956+
+ public Object @Nullable [] visitPath(NodePath path, ConfigurationNode value) throws ConfigurateException {
957+
+ String level = value.getString();
958+
+ if (level != null && OLD_LEVEL_NAME.equals(level.toUpperCase(Locale.ENGLISH))) {
959+
+ value.set(NEW_LEVEL_NAME);
960+
+ }
961+
+ return null;
962+
+ }
963+
+}
921964
diff --git a/src/main/java/me/samsuik/sakura/explosion/durable/DurableMaterial.java b/src/main/java/me/samsuik/sakura/explosion/durable/DurableMaterial.java
922965
new file mode 100644
923966
index 0000000000000000000000000000000000000000..4024f9738e039ffffd560a07a2210f758879d3c0

patches/server/0018-Merge-Cannon-Entities.patch

Lines changed: 17 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -209,10 +209,10 @@ index 55e0be135ec084ee7ebe6bc7bb9323519e0cd864..51fa57e8b9d5c9ee563ec3608a437c69
209209
this.guardEntityTick(this::tickNonPassenger, entity);
210210
gameprofilerfiller.pop();
211211
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
212-
index e657b5f88195f1db2cb9a9a97f255ff23992cadd..a81dde7251255aa0966498c1c8449492dae537a9 100644
212+
index e657b5f88195f1db2cb9a9a97f255ff23992cadd..5e155cdf66701f96dd0b831603c714b5a47d74c0 100644
213213
--- a/src/main/java/net/minecraft/world/entity/Entity.java
214214
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
215-
@@ -603,6 +603,117 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
215+
@@ -603,6 +603,116 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
216216
return to.entityState() != null && to.entityState().isCurrentState(this);
217217
}
218218
// Sakura end - store entity data/state
@@ -264,31 +264,30 @@ index e657b5f88195f1db2cb9a9a97f255ff23992cadd..a81dde7251255aa0966498c1c8449492
264264
+ }
265265
+
266266
+ public final boolean tryMergeInto(@Nullable Entity entity) {
267-
+ if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.NON_STRICT) && tickCount == 0) {
267+
+ if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.LENIENT) && tickCount == 0) {
268268
+ originData = level.mergeHistory.retrievePositions(this);
269269
+ }
270270
+
271271
+ Entity mergeEntity = null;
272272
+
273273
+ if (entity == null || entity.getType() != getType()) {
274-
+ // first entity in the tick loop, we have to let it into this method so that we can retrieve the originData
275-
+ return false;
274+
+ return false; // First entity
276275
+ } else if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.SPAWN) && entity.isSafeToSpawnMerge(this)) {
277-
+ // On spawn merging, this merges entities immediately upon spawning after
278-
+ // it is considered "safe". We try to make sure it is safe by only retaining
279-
+ // positions that do not change when we're collecting information.
276+
+ // "SPAWN" merges entities one gametick after they have spawned. Merging is
277+
+ // only possible after it has been established that the entity is safe to
278+
+ // merge by collecting information on the entities that merge together over time.
280279
+ mergeEntity = entity;
281280
+ } else {
282-
+ // Strict, simple merging
283-
+ // This merges entities that are in the exact same state and sequential.
284-
+ // Sane for most use cases but as it is merging entities plugins may misbehave.
281+
+ // "STRICT" merges entities with the same properties, position, momentum and OOE.
282+
+ // This is considered safe to use, and will not break cannon mechanics.
285283
+ if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.STRICT) && compareState(entity)) {
286284
+ mergeEntity = entity;
287285
+ }
288286
+
289-
+ // Non strict merging algorithm uses information collected after entities die
290-
+ // to be able to perform more aggressive merging by already knowing the OOE.
291-
+ if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.NON_STRICT) && mergeEntity == null && originData != null) {
287+
+ // "LENIENT" merges entities aggressively by tracking the entities that have
288+
+ // previously merged. This is a hybrid of "SPAWN" and "STRICT" merging, with the
289+
+ // visuals of "STRICT" merging and better merging potential of "SPAWN" merging.
290+
+ if (mergeLevel.atLeast(me.samsuik.sakura.entity.merge.MergeLevel.LENIENT) && mergeEntity == null && originData != null) {
292291
+ mergeEntity = originData.findFirstEntityInSamePosition(this);
293292
+ }
294293
+ }
@@ -330,15 +329,15 @@ index e657b5f88195f1db2cb9a9a97f255ff23992cadd..a81dde7251255aa0966498c1c8449492
330329

331330
public Entity(EntityType<?> type, Level world) {
332331
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
333-
@@ -651,6 +762,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
332+
@@ -651,6 +761,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
334333
this.getEntityData().registrationLocked = true; // Spigot
335334
this.setPos(0.0D, 0.0D, 0.0D);
336335
this.eyeHeight = this.getEyeHeight(net.minecraft.world.entity.Pose.STANDING, this.dimensions);
337336
+ this.mergeLevel = level.sakuraConfig().cannons.mergeLevel; // Sakura
338337
}
339338

340339
public boolean isColliding(BlockPos pos, BlockState state) {
341-
@@ -2533,6 +2645,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
340+
@@ -2533,6 +2644,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
342341
nbttagcompound.putBoolean("Paper.FreezeLock", true);
343342
}
344343
// Paper end
@@ -350,7 +349,7 @@ index e657b5f88195f1db2cb9a9a97f255ff23992cadd..a81dde7251255aa0966498c1c8449492
350349
return nbttagcompound;
351350
} catch (Throwable throwable) {
352351
CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT");
353-
@@ -2680,6 +2797,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
352+
@@ -2680,6 +2796,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
354353
freezeLocked = nbt.getBoolean("Paper.FreezeLock");
355354
}
356355
// Paper end
@@ -362,7 +361,7 @@ index e657b5f88195f1db2cb9a9a97f255ff23992cadd..a81dde7251255aa0966498c1c8449492
362361

363362
} catch (Throwable throwable) {
364363
CrashReport crashreport = CrashReport.forThrowable(throwable, "Loading entity NBT");
365-
@@ -4889,6 +5011,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
364+
@@ -4889,6 +5010,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
366365
// Paper end - rewrite chunk system
367366
CraftEventFactory.callEntityRemoveEvent(this, cause);
368367
// CraftBukkit end

patches/server/0022-Optimise-Fast-Movement.patch

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Optimise Fast Movement
55

66

77
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
8-
index a81dde7251255aa0966498c1c8449492dae537a9..08a5558679da5602f05f2f052cb841d008d866cc 100644
8+
index 5e155cdf66701f96dd0b831603c714b5a47d74c0..f6ce2eea92bbea846ec62c7406d19cb3423d0d8d 100644
99
--- a/src/main/java/net/minecraft/world/entity/Entity.java
1010
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
11-
@@ -1236,6 +1236,95 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
11+
@@ -1235,6 +1235,95 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
1212
}
1313
// Paper end - detailed watchdog information
1414

@@ -104,7 +104,7 @@ index a81dde7251255aa0966498c1c8449492dae537a9..08a5558679da5602f05f2f052cb841d0
104104
public void move(MoverType movementType, Vec3 movement) {
105105
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
106106
// Paper start - detailed watchdog information
107-
@@ -1614,6 +1703,95 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
107+
@@ -1613,6 +1702,95 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
108108
return offsetFactor;
109109
}
110110

@@ -214,7 +214,7 @@ index 99a0bec7eb5be527b41248b365b037a5e42a3270..16a8b667f50700a85f1c14f3a7ed3098
214214
if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) {
215215
if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) {
216216
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
217-
index 30c3e31148d23998ce9007691c30d1d518a2b86d..491dab62dda6e24bda5b01364a2adbf51ad74ef6 100644
217+
index 8acef487b0579febb3497cc88b23c4fc74492571..9acbc8d5a0c25d7613bfc0c21757ca563954cc0a 100644
218218
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
219219
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
220220
@@ -96,7 +96,7 @@ public class PrimedTnt extends Entity implements TraceableEntity {

patches/server/0024-isPushedByFluid-API.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,18 @@ Subject: [PATCH] isPushedByFluid API
55

66

77
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
8-
index 08a5558679da5602f05f2f052cb841d008d866cc..24dcf92c85d4453564d3ca51687a59497d8182fe 100644
8+
index f6ce2eea92bbea846ec62c7406d19cb3423d0d8d..09f38e36e89cb75a45bf88c9779960fed9183930 100644
99
--- a/src/main/java/net/minecraft/world/entity/Entity.java
1010
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
11-
@@ -714,6 +714,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
11+
@@ -713,6 +713,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
1212
}
1313
}
1414
// Sakura end - cannon entity merging
1515
+ public boolean pushedByFluid = true; // Sakura - entity pushed by fluid api
1616

1717
public Entity(EntityType<?> type, Level world) {
1818
this.id = Entity.ENTITY_COUNTER.incrementAndGet();
19-
@@ -4252,7 +4253,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
19+
@@ -4251,7 +4252,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
2020
}
2121

2222
public boolean isPushedByFluid() {

patches/server/0027-Optimise-TNT-fluid-state-and-pushing.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Optimise TNT fluid state and pushing
55

66

77
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
8-
index 24dcf92c85d4453564d3ca51687a59497d8182fe..e3b6ef30a3c983e7e9b6bd83bc7baa600b16d850 100644
8+
index 09f38e36e89cb75a45bf88c9779960fed9183930..a4dc4154550bb4bd30d3e548f145cff5c693dc18 100644
99
--- a/src/main/java/net/minecraft/world/entity/Entity.java
1010
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
11-
@@ -2199,7 +2199,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
11+
@@ -2198,7 +2198,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
1212
return this.isInWater() || flag;
1313
}
1414

@@ -18,7 +18,7 @@ index 24dcf92c85d4453564d3ca51687a59497d8182fe..e3b6ef30a3c983e7e9b6bd83bc7baa60
1818

1919
if (entity instanceof Boat) {
2020
diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
21-
index 403cfb14dff46a405a1476f6806020e9a2c9a941..b4b509bcdd470ff21bbe6e0c3f58848c168bc120 100644
21+
index 37c719bd4baf3c38e3e89728e3f9a413743c2241..76ac9d119933b0558b28eff3bee7c96f92c5c642 100644
2222
--- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
2323
+++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java
2424
@@ -94,6 +94,19 @@ public class PrimedTnt extends Entity implements TraceableEntity {

0 commit comments

Comments
 (0)