diff --git a/patches/server/0020-Optimised-Explosions.patch b/patches/server/0020-Optimised-Explosions.patch index 3d2871b..b34be53 100644 --- a/patches/server/0020-Optimised-Explosions.patch +++ b/patches/server/0020-Optimised-Explosions.patch @@ -680,7 +680,7 @@ index ed0234d6a2718d35af635c4b74243bb2afd40769..2800af98260ebdab107466c596d2ec8c @Override diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa590454a8c 100644 +index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..87a61b091bb839460394e285e030244fd6140379 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -55,14 +55,16 @@ public class Explosion { @@ -769,7 +769,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 ++missedRays; } } -@@ -375,12 +388,76 @@ public class Explosion { +@@ -375,12 +388,80 @@ public class Explosion { return (float)missedRays / (float)totalRays; } // Paper end - optimise collisions @@ -793,7 +793,11 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 + + protected void cleanBlockCache(List blocks) { + for (BlockPos blow : blocks) { -+ blockCache.get(blow.asLong()).shouldExplode = null; ++ ExplosionBlockCache cache = blockCache.get(blow.asLong()); ++ // May be null if the cache is invalidated then retrieved from the ExplosionBlockCache[] ++ if (cache != null) { ++ cache.shouldExplode = null; ++ } + } + } + @@ -847,7 +851,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 AABB axisalignedbb = entity.getBoundingBox(); double d0 = 1.0D / ((axisalignedbb.maxX - axisalignedbb.minX) * 2.0D + 1.0D); double d1 = 1.0D / ((axisalignedbb.maxY - axisalignedbb.minY) * 2.0D + 1.0D); -@@ -400,7 +477,11 @@ public class Explosion { +@@ -400,7 +481,11 @@ public class Explosion { double d10 = Mth.lerp(d7, axisalignedbb.minZ, axisalignedbb.maxZ); Vec3 vec3d1 = new Vec3(d8 + d3, d9, d10 + d4); @@ -860,7 +864,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 ++i; } -@@ -429,7 +510,29 @@ public class Explosion { +@@ -429,7 +514,29 @@ public class Explosion { return; } // CraftBukkit end @@ -890,7 +894,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 Set set = Sets.newHashSet(); boolean flag = true; -@@ -437,14 +540,7 @@ public class Explosion { +@@ -437,14 +544,7 @@ public class Explosion { int j; // Paper start - optimise explosions @@ -906,7 +910,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 // use initial cache value that is most likely to be used: the source position final ExplosionBlockCache initialCache; { -@@ -541,10 +637,15 @@ public class Explosion { +@@ -541,10 +641,15 @@ public class Explosion { } this.toBlow.addAll(set); @@ -924,7 +928,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 int l = Mth.floor(this.y - (double) f2 - 1.0D); int i1 = Mth.floor(this.y + (double) f2 + 1.0D); int j1 = Mth.floor(this.z - (double) f2 - 1.0D); -@@ -590,11 +691,11 @@ public class Explosion { +@@ -590,11 +695,11 @@ public class Explosion { for (EnderDragonPart entityComplexPart : ((EnderDragon) entity).subEntities) { // Calculate damage separately for each EntityComplexPart if (list.contains(entityComplexPart)) { @@ -938,7 +942,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 } if (entity.lastDamageCancelled) { // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Skip entity if damage event was cancelled -@@ -655,9 +756,7 @@ public class Explosion { +@@ -655,9 +760,7 @@ public class Explosion { } } @@ -949,7 +953,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 } public void finalizeExplosion(boolean particles) { -@@ -725,6 +824,12 @@ public class Explosion { +@@ -725,6 +828,12 @@ public class Explosion { if (this.wasCanceled) { return; } @@ -962,7 +966,7 @@ index 39c30a295df9dfbc3c861f1678a958ef2ed2ba93..f7b2ebc636b8f01654ac917e2b9c4aa5 // CraftBukkit end objectlistiterator = this.toBlow.iterator(); -@@ -871,15 +976,22 @@ public class Explosion { +@@ -871,15 +980,22 @@ public class Explosion { private BlockInteraction() {} } // Paper start - Optimize explosions diff --git a/patches/server/0030-Explosion-Durable-Blocks.patch b/patches/server/0030-Explosion-Durable-Blocks.patch index 25a4bd3..c463b29 100644 --- a/patches/server/0030-Explosion-Durable-Blocks.patch +++ b/patches/server/0030-Explosion-Durable-Blocks.patch @@ -124,7 +124,7 @@ index a8008c7550488be34b51f4280f5569170b1ebd1d..2e5a46b9d27b930870c68dbde93d8731 public String getDescriptionId() { return this.getOrCreateDescriptionId(); diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index f7b2ebc636b8f01654ac917e2b9c4aa590454a8c..08c7109b0bb613388b5a98a5d312b4ba32770fbf 100644 +index 87a61b091bb839460394e285e030244fd6140379..5b4286a53c0521c23fc4c36ecb5e53ca15dbfb15 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -212,6 +212,17 @@ public class Explosion { @@ -145,7 +145,7 @@ index f7b2ebc636b8f01654ac917e2b9c4aa590454a8c..08c7109b0bb613388b5a98a5d312b4ba ret = new ExplosionBlockCache( key, pos, blockState, fluidState, (resistance.orElse(ZERO_RESISTANCE).floatValue() + 0.3f) * 0.3f, -@@ -838,6 +849,16 @@ public class Explosion { +@@ -842,6 +853,16 @@ public class Explosion { // CraftBukkit start - TNTPrimeEvent BlockState iblockdata = this.level.getBlockState(blockposition); Block block = iblockdata.getBlock(); diff --git a/patches/server/0037-Consistent-Explosion-Radius.patch b/patches/server/0037-Consistent-Explosion-Radius.patch index 839d6f8..2aa148c 100644 --- a/patches/server/0037-Consistent-Explosion-Radius.patch +++ b/patches/server/0037-Consistent-Explosion-Radius.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Consistent Explosion Radius diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index c247797a2e3c910836d7b9785b051e90a9840e89..0c9f364922fe28cb099add25d0589dfab966f51e 100644 +index 97bcc95563fcde50b7d13183f94d41b80128c70c..144c2c9c11c3df3c8a95e252458828154728f555 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -586,7 +586,7 @@ public class Explosion { +@@ -590,7 +590,7 @@ public class Explosion { double d2 = CACHED_RAYS[ray + 2]; ray += 3; // Paper end - optimise explosions diff --git a/patches/server/0040-Configure-cannon-physics-by-version.patch b/patches/server/0040-Configure-cannon-physics-by-version.patch index 55bfcbb..34847e5 100644 --- a/patches/server/0040-Configure-cannon-physics-by-version.patch +++ b/patches/server/0040-Configure-cannon-physics-by-version.patch @@ -458,7 +458,7 @@ index 19397e2556a3cdc7180a5f8889aefb5ef23715b7..26fc6a8018cfde3c219a7d828f743663 // Paper end - Option to prevent TNT from moving in water } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f7633843adc8af 100644 +index 144c2c9c11c3df3c8a95e252458828154728f555..6adf7e5945dcf8d11b133c7497a2c1eea0990860 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -74,6 +74,7 @@ public class Explosion { @@ -477,7 +477,7 @@ index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f76338 } // Paper start - optimise collisions -@@ -495,9 +497,17 @@ public class Explosion { +@@ -499,9 +501,17 @@ public class Explosion { Vec3 vec3d1 = new Vec3(d8 + d3, d9, d10 + d4); // Sakura start @@ -497,7 +497,7 @@ index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f76338 // Sakura end ++i; } -@@ -611,6 +621,10 @@ public class Explosion { +@@ -615,6 +625,10 @@ public class Explosion { } if (cachedBlock.outOfWorld) { @@ -508,7 +508,7 @@ index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f76338 break; } -@@ -681,10 +695,17 @@ public class Explosion { +@@ -685,10 +699,17 @@ public class Explosion { if (d7 <= 1.0D) { double d8 = entity.getX() - this.x; @@ -527,7 +527,7 @@ index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f76338 if (d11 != 0.0D) { d8 /= d11; d9 /= d11; -@@ -1012,7 +1033,14 @@ public class Explosion { +@@ -1016,7 +1037,14 @@ public class Explosion { return data.density(); } diff --git a/patches/server/0044-Allow-explosions-to-destroy-lava.patch b/patches/server/0044-Allow-explosions-to-destroy-lava.patch index 0653e9e..571f597 100644 --- a/patches/server/0044-Allow-explosions-to-destroy-lava.patch +++ b/patches/server/0044-Allow-explosions-to-destroy-lava.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow explosions to destroy lava diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index e10a78213da1514f54e0659960f7633843adc8af..9c35e3cd73eb324c36d383c9410f1c3a4e23d978 100644 +index 6adf7e5945dcf8d11b133c7497a2c1eea0990860..0b90b05bd538186f8f1d51376560dd6485fdce57 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -228,6 +228,10 @@ public class Explosion { @@ -19,7 +19,7 @@ index e10a78213da1514f54e0659960f7633843adc8af..9c35e3cd73eb324c36d383c9410f1c3a } // Sakura end - explosion durable blocks -@@ -449,6 +453,12 @@ public class Explosion { +@@ -453,6 +457,12 @@ public class Explosion { return false; } diff --git a/patches/server/0056-Add-explosions-dropping-items-config.patch b/patches/server/0056-Add-explosions-dropping-items-config.patch index a2e3a5e..ce9f63e 100644 --- a/patches/server/0056-Add-explosions-dropping-items-config.patch +++ b/patches/server/0056-Add-explosions-dropping-items-config.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add explosions dropping items config diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 9c35e3cd73eb324c36d383c9410f1c3a4e23d978..d1edbd59588c9a83cff0bf191c3791550adc7384 100644 +index 0b90b05bd538186f8f1d51376560dd6485fdce57..7d68fc98f2fe995391c57a220f7f5986aea07166 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -911,6 +911,12 @@ public class Explosion { +@@ -915,6 +915,12 @@ public class Explosion { }); }