diff --git a/patches/server/0017-Add-utility-methods-to-EntitySlices.patch b/patches/server/0017-Add-utility-methods-to-EntitySlices.patch index 20fe3a0..b124d79 100644 --- a/patches/server/0017-Add-utility-methods-to-EntitySlices.patch +++ b/patches/server/0017-Add-utility-methods-to-EntitySlices.patch @@ -40,24 +40,3 @@ index 2d79633d86007c7d40eecf5f9271fa3f351b72b5..d917a19c838ed3d74322abd85e1f737e public void getEntities(final Entity except, final AABB box, final List into, final Predicate predicate) { if (this.count == 0) { -diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 89a6fc46b6cc2d0a2e3192cfd258cf358ffb25ca..cb0197f9fbdd32f6338926cc4c45c26fd673a121 100644 ---- a/src/main/java/net/minecraft/world/level/Level.java -+++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -222,6 +222,16 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - - public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api - -+ // Sakura start - add utility method for accessing ChunkEntitySlices -+ public final Entity[] getSectionEntities(int chunkX, int chunkY, int chunkZ) { -+ var slices = ((ServerLevel)this).getEntityLookup().getChunk(chunkX, chunkZ); -+ if (slices == null) { -+ return new Entity[0]; -+ } -+ return slices.getSectionEntities(chunkY); -+ } -+ // Sakura end - add utility method for accessing ChunkEntitySlices -+ - protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor - this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot - this.paperConfig = paperWorldConfigCreator.apply(this.spigotConfig); // Paper - create paper world config diff --git a/patches/server/0018-Store-Entity-Data-State.patch b/patches/server/0018-Store-Entity-Data-State.patch index 207b7a4..61faef7 100644 --- a/patches/server/0018-Store-Entity-Data-State.patch +++ b/patches/server/0018-Store-Entity-Data-State.patch @@ -91,10 +91,10 @@ index 9a7b9f72531dfaecb55c089eea412e81ee00ef65..88735691892aa19f30d4e686e88a3c09 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index cb0197f9fbdd32f6338926cc4c45c26fd673a121..5927568271168548be5b2a2113764d8549ed2b17 100644 +index 89a6fc46b6cc2d0a2e3192cfd258cf358ffb25ca..a9cf8f2cd435f38fda48f2c4d0a7732a589ce455 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1332,6 +1332,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1322,6 +1322,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public void guardEntityTick(Consumer tickConsumer, T entity) { try { diff --git a/patches/server/0019-Merge-Cannon-Entities.patch b/patches/server/0019-Merge-Cannon-Entities.patch index 605c99f..f8030c0 100644 --- a/patches/server/0019-Merge-Cannon-Entities.patch +++ b/patches/server/0019-Merge-Cannon-Entities.patch @@ -464,13 +464,13 @@ index 46680f551f83b91581440d89a1c35c048db03638..72fb1690e6a0692b453b9c0997a6eb85 this.explode(); } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 5927568271168548be5b2a2113764d8549ed2b17..1bc20269707a1c0a741666c0fb4b90ffc93560a7 100644 +index a9cf8f2cd435f38fda48f2c4d0a7732a589ce455..4176c5ef6489d74d1063e8f857a085270a188e28 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -231,6 +231,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - return slices.getSectionEntities(chunkY); - } - // Sakura end - add utility method for accessing ChunkEntitySlices +@@ -221,6 +221,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + public abstract ResourceKey getTypeKey(); + + public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api + public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor diff --git a/patches/server/0020-Optimised-Explosions.patch b/patches/server/0020-Optimised-Explosions.patch index 0bb5670..630658f 100644 --- a/patches/server/0020-Optimised-Explosions.patch +++ b/patches/server/0020-Optimised-Explosions.patch @@ -1007,18 +1007,18 @@ index f529f5d0f28533ec89f3ee712e59745991d068ee..d0ff7710577c1cfedae494796e6db420 public float getEntityDamageAmount(Explosion explosion, Entity entity, double seenPercent) { // Paper end - actually optimise explosions diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 1bc20269707a1c0a741666c0fb4b90ffc93560a7..e8de10a604892a4b571c643aaf479add13e95804 100644 +index 4176c5ef6489d74d1063e8f857a085270a188e28..dc376192830321e173036da00897df2c6fbb7d5f 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -232,6 +232,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - } - // Sakura end - add utility method for accessing ChunkEntitySlices +@@ -222,6 +222,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + + public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging + public final me.samsuik.sakura.explosion.DensityCache densityCache = new me.samsuik.sakura.explosion.DensityCache(); // Sakura - specialised density cache for swinging explosions protected Level(WritableLevelData worlddatamutable, ResourceKey resourcekey, RegistryAccess iregistrycustom, Holder holder, Supplier supplier, boolean flag, boolean flag1, long i, int j, org.bukkit.generator.ChunkGenerator gen, org.bukkit.generator.BiomeProvider biomeProvider, org.bukkit.World.Environment env, java.util.function.Function paperWorldConfigCreator, Supplier sakuraWorldConfigCreator, java.util.concurrent.Executor executor) { // Sakura // Paper - create paper world config; Async-Anti-Xray: Pass executor this.spigotConfig = new org.spigotmc.SpigotWorldConfig(((net.minecraft.world.level.storage.PrimaryLevelData) worlddatamutable).getLevelName()); // Spigot -@@ -1420,7 +1421,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1410,7 +1411,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } Explosion.BlockInteraction explosion_effect1 = explosion_effect; diff --git a/patches/server/0022-Limited-Get-Entities.patch b/patches/server/0022-Limited-Get-Entities.patch index e9b26eb..8f7e1ca 100644 --- a/patches/server/0022-Limited-Get-Entities.patch +++ b/patches/server/0022-Limited-Get-Entities.patch @@ -329,10 +329,10 @@ index d917a19c838ed3d74322abd85e1f737e852b5d7b..1ba10713c85d6f19f075cc267602a04c if (this.count == 0) { return; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index e8de10a604892a4b571c643aaf479add13e95804..f759e3903a71d7a92544a1e0967c69bfba18b6e4 100644 +index dc376192830321e173036da00897df2c6fbb7d5f..1b018d329fe0ad102e9d7a47d0f6668ad9327591 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -234,6 +234,39 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -224,6 +224,39 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging public final me.samsuik.sakura.explosion.DensityCache densityCache = new me.samsuik.sakura.explosion.DensityCache(); // Sakura - specialised density cache for swinging explosions diff --git a/patches/server/0030-Explosion-Durable-Blocks.patch b/patches/server/0030-Explosion-Durable-Blocks.patch index 14cb292..e0dd3c4 100644 --- a/patches/server/0030-Explosion-Durable-Blocks.patch +++ b/patches/server/0030-Explosion-Durable-Blocks.patch @@ -163,11 +163,11 @@ index f7b2ebc636b8f01654ac917e2b9c4aa590454a8c..08c7109b0bb613388b5a98a5d312b4ba Entity sourceEntity = this.source == null ? null : this.source; BlockPos sourceBlock = sourceEntity == null ? BlockPos.containing(this.x, this.y, this.z) : null; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index f759e3903a71d7a92544a1e0967c69bfba18b6e4..d954e71e6e3cf2f77af3101a42806c1b4ad5b10c 100644 +index 1b018d329fe0ad102e9d7a47d0f6668ad9327591..5b1c87a10140bb407f3c87b5f230e657b629f4bb 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -233,6 +233,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { - // Sakura end - add utility method for accessing ChunkEntitySlices +@@ -223,6 +223,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { + public final it.unimi.dsi.fastutil.longs.Long2IntMap minimalTNT = new it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap(); // Sakura - visibility api public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging public final me.samsuik.sakura.explosion.DensityCache densityCache = new me.samsuik.sakura.explosion.DensityCache(); // Sakura - specialised density cache for swinging explosions + public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks diff --git a/patches/server/0032-Cache-Vanillia-and-Eigen-Redstone.patch b/patches/server/0032-Cache-Vanillia-and-Eigen-Redstone.patch index 905969c..f79f69a 100644 --- a/patches/server/0032-Cache-Vanillia-and-Eigen-Redstone.patch +++ b/patches/server/0032-Cache-Vanillia-and-Eigen-Redstone.patch @@ -353,10 +353,10 @@ index a3aa2c38169de2636f2e2a1c352e618959c4ac7a..c24fc4df2c835267160dc8355419904a this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d954e71e6e3cf2f77af3101a42806c1b4ad5b10c..d75c6d2239a9117ae3c3ef2c4aae8adfe015f491 100644 +index 5b1c87a10140bb407f3c87b5f230e657b629f4bb..81b1c4849e3a42582af424e6f548b1e3bc9f6ae0 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -234,6 +234,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -224,6 +224,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { public final me.samsuik.sakura.entity.merge.MergeHistory mergeHistory = new me.samsuik.sakura.entity.merge.MergeHistory(); // Sakura - cannon entity merging public final me.samsuik.sakura.explosion.DensityCache densityCache = new me.samsuik.sakura.explosion.DensityCache(); // Sakura - specialised density cache for swinging explosions public final me.samsuik.sakura.explosion.durable.DurableBlockManager durabilityManager = new me.samsuik.sakura.explosion.durable.DurableBlockManager(); // Sakura - explosion durable blocks @@ -364,7 +364,7 @@ index d954e71e6e3cf2f77af3101a42806c1b4ad5b10c..d75c6d2239a9117ae3c3ef2c4aae8adf // Sakura start - add entity retrival methods with search limits public void getLimitedEntities(Entity except, AABB box, Predicate predicate, List into, int limit, int search) { -@@ -1011,6 +1012,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1001,6 +1002,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } else { BlockState iblockdata2 = this.getBlockState(pos); diff --git a/patches/server/0040-Configure-cannon-physics-by-version.patch b/patches/server/0040-Configure-cannon-physics-by-version.patch index 01365e8..d231c9f 100644 --- a/patches/server/0040-Configure-cannon-physics-by-version.patch +++ b/patches/server/0040-Configure-cannon-physics-by-version.patch @@ -36,7 +36,7 @@ index 19086bbfdf3a015eafec5ca868c8d2451f554ef0..a40dcbde87860fd6d3b60d0b9e2d5e63 if (xSmaller && z != 0.0) { z = performAABBCollisionsZ(axisalignedbb, z, aabbs); diff --git a/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java -index 10a9c32ad0ef6f08589e10187e5ab9f1e0571440..366613182e290b941b43a2c766a2de92355297a9 100644 +index 4b5c431e6d9e2b170a1db0984b8426919466f4c5..40c4efa6745d0c9ecb1c4a444c1a3efbe1de8928 100644 --- a/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java +++ b/src/main/java/me/samsuik/sakura/explosion/SakuraExplosion.java @@ -167,7 +167,7 @@ public class SakuraExplosion extends Explosion { @@ -544,10 +544,10 @@ index e09d159007922d29a2cdc1b2597a52c16958b819..e10a78213da1514f54e0659960f76338 if (data == null || !data.isExpandable() && (blockDensity == 0.0f || blockDensity == 1.0f)) { level.densityCache.createCache(key, entity, vec3d, blockDensity); diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d75c6d2239a9117ae3c3ef2c4aae8adfe015f491..af3bec085bab7e70cea53802b26bb32e203811b5 100644 +index 81b1c4849e3a42582af424e6f548b1e3bc9f6ae0..d2f22ad58d10358e7515cb18b570bbcd4ae9e8c6 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -268,6 +268,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -258,6 +258,205 @@ public abstract class Level implements LevelAccessor, AutoCloseable { return this.getLimitedEntities(except, box, net.minecraft.world.entity.EntitySelector.NO_SPECTATORS, limit, search); } // Sakura end - add entity retrival methods with search limits diff --git a/patches/server/0058-Fix-paper-findSupportingBlock-not-updating-last-chun.patch b/patches/server/0058-Fix-paper-findSupportingBlock-not-updating-last-chun.patch index 3135ed2..5efd1eb 100644 --- a/patches/server/0058-Fix-paper-findSupportingBlock-not-updating-last-chun.patch +++ b/patches/server/0058-Fix-paper-findSupportingBlock-not-updating-last-chun.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix paper findSupportingBlock not updating last chunk diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index af3bec085bab7e70cea53802b26bb32e203811b5..892e8ad2d10aee0f1cdf85f23518788ccc78f137 100644 +index d2f22ad58d10358e7515cb18b570bbcd4ae9e8c6..41b9bda5d378efd51bd6d14322bf6808e52f4400 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -898,6 +898,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -888,6 +888,10 @@ public abstract class Level implements LevelAccessor, AutoCloseable { if (chunkDiff != 0) { lastChunk = chunkProvider.getChunkAtIfLoadedImmediately(newChunkX, newChunkZ);