diff --git a/gradle.properties b/gradle.properties index 91ffa3b..44ca083 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=me.samsuik.sakura version=1.21.1-R0.1-SNAPSHOT mcVersion=1.21.1 -paperRef=1bc02e6b23bf18ba43054bf978769411bd96a04d +paperRef=fb768404aa8bdd35b95c88132b95f5cb529cc098 org.gradle.jvmargs=-Xmx2G org.gradle.vfs.watch=false diff --git a/patches/api/0007-Local-Value-Storage-API.patch b/patches/api/0007-Local-Value-Storage-API.patch index c4367ed..dff66fb 100644 --- a/patches/api/0007-Local-Value-Storage-API.patch +++ b/patches/api/0007-Local-Value-Storage-API.patch @@ -155,10 +155,10 @@ index 0000000000000000000000000000000000000000..de18836d1a2a6038a661cdc60161d3ba + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index e6f66d70d024cf4f0536a5bf8e51bf7b306335df..d554b1f54e706500153718527a6b60c7743901ea 100644 +index ef32a937e6faf1e8a5d6b1207986715bae5a246c..9ef129370e7773e256fe4d2d3bfe93abc625b26a 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -157,6 +157,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -205,6 +205,10 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient return new Location(this, x, y, z); } // Paper end diff --git a/patches/server/0004-Local-Config-and-Value-Storage-API.patch b/patches/server/0004-Local-Config-and-Value-Storage-API.patch index 12fb20e..bc8237d 100644 --- a/patches/server/0004-Local-Config-and-Value-Storage-API.patch +++ b/patches/server/0004-Local-Config-and-Value-Storage-API.patch @@ -239,7 +239,7 @@ index f7a636990d581ad0230317a716d2662ea25480e3..f0ba7597de6f1eb025639cbe0f35f51d 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 7da2fc17f6e7bf888ef0c2a8eba0fc3b4c10436e..c811bc64d0686fdec58defb707d57e539c261b48 100644 +index 48c2d026fd678f7990738a0037780a535f1ac19b..613c402744314644f86b401fa84dbd20ffb108f5 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -177,6 +177,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl @@ -256,10 +256,10 @@ index 7da2fc17f6e7bf888ef0c2a8eba0fc3b4c10436e..c811bc64d0686fdec58defb707d57e53 public final com.destroystokyo.paper.antixray.ChunkPacketBlockController chunkPacketBlockController; // Paper - Anti-Xray public final co.aikar.timings.WorldTimingsHandler timings; // Paper diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index cd3381d8225e0322b3e285b3c4aa0a1265a91cc0..7d70fb7553a04bebf9300b0372afd36802b7045c 100644 +index 33e4818ba5a90d78d69baad9f6b1be1b1382e9f3..d14c942a4505222c13bf0e7bc15ac4904f3ebbd1 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -256,6 +256,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -291,6 +291,13 @@ public class CraftWorld extends CraftRegionAccessor implements World { } // Paper end diff --git a/patches/server/0005-Visibility-API-and-Command.patch b/patches/server/0005-Visibility-API-and-Command.patch index 0b1c87d..ba3be14 100644 --- a/patches/server/0005-Visibility-API-and-Command.patch +++ b/patches/server/0005-Visibility-API-and-Command.patch @@ -310,10 +310,10 @@ index af8cb316ac169aa8d98a88765b85bb013b9ba961..76d4b7e9dad6536c100e5940f9f528ba // CraftBukkit start - respect vanish API if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index fb2e895aa658175329708828de3e1030bf28620b..07f36cd0dea417459e7022fe7e73a5177fc7c67a 100644 +index 1a0819301e0ce05c60b6cb961202a5c60697f6c1..94b130f9fd12ad077e66e5aa1c7b143ad97d96e5 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1791,7 +1791,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1793,7 +1793,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. while (iterator.hasNext()) { ServerPlayer entityplayer = (ServerPlayer) iterator.next(); @@ -497,7 +497,7 @@ index befeaac4786760f6847a5945da2296a3e68dbb17..167e7478ea87d611c526db7974f1dac0 if (this.player.containerMenu != oldContainer) { return; diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index bc45c74987974b4828201e06fc8b1f3fbc0af8b4..7c32f41cca62d03b8fcd6e5486a32c9872ab040c 100644 +index 4b54d0ea31062972e68ee8fafe3cfaf68f65a5cd..d2e91843df93753a78bb9bd6839de287dc2ce4e5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -549,6 +549,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -536,7 +536,7 @@ index 42bd2d9a1528b6210e4dfb56233062fd97c9743b..28a15f612239614c6c56974da5855ce3 public PrimedTnt(Level world, double x, double y, double z, @Nullable LivingEntity igniter) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ad740739437be632fc7fedec488a7d0c49534688..ff8580ca3e74e7e28afbfa8c2e566b98ced2dbff 100644 +index 42d7660efe5baa6f796f2a7606686c765b6f2478..71f9c53cb3a3130adcbbf92a081fbe2b32efd626 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -547,6 +547,13 @@ public class CraftPlayer extends CraftHumanEntity implements Player { diff --git a/patches/server/0007-Load-Chunks-on-Movement.patch b/patches/server/0007-Load-Chunks-on-Movement.patch index 42d1eb6..84e2437 100644 --- a/patches/server/0007-Load-Chunks-on-Movement.patch +++ b/patches/server/0007-Load-Chunks-on-Movement.patch @@ -52,7 +52,7 @@ index f56e5c0f53f9b52a9247b9be9265b949494fc924..f8e0746433057297c88f0237502da856 public static TicketType create(String name, Comparator argumentComparator) { return new TicketType<>(name, argumentComparator, 0L); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7c32f41cca62d03b8fcd6e5486a32c9872ab040c..471c8a43337d8d93d0532a333dfae2166725f5d9 100644 +index d2e91843df93753a78bb9bd6839de287dc2ce4e5..87a117c74dcee2e58126e133b853a56a7965e55f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -553,6 +553,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -76,7 +76,7 @@ index 7c32f41cca62d03b8fcd6e5486a32c9872ab040c..471c8a43337d8d93d0532a333dfae216 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -1502,7 +1516,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1504,7 +1518,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.getCollisions( world, (Entity)(Object)this, collisionBox, potentialCollisionsVoxel, potentialCollisionsBB, @@ -85,7 +85,7 @@ index 7c32f41cca62d03b8fcd6e5486a32c9872ab040c..471c8a43337d8d93d0532a333dfae216 null, null ); -@@ -4872,12 +4886,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4874,12 +4888,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @Override public boolean shouldBeSaved() { diff --git a/patches/server/0010-Slice-Packet-obfuscation-and-reduction.patch b/patches/server/0010-Slice-Packet-obfuscation-and-reduction.patch index c918bfb..b63af48 100644 --- a/patches/server/0010-Slice-Packet-obfuscation-and-reduction.patch +++ b/patches/server/0010-Slice-Packet-obfuscation-and-reduction.patch @@ -185,10 +185,10 @@ index 8ea2f24695f5dad55e21f238b69442513e7a90c6..66ce58684d7a571ebcb33e62ef1d67fe if (this.entity instanceof LivingEntity) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 067a0aa9a57628d0d7b41e419d91df5ece7ec3d3..a5c69230536d163496e0d7f175fd240c6202584a 100644 +index 87a117c74dcee2e58126e133b853a56a7965e55f..9c890b1bc77834799abdbb403aeeb928ed0125ec 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3493,7 +3493,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3495,7 +3495,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } diff --git a/patches/server/0014-Optimise-paper-explosions.patch b/patches/server/0014-Optimise-paper-explosions.patch index e33b4a4..25217b1 100644 --- a/patches/server/0014-Optimise-paper-explosions.patch +++ b/patches/server/0014-Optimise-paper-explosions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise paper explosions diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b740025c29443e 100644 +index f696afd7e241bf1966a2d505b5d59bff824b43e4..611fc40fd7461f6d9cd9e737de71e702bf1f36c5 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -100,7 +100,7 @@ public class Explosion { +@@ -101,7 +101,7 @@ public class Explosion { } } @@ -17,7 +17,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 } private static final int CHUNK_CACHE_SHIFT = 2; -@@ -315,6 +315,39 @@ public class Explosion { +@@ -316,6 +316,39 @@ public class Explosion { return (float)missedRays / (float)totalRays; } // Paper end - optimise collisions @@ -57,7 +57,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 public static DamageSource getDefaultDamageSource(Level world, @Nullable Entity source) { return world.damageSources().explosion(source, Explosion.getIndirectSourceEntityInternal(source)); -@@ -438,6 +471,16 @@ public class Explosion { +@@ -439,6 +472,16 @@ public class Explosion { int j; // Paper start - collision optimisations @@ -74,7 +74,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 for (int ray = 0, len = CACHED_RAYS.length; ray < len;) { ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache cachedBlock = initialCache; -@@ -509,25 +552,64 @@ public class Explosion { +@@ -510,25 +553,64 @@ public class Explosion { } // Paper - optimise collisions @@ -93,7 +93,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 int i1 = Mth.floor(this.y + (double) f2 + 1.0D); int j1 = Mth.floor(this.z - (double) f2 - 1.0D); int k1 = Mth.floor(this.z + (double) f2 + 1.0D); -- List list = this.level.getEntities(this.source, new AABB((double) i, (double) l, (double) j1, (double) j, (double) i1, (double) k1), (com.google.common.base.Predicate) entity -> entity.isAlive() && !entity.isSpectator()); // Paper - Fix lag from explosions processing dead entities +- List list = this.level.getEntities(excludeSourceFromDamage ? this.source : null, new AABB((double) i, (double) l, (double) j1, (double) j, (double) i1, (double) k1), (com.google.common.base.Predicate) entity -> entity.isAlive() && !entity.isSpectator()); // Paper - Fix lag from explosions processing dead entities, Allow explosions to damage source + return new AABB((double) i, (double) l, (double) j1, (double) j, (double) i1, (double) k1); + } + @@ -141,12 +141,12 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 + } + + protected final void impactEntity(ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[] blockCache, BlockPos.MutableBlockPos blockPos, float f2, Vec3 vec3d, Entity entity) { -+ if (entity.isAlive() && !entity.isSpectator()) { // Paper - Fix lag from explosions processing dead entities ++ if (entity.isAlive() && !entity.isSpectator() && (!this.excludeSourceFromDamage || entity != this.source)) { // Paper - Fix lag from explosions processing dead entities + // Sakura end - optimise paper explosions if (!entity.ignoreExplosion(this)) { double d7 = Math.sqrt(entity.distanceToSqr(vec3d)) / (double) f2; -@@ -552,7 +634,7 @@ public class Explosion { +@@ -553,7 +635,7 @@ public class Explosion { // - Damaging EntityEnderDragon does nothing // - EntityEnderDragon hitbock always covers the other parts and is therefore always present if (entity instanceof EnderDragonPart) { @@ -155,7 +155,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 } entity.lastDamageCancelled = false; -@@ -560,9 +642,10 @@ public class Explosion { +@@ -561,9 +643,10 @@ public class Explosion { seenFraction = (double)this.getBlockDensity(vec3d, entity, blockCache, blockPos); // Paper - optimise collisions if (entity instanceof EnderDragon) { @@ -167,7 +167,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 entityComplexPart.hurt(this.damageSource, this.damageCalculator.getEntityDamageAmount(this, entity)); } } -@@ -576,7 +659,7 @@ public class Explosion { +@@ -577,7 +660,7 @@ public class Explosion { } if (entity.lastDamageCancelled) { // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Skip entity if damage event was cancelled @@ -176,7 +176,7 @@ index 6c66ee69beb55e5c5755bbf4d13c256541ce4468..74e32f74322b3e3bc8c2e3f5f8b74002 } // CraftBukkit end } else { seenFraction = (double)this.getBlockDensity(vec3d, entity, blockCache, blockPos); } // Paper - optimise collisions -@@ -619,6 +702,11 @@ public class Explosion { +@@ -620,6 +703,11 @@ public class Explosion { } } } diff --git a/patches/server/0016-Merge-Cannon-Entities.patch b/patches/server/0016-Merge-Cannon-Entities.patch index b12dd84..d8ff0a9 100644 --- a/patches/server/0016-Merge-Cannon-Entities.patch +++ b/patches/server/0016-Merge-Cannon-Entities.patch @@ -410,7 +410,7 @@ index d48a1f7d23d1c47465ad8df37facbabe3a15c543..012bec9a32acc26f65c8efbfde341b0d this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 61ebb6db40626442b75cf768e1bacce3c5c09ec0..65a71789571f896fc25a3eec22ee7808130a1578 100644 +index df6074dae80cce98ce27bd28280c246dafa9562a..0a29ad6409226ece40c03c6eba699592c7f0aa11 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -714,6 +714,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. @@ -438,7 +438,7 @@ index 61ebb6db40626442b75cf768e1bacce3c5c09ec0..65a71789571f896fc25a3eec22ee7808 this.guardEntityTick(this::tickNonPassenger, entity); gameprofilerfiller.pop(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 86fc7094d540573a559dd47a1dab7479dc27c1e7..5932aea4430f445eddf9a27d3f93bfc7d58d20e3 100644 +index 04ff913f304c7b70b5fcbf866984cb0a91c2b05c..a636c0331b6c963224727eaaed9c09d29ba9d2d7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -586,6 +586,23 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -465,7 +465,7 @@ index 86fc7094d540573a559dd47a1dab7479dc27c1e7..5932aea4430f445eddf9a27d3f93bfc7 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -4876,6 +4893,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4878,6 +4895,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.removalReason != Entity.RemovalReason.UNLOADED_TO_CHUNK) { this.getPassengers().forEach(Entity::stopRiding); } // Paper - rewrite chunk system this.levelCallback.onRemove(entity_removalreason); @@ -676,7 +676,7 @@ index 888d018a8e73234332455b7d3700e70e1a50c5db..a8e540c8a27135336fb2d6e37aec13d5 } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 0925de100a7da3bba6c3fab7a0c79b2ee0d86904..186f1be4aca5295ca260f3808d332cb5ed77bc7e 100644 +index 0a0884ceb365e01432126b414335c1ff8fa8e084..dc2b8e054a3dd89e1c45d0c96ad640a7d32a2c0d 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -695,6 +695,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0017-Replace-explosion-density-cache.patch b/patches/server/0017-Replace-explosion-density-cache.patch index 165f312..00cb706 100644 --- a/patches/server/0017-Replace-explosion-density-cache.patch +++ b/patches/server/0017-Replace-explosion-density-cache.patch @@ -138,10 +138,10 @@ index 012bec9a32acc26f65c8efbfde341b0d15a4e822..8041737aa751bec1c51ee3d9dacd6dfb this.isIteratingOverLevels = false; // Paper - Throw exception on world create while being ticked diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 80bd249e9572fd0c9ebf53c4731ed50a65290c74..fd1d9e0a8b55378c9cd06369d1850f97b63ab7d7 100644 +index 611fc40fd7461f6d9cd9e737de71e702bf1f36c5..d8baaed4ae55c079bdfd684b6d942923dfbbbcd1 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -305,7 +305,12 @@ public class Explosion { +@@ -306,7 +306,12 @@ public class Explosion { Math.fma(dz, diffZ, offZ) ); @@ -155,7 +155,7 @@ index 80bd249e9572fd0c9ebf53c4731ed50a65290c74..fd1d9e0a8b55378c9cd06369d1850f97 ++missedRays; } } -@@ -411,7 +416,16 @@ public class Explosion { +@@ -412,7 +417,16 @@ public class Explosion { double d10 = Mth.lerp(d7, axisalignedbb.minZ, axisalignedbb.maxZ); Vec3 vec3d1 = new Vec3(d8 + d3, d9, d10 + d4); @@ -173,7 +173,7 @@ index 80bd249e9572fd0c9ebf53c4731ed50a65290c74..fd1d9e0a8b55378c9cd06369d1850f97 ++i; } -@@ -801,6 +815,11 @@ public class Explosion { +@@ -802,6 +816,11 @@ public class Explosion { }); } @@ -185,7 +185,7 @@ index 80bd249e9572fd0c9ebf53c4731ed50a65290c74..fd1d9e0a8b55378c9cd06369d1850f97 Iterator iterator = list.iterator(); while (iterator.hasNext()) { -@@ -929,14 +948,12 @@ public class Explosion { +@@ -930,14 +949,12 @@ public class Explosion { } // Paper start - Optimize explosions private float getBlockDensity(Vec3 vec3d, Entity entity, ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[] blockCache, BlockPos.MutableBlockPos blockPos) { // Paper - optimise collisions @@ -207,7 +207,7 @@ index 80bd249e9572fd0c9ebf53c4731ed50a65290c74..fd1d9e0a8b55378c9cd06369d1850f97 return blockDensity; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 186f1be4aca5295ca260f3808d332cb5ed77bc7e..8e12d473bfd7dad4dfda8bba503f475151da0ad1 100644 +index dc2b8e054a3dd89e1c45d0c96ad640a7d32a2c0d..ed049df61d38ed06076273115b841e2852963844 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -696,6 +696,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0018-Optimise-explosions-in-protected-regions.patch b/patches/server/0018-Optimise-explosions-in-protected-regions.patch index c951160..6aaa32c 100644 --- a/patches/server/0018-Optimise-explosions-in-protected-regions.patch +++ b/patches/server/0018-Optimise-explosions-in-protected-regions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise explosions in protected regions diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 3ad6f5f19c9fae2f00c662971eaa613c1a0ddbcf..da423a9211dd72bc531d7f0f65aab08b5c44f39c 100644 +index d8baaed4ae55c079bdfd684b6d942923dfbbbcd1..220d97947df493d1ab825e6637ca648e0b186d18 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -353,6 +353,22 @@ public class Explosion { +@@ -354,6 +354,22 @@ public class Explosion { return rays; } // Sakura end - optimise paper explosions @@ -31,7 +31,7 @@ index 3ad6f5f19c9fae2f00c662971eaa613c1a0ddbcf..da423a9211dd72bc531d7f0f65aab08b public static DamageSource getDefaultDamageSource(Level world, @Nullable Entity source) { return world.damageSources().explosion(source, Explosion.getIndirectSourceEntityInternal(source)); -@@ -486,7 +502,7 @@ public class Explosion { +@@ -487,7 +503,7 @@ public class Explosion { // Paper start - collision optimisations // Sakura start - optimise paper explosions diff --git a/patches/server/0019-Specialised-Explosions.patch b/patches/server/0019-Specialised-Explosions.patch index 271fe5f..494ee07 100644 --- a/patches/server/0019-Specialised-Explosions.patch +++ b/patches/server/0019-Specialised-Explosions.patch @@ -23,10 +23,10 @@ index c21e00812f1aaa1279834a0562d360d6b89e146c..1e1329adde1457898a3002279b53b1bb if (index >= 0) { diff --git a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java new file mode 100644 -index 0000000000000000000000000000000000000000..58add5bd1afc2f3e89b9a7d0d9a325bf17b77a18 +index 0000000000000000000000000000000000000000..86a4b9502df49b1614fc76920b164e1148244643 --- /dev/null +++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java -@@ -0,0 +1,218 @@ +@@ -0,0 +1,222 @@ +package me.samsuik.sakura.explosion.special; + +import ca.spottedleaf.moonrise.common.util.WorldUtil; @@ -41,6 +41,7 @@ index 0000000000000000000000000000000000000000..58add5bd1afc2f3e89b9a7d0d9a325bf +import net.minecraft.util.Mth; +import net.minecraft.world.damagesource.DamageSource; +import net.minecraft.world.entity.Entity; ++import net.minecraft.world.entity.item.PrimedTnt; +import net.minecraft.world.level.Explosion; +import net.minecraft.world.level.ExplosionDamageCalculator; +import net.minecraft.world.level.Level; @@ -191,6 +192,9 @@ index 0000000000000000000000000000000000000000..58add5bd1afc2f3e89b9a7d0d9a325bf + } + + protected final void impactEntity(Entity entity, Vec3 pos, int potential, double radius) { ++ if (this.excludeSourceFromDamage && entity == this.source) { ++ return; // for paper api ++ } + if (entity.isPrimedTNT || entity.isFallingBlock) { + this.impactCannonEntity(entity, pos, potential, radius); + } else { @@ -459,10 +463,10 @@ index 0000000000000000000000000000000000000000..a5d13c6b0d8765e4a65b43f5835fd907 + } +} diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 65a71789571f896fc25a3eec22ee7808130a1578..fc84d393df406cc9895ee063422afe562762d443 100644 +index 0a29ad6409226ece40c03c6eba699592c7f0aa11..9e059ca44d19da96ff5fbe84a716e747036025d3 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1796,6 +1796,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1798,6 +1798,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. explosion.clearToBlow(); } @@ -475,7 +479,7 @@ index 65a71789571f896fc25a3eec22ee7808130a1578..fc84d393df406cc9895ee063422afe56 Iterator iterator = this.players.iterator(); while (iterator.hasNext()) { -@@ -1806,7 +1812,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. +@@ -1808,7 +1814,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf. } } @@ -511,7 +515,7 @@ index a8e540c8a27135336fb2d6e37aec13d598b2000e..e64c85bf8fbd3ad0d7e8a6e4a34aed81 // Sakura end - merge cannon entities diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac68ece9af7 100644 +index 220d97947df493d1ab825e6637ca648e0b186d18..5cac17def6b49316ae8fb994d4f3d80154074fe0 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -57,9 +57,11 @@ public class Explosion { @@ -529,7 +533,7 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 @Nullable public final Entity source; private final float radius; -@@ -114,10 +116,10 @@ public class Explosion { +@@ -115,10 +117,10 @@ public class Explosion { // resistance = (res + 0.3F) * 0.3F; // so for resistance = 0, we need res = -0.3F private static final Float ZERO_RESISTANCE = Float.valueOf(-0.3f); @@ -542,7 +546,7 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 final long key, final boolean calculateResistance) { ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache ret = this.blockCache.get(key); if (ret != null) { -@@ -215,7 +217,7 @@ public class Explosion { +@@ -216,7 +218,7 @@ public class Explosion { (currZ & BLOCK_EXPLOSION_CACHE_MASK) << (BLOCK_EXPLOSION_CACHE_SHIFT + BLOCK_EXPLOSION_CACHE_SHIFT); ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache cachedBlock = blockCache[cacheKey]; if (cachedBlock == null || cachedBlock.key != key) { @@ -551,7 +555,7 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 } final BlockState blockState = cachedBlock.blockState; -@@ -369,6 +371,28 @@ public class Explosion { +@@ -370,6 +372,28 @@ public class Explosion { return true; } // Sakura end - optimise explosion protected regions @@ -580,7 +584,7 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 public static DamageSource getDefaultDamageSource(Level world, @Nullable Entity source) { return world.damageSources().explosion(source, Explosion.getIndirectSourceEntityInternal(source)); -@@ -472,16 +496,7 @@ public class Explosion { +@@ -473,16 +497,7 @@ public class Explosion { // CraftBukkit end this.level.gameEvent(this.source, (Holder) GameEvent.EXPLODE, new Vec3(this.x, this.y, this.z)); @@ -598,7 +602,7 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 // use initial cache value that is most likely to be used: the source position final ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache initialCache; { -@@ -963,7 +978,7 @@ public class Explosion { +@@ -964,7 +979,7 @@ public class Explosion { private BlockInteraction() {} } // Paper start - Optimize explosions @@ -608,10 +612,10 @@ index dfc6a49b2e4d7dd943a404e1f8445f9b67f41cde..4702f1d07ad32e94aeada46122f84ac6 float blockDensity = this.level.densityCache.getDensity(vec3d, entity); if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 8e12d473bfd7dad4dfda8bba503f475151da0ad1..eaafb99543869234e6bb8eb227bf9a0d6e8346d0 100644 +index ed049df61d38ed06076273115b841e2852963844..c3260ad0ddb40fbde9c1aaf25c0a2be901357dcc 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1521,7 +1521,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1537,7 +1537,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl } Explosion.BlockInteraction explosion_effect1 = explosion_effect; @@ -624,6 +628,6 @@ index 8e12d473bfd7dad4dfda8bba503f475151da0ad1..eaafb99543869234e6bb8eb227bf9a0d + explosion = new Explosion(this, entity, damageSource, behavior, x, y, z, power, createFire, explosion_effect1, particle, emitterParticle, soundEvent); + } + // Sakura end - specialised explosions + if (configurator != null) configurator.accept(explosion); // Paper - Allow explosions to damage source explosion.explode(); - explosion.finalizeExplosion(particles); diff --git a/patches/server/0020-Optimise-cannon-entity-movement.patch b/patches/server/0020-Optimise-cannon-entity-movement.patch index 520ab1e..7b39cfb 100644 --- a/patches/server/0020-Optimise-cannon-entity-movement.patch +++ b/patches/server/0020-Optimise-cannon-entity-movement.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise cannon entity movement diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 023500526ab0a42bf7cbf21e1773cf5369aa2323..00fcff6e934ec7bc7a7ba853cab4c6e69c42af99 100644 +index a636c0331b6c963224727eaaed9c09d29ba9d2d7..b8b86de79c276b89ff5d4f9469c3456104dcc00e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1164,6 +1164,93 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1166,6 +1166,93 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.moveStartZ; } // Paper end - detailed watchdog information @@ -102,7 +102,7 @@ index 023500526ab0a42bf7cbf21e1773cf5369aa2323..00fcff6e934ec7bc7a7ba853cab4c6e6 public void move(MoverType movementType, Vec3 movement) { final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity -@@ -1508,6 +1595,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1510,6 +1597,95 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return offsetFactor; } @@ -199,7 +199,7 @@ index 023500526ab0a42bf7cbf21e1773cf5369aa2323..00fcff6e934ec7bc7a7ba853cab4c6e6 // Paper start - optimise collisions final boolean xZero = movement.x == 0.0; diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java -index 19eed968884f79a7982d96ae8c3c378f00afbdf9..cc5ef63a99a18f093f600612bf972cf50722e3a5 100644 +index 53488a1d0c56e7da4cf93c08cab01a033fb4f1f8..d1e06ef173468fa722d4b121e44ac0a9a314ee78 100644 --- a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java +++ b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java @@ -204,7 +204,7 @@ public class FallingBlockEntity extends Entity implements me.samsuik.sakura.enti @@ -212,7 +212,7 @@ index 19eed968884f79a7982d96ae8c3c378f00afbdf9..cc5ef63a99a18f093f600612bf972cf5 if (this.level().paperConfig().fixes.fallingBlockHeightNerf.test(v -> this.getY() > v)) { if (this.dropItem && this.level().getGameRules().getBoolean(GameRules.RULE_DOENTITYDROPS)) { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index e048542cdd1fe9c807ce21e57af9cf59b4adb33f..fdbc990af4190f93f207c3309cf9f89613092c0a 100644 +index e64c85bf8fbd3ad0d7e8a6e4a34aed8140f4f8bc..1a2cdd2235dfa930e82151a370ddf2e60f2866fa 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -124,7 +124,7 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak diff --git a/patches/server/0021-Entity-pushed-by-fluid-API.patch b/patches/server/0021-Entity-pushed-by-fluid-API.patch index 559b274..20f8057 100644 --- a/patches/server/0021-Entity-pushed-by-fluid-API.patch +++ b/patches/server/0021-Entity-pushed-by-fluid-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Entity pushed by fluid API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index ba13fcd0c01dc2c4068017fa0c008016640c4c8b..232132951856f244bcbf978709bef98da2f8827d 100644 +index b8b86de79c276b89ff5d4f9469c3456104dcc00e..18f3aaa704a9f04aa5bac468f2e5963538629f64 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -603,6 +603,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -16,7 +16,7 @@ index ba13fcd0c01dc2c4068017fa0c008016640c4c8b..232132951856f244bcbf978709bef98d public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -4169,7 +4170,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4171,7 +4172,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean isPushedByFluid() { @@ -26,7 +26,7 @@ index ba13fcd0c01dc2c4068017fa0c008016640c4c8b..232132951856f244bcbf978709bef98d public static double getViewScale() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index cd789c235acf740ec29c30b180e7fbe1a140caa9..f837748105540ae77b718590f1387168e6c906ac 100644 +index 89c8713d2c2206d1b0d8c0a392c9d13b3e736f0c..38ef55af47c7eb24ebc719c63298a9b071693f4e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -203,6 +203,18 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0024-Optimise-TNT-fluid-state.patch b/patches/server/0024-Optimise-TNT-fluid-state.patch index 554f050..1f32435 100644 --- a/patches/server/0024-Optimise-TNT-fluid-state.patch +++ b/patches/server/0024-Optimise-TNT-fluid-state.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise TNT fluid state diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 08b795b91138e052e6df6c477700de8ef7aabb5b..18cefd77146cee72f1818cbb725dd1704ae5fec0 100644 +index 18f3aaa704a9f04aa5bac468f2e5963538629f64..6131a99836b721f468d21df00c8d0f2bcb7feda9 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2151,7 +2151,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -2153,7 +2153,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.isInWater() || flag; } @@ -18,7 +18,7 @@ index 08b795b91138e052e6df6c477700de8ef7aabb5b..18cefd77146cee72f1818cbb725dd170 if (entity instanceof Boat entityboat) { diff --git a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java -index ee5d0dd90ebc2eb3280c9047450f8eac5dca167c..64ebae26c3c58c94b9907a5819cdc09f4f748cf1 100644 +index 12983f598ffbd395b718878ac3865c0c5e5104fb..89d297bbec6034630fe0dbb84c079023611194a3 100644 --- a/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java +++ b/src/main/java/net/minecraft/world/entity/item/PrimedTnt.java @@ -120,6 +120,21 @@ public class PrimedTnt extends Entity implements TraceableEntity, me.samsuik.sak diff --git a/patches/server/0025-Add-maxSearch-to-getEntities.patch b/patches/server/0025-Add-maxSearch-to-getEntities.patch index a0e2997..97926b3 100644 --- a/patches/server/0025-Add-maxSearch-to-getEntities.patch +++ b/patches/server/0025-Add-maxSearch-to-getEntities.patch @@ -98,10 +98,10 @@ index efc0c1acc8239dd7b00211a1d3bfd3fc3b2c810c..0ffbc8b459c3475ff0a9c307cb7bd144 \ No newline at end of file +} diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index eaafb99543869234e6bb8eb227bf9a0d6e8346d0..ec47e7da3c06ee74e0c134e4a881ab373fc68af8 100644 +index c3260ad0ddb40fbde9c1aaf25c0a2be901357dcc..75d11642b7246bae4073feec09c0cf21c24622ca 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1668,10 +1668,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1685,10 +1685,18 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl this.getEntities(filter, box, predicate, result, Integer.MAX_VALUE); } @@ -121,7 +121,7 @@ index eaafb99543869234e6bb8eb227bf9a0d6e8346d0..ec47e7da3c06ee74e0c134e4a881ab37 this.getProfiler().incrementCounter("getEntities"); if (entityTypeTest instanceof net.minecraft.world.entity.EntityType byType) { -@@ -1686,7 +1694,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1703,7 +1711,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl if (entityTypeTest == null) { if (maxCount != Integer.MAX_VALUE) { diff --git a/patches/server/0029-Explosion-Durable-Blocks.patch b/patches/server/0029-Explosion-Durable-Blocks.patch index cc71adc..f93d147 100644 --- a/patches/server/0029-Explosion-Durable-Blocks.patch +++ b/patches/server/0029-Explosion-Durable-Blocks.patch @@ -104,10 +104,10 @@ 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 4702f1d07ad32e94aeada46122f84ac68ece9af7..da6f8d2f9b27de6c256920187c9841536842147b 100644 +index 5cac17def6b49316ae8fb994d4f3d80154074fe0..407154670acbec704ef6804a33c320ab9246c16d 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -144,7 +144,7 @@ public class Explosion { +@@ -145,7 +145,7 @@ public class Explosion { BlockState blockState = ((ca.spottedleaf.moonrise.patches.chunk_getblock.GetBlockChunk)chunk).moonrise$getBlock(x, y, z); FluidState fluidState = blockState.getFluidState(); @@ -116,7 +116,7 @@ index 4702f1d07ad32e94aeada46122f84ac68ece9af7..da6f8d2f9b27de6c256920187c984153 ret = new ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache( key, pos, blockState, fluidState, -@@ -158,6 +158,21 @@ public class Explosion { +@@ -159,6 +159,21 @@ public class Explosion { return ret; } @@ -138,7 +138,7 @@ index 4702f1d07ad32e94aeada46122f84ac68ece9af7..da6f8d2f9b27de6c256920187c984153 private boolean clipsAnything(final Vec3 from, final Vec3 to, final ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.LazyEntityCollisionContext context, final ca.spottedleaf.moonrise.patches.collisions.ExplosionBlockCache[] blockCache, -@@ -831,6 +846,16 @@ public class Explosion { +@@ -832,6 +847,16 @@ public class Explosion { // CraftBukkit start - TNTPrimeEvent BlockState iblockdata = this.level.getBlockState(blockposition); Block block = iblockdata.getBlock(); @@ -156,7 +156,7 @@ index 4702f1d07ad32e94aeada46122f84ac68ece9af7..da6f8d2f9b27de6c256920187c984153 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 ec47e7da3c06ee74e0c134e4a881ab373fc68af8..88aa465a4bc6ae79dbad8dc8ecc21345f70abf0b 100644 +index 75d11642b7246bae4073feec09c0cf21c24622ca..2cf25b6e51f1c430f80f1defe365b0373227bed2 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -697,6 +697,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0030-Destroy-Waterlogged-Blocks.patch b/patches/server/0030-Destroy-Waterlogged-Blocks.patch index 46a577b..2b74c12 100644 --- a/patches/server/0030-Destroy-Waterlogged-Blocks.patch +++ b/patches/server/0030-Destroy-Waterlogged-Blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Destroy Waterlogged Blocks diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index da1dd876b5e64d1f5fefd0701f380ff20b965e0f..099e733940667ed146d7687634bb99855b439616 100644 +index 407154670acbec704ef6804a33c320ab9246c16d..b32f377079a7c97840079b0a6b541be936c822dd 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -167,6 +167,11 @@ public class Explosion { +@@ -168,6 +168,11 @@ public class Explosion { if (material != null && material.resistance() >= 0.0f && (this.level.sakuraConfig().cannons.explosion.allowNonTntBreakingDurableBlocks || this.source instanceof net.minecraft.world.entity.item.PrimedTnt)) { return Optional.of(material.resistance()); } diff --git a/patches/server/0035-Consistent-Explosion-Radius.patch b/patches/server/0035-Consistent-Explosion-Radius.patch index f6442fc..3734f92 100644 --- a/patches/server/0035-Consistent-Explosion-Radius.patch +++ b/patches/server/0035-Consistent-Explosion-Radius.patch @@ -5,18 +5,18 @@ 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 81284ec481ac6cc82d2b1171d1772c107d1a5a0c..0dd0397036309c881f955b78ba3934e33bcf18fd 100644 +index b32f377079a7c97840079b0a6b541be936c822dd..fa142719b1c4f6434466141128c475ef945edbb7 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -76,6 +76,7 @@ public class Explosion { - public boolean wasCanceled = false; +@@ -77,6 +77,7 @@ public class Explosion { public float yield; // CraftBukkit end + public boolean excludeSourceFromDamage = true; // Paper - Allow explosions to damage source + private final boolean consistentRadius; // Sakura - consistent explosion radius // Paper start - optimise collisions private static final double[] CACHED_RAYS; -@@ -450,6 +451,7 @@ public class Explosion { +@@ -451,6 +452,7 @@ public class Explosion { this.largeExplosionParticles = emitterParticle; this.explosionSound = soundEvent; this.yield = this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F; // CraftBukkit @@ -24,7 +24,7 @@ index 81284ec481ac6cc82d2b1171d1772c107d1a5a0c..0dd0397036309c881f955b78ba3934e3 } private ExplosionDamageCalculator makeDamageCalculator(@Nullable Entity entity) { -@@ -558,7 +560,7 @@ public class Explosion { +@@ -559,7 +561,7 @@ public class Explosion { final double incZ = CACHED_RAYS[ray + 2]; ray += 3; diff --git a/patches/server/0038-Configure-cannon-physics-by-version.patch b/patches/server/0038-Configure-cannon-physics-by-version.patch index a80a63b..1a04e1a 100644 --- a/patches/server/0038-Configure-cannon-physics-by-version.patch +++ b/patches/server/0038-Configure-cannon-physics-by-version.patch @@ -67,10 +67,10 @@ index ea6e252053b8910141aacd5bb82108d6abf3fb96..aa23d2665d5804e31b7c1b7021377010 if (xSmaller && z != 0.0) { z = performAABBCollisionsZ(axisalignedbb, z, aabbs); diff --git a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java -index 58add5bd1afc2f3e89b9a7d0d9a325bf17b77a18..8ff4ce297e9e799b14d623b49493c5a4638153fc 100644 +index 86a4b9502df49b1614fc76920b164e1148244643..8db362721860fe8d5eb497a766e6d1b7879cb455 100644 --- a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java +++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java -@@ -176,9 +176,15 @@ public abstract class SpecialisedExplosion extends Explosion { +@@ -180,9 +180,15 @@ public abstract class SpecialisedExplosion extends Explosion { if (distanceFromBottom <= 1.0) { double x = entity.getX() - pos.x; @@ -106,7 +106,7 @@ index a5d13c6b0d8765e4a65b43f5835fd907738e1da4..19f0d8cf94a60b66cead3c129ded69fc protected int getExplosionCount() { if (this.cause.getMergeEntityData().getMergeLevel() == MergeLevel.NONE) { diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c012879306c94af4a 100644 +index 6131a99836b721f468d21df00c8d0f2bcb7feda9..4a899864f460c80bbc6d5d6849e0421c2e392495 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -384,7 +384,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -132,7 +132,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -1111,7 +1118,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1113,7 +1120,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } protected void checkSupportingBlock(boolean onGround, @Nullable Vec3 movement) { @@ -141,7 +141,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 AABB axisalignedbb = this.getBoundingBox(); AABB axisalignedbb1 = new AABB(axisalignedbb.minX, axisalignedbb.minY - 1.0E-6D, axisalignedbb.minZ, axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ); Optional optional = this.level.findSupportingBlock(this, axisalignedbb1); -@@ -1171,7 +1178,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1173,7 +1180,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.noPhysics) { this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); } else { @@ -150,7 +150,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 movement = this.limitPistonMovement(movement); if (movement.equals(Vec3.ZERO)) { return; -@@ -1189,10 +1196,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1191,10 +1198,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Vec3 vec3d1 = this.collideScan(movement); double d0 = vec3d1.lengthSqr(); @@ -164,7 +164,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 BlockHitResult movingobjectpositionblock = this.level().clip(new ClipContext(this.position(), this.position().add(vec3d1), ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); if (movingobjectpositionblock.getType() != HitResult.Type.MISS) { -@@ -1228,6 +1235,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1230,6 +1237,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); @@ -176,7 +176,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 this.setDeltaMovement(flag ? 0.0D : vec3d2.x, vec3d2.y, flag1 ? 0.0D : vec3d2.z); } -@@ -1269,7 +1281,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1271,7 +1283,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z); } else { this.wasOnFire = this.isOnFire(); @@ -185,7 +185,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 this.activatedTick = Math.max(this.activatedTick, MinecraftServer.currentTick + 20); // Paper this.activatedImmunityTick = Math.max(this.activatedImmunityTick, MinecraftServer.currentTick + 20); // Paper movement = this.limitPistonMovement(movement); -@@ -1296,8 +1308,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1298,8 +1310,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess Vec3 vec3d1 = this.collide(movement); double d0 = vec3d1.lengthSqr(); @@ -196,7 +196,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 BlockHitResult movingobjectpositionblock = this.level().clip(new ClipContext(this.position(), this.position().add(vec3d1), ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); if (movingobjectpositionblock.getType() != HitResult.Type.MISS) { -@@ -1333,6 +1345,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1335,6 +1347,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (this.horizontalCollision) { Vec3 vec3d2 = this.getDeltaMovement(); @@ -208,7 +208,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 this.setDeltaMovement(flag ? 0.0D : vec3d2.x, vec3d2.y, flag1 ? 0.0D : vec3d2.z); } -@@ -1612,7 +1629,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1614,7 +1631,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } else { AABB bb = currBoundingBox.expandTowards(movement.x, movement.y, movement.z); this.collectCollisions(bb, potentialCollisionsVoxel, potentialCollisionsBB); @@ -217,7 +217,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 } } -@@ -1621,7 +1638,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1623,7 +1640,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess double y = movement.y; double z = movement.z; @@ -229,7 +229,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 if (y != 0.0) { y = this.scanY(currBoundingBox, y, voxelList, bbList); -@@ -1737,7 +1757,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1739,7 +1759,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return movement; } @@ -238,7 +238,7 @@ index deb032f9e80b2a001e2908a81bd62b00c87ba02e..9241f5cfc79f2f75ddffd41c01287930 if (stepHeight > 0.0 && (onGround || (limitedMoveVector.y != movement.y && movement.y < 0.0)) -@@ -1888,8 +1908,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1890,8 +1910,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess protected void checkInsideBlocks() { AABB axisalignedbb = this.getBoundingBox(); @@ -475,18 +475,18 @@ index 4d0cfa1f96a04713cb1d51c7aaaf91374a0d6c17..96c43df6834e20a9e04eb095f36a644e // 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 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c2c353368 100644 +index fa142719b1c4f6434466141128c475ef945edbb7..cfeacded13f5ebbc3ef66163387c7a40622d7b74 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -77,6 +77,7 @@ public class Explosion { - public float yield; +@@ -78,6 +78,7 @@ public class Explosion { // CraftBukkit end + public boolean excludeSourceFromDamage = true; // Paper - Allow explosions to damage source private final boolean consistentRadius; // Sakura - consistent explosion radius + protected final me.samsuik.sakura.physics.PhysicsVersion physics; // Sakura - physics version api // Paper start - optimise collisions private static final double[] CACHED_RAYS; -@@ -452,6 +453,7 @@ public class Explosion { +@@ -453,6 +454,7 @@ public class Explosion { this.explosionSound = soundEvent; this.yield = this.blockInteraction == Explosion.BlockInteraction.DESTROY_WITH_DECAY ? 1.0F / this.radius : 1.0F; // CraftBukkit this.consistentRadius = world.localConfig().config(BlockPos.containing(x, y, z)).consistentRadius; // Sakura - consistent explosion radius @@ -494,7 +494,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c } private ExplosionDamageCalculator makeDamageCalculator(@Nullable Entity entity) { -@@ -483,8 +485,12 @@ public class Explosion { +@@ -484,8 +486,12 @@ public class Explosion { final float density = entity.level().densityCache.getKnownDensity(vec3d1); if (density != me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { hitResult = density != 0.0f ? net.minecraft.world.phys.HitResult.Type.MISS : net.minecraft.world.phys.HitResult.Type.BLOCK; @@ -508,7 +508,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c } if (hitResult == HitResult.Type.MISS) { // Sakura end - replace density cache -@@ -580,6 +586,14 @@ public class Explosion { +@@ -581,6 +587,14 @@ public class Explosion { } if (cachedBlock.outOfWorld) { @@ -523,7 +523,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c break; } // Paper end - collision optimisations -@@ -682,9 +696,15 @@ public class Explosion { +@@ -683,9 +697,15 @@ public class Explosion { if (d7 <= 1.0D) { double d8 = entity.getX() - this.x; @@ -540,7 +540,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c if (d11 != 0.0D) { d8 /= d11; -@@ -1014,7 +1034,7 @@ public class Explosion { +@@ -1015,7 +1035,7 @@ public class Explosion { // Sakura start - replace density cache float blockDensity = this.level.densityCache.getDensity(vec3d, entity); if (blockDensity == me.samsuik.sakura.explosion.density.BlockDensityCache.UNKNOWN_DENSITY) { @@ -549,7 +549,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c this.level.densityCache.putDensity(vec3d, entity, blockDensity); // Sakura end - replace density cache } -@@ -1022,6 +1042,17 @@ public class Explosion { +@@ -1023,6 +1043,17 @@ public class Explosion { return blockDensity; } @@ -568,7 +568,7 @@ index 90f2a510fb2b33534f12ec4d86d9bf33bd532b58..488748a0c34b3c7e7f3348ebbbb5155c private final Level world; private final double posX, posY, posZ; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index d82d64c98fc7624dfcc86fcbf49cde108bb34ede..062bc318e9c4e3b9a6429ce0eaaa29081cd1d227 100644 +index 20d6044e32cc56089a175675ff74dca02d68e75a..bd72b02c20fb56c2351f865dfff2573545ac313a 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -695,6 +695,170 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl diff --git a/patches/server/0042-Allow-explosions-to-destroy-lava.patch b/patches/server/0042-Allow-explosions-to-destroy-lava.patch index fa231b4..641d0f8 100644 --- a/patches/server/0042-Allow-explosions-to-destroy-lava.patch +++ b/patches/server/0042-Allow-explosions-to-destroy-lava.patch @@ -5,10 +5,10 @@ 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 22fa16f67100c68668a99312e38475499acac38a..6fbdbaa399c9381ea6906e7af7a7a29a4adb1666 100644 +index cfeacded13f5ebbc3ef66163387c7a40622d7b74..f39507dd7e0890446c9c16e6ae45d96302577253 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -174,6 +174,11 @@ public class Explosion { +@@ -175,6 +175,11 @@ public class Explosion { return Optional.of(ZERO_RESISTANCE); } // Sakura end - destroy water logged blocks diff --git a/patches/server/0054-Add-explosions-dropping-items-config.patch b/patches/server/0054-Add-explosions-dropping-items-config.patch index 7616197..b0b9629 100644 --- a/patches/server/0054-Add-explosions-dropping-items-config.patch +++ b/patches/server/0054-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 4ed468653f2487e62ad3c187d558978b05a3264d..ec0a3764e129faecce4fd35f4e301a6fe8a9061b 100644 +index f39507dd7e0890446c9c16e6ae45d96302577253..98df890c88c6635566b5702080753f5cb0c20598 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -908,6 +908,11 @@ public class Explosion { +@@ -909,6 +909,11 @@ public class Explosion { this.level.densityCache.invalidate(); } // Sakura end - explosion density cache diff --git a/patches/server/0055-Optimise-check-inside-blocks-and-fluids.patch b/patches/server/0055-Optimise-check-inside-blocks-and-fluids.patch index 2131658..4dc98fc 100644 --- a/patches/server/0055-Optimise-check-inside-blocks-and-fluids.patch +++ b/patches/server/0055-Optimise-check-inside-blocks-and-fluids.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise check inside blocks and fluids diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e1af8ca911513146eb04382b95fedbbf39545f91..b8688e0d8eb2ba25c15d9c4bad8d403e4625683d 100644 +index eb90625e5a4b843877ba2f7b2510ba1c26d861ce..8237ed9645ccebc274d3e7bbb16444126638c7a2 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1922,18 +1922,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1924,18 +1924,37 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess BlockPos blockposition1 = BlockPos.containing(axisalignedbb.maxX - offset, axisalignedbb.maxY - offset, axisalignedbb.maxZ - offset); // Sakura end - physics version api @@ -50,7 +50,7 @@ index e1af8ca911513146eb04382b95fedbbf39545f91..b8688e0d8eb2ba25c15d9c4bad8d403e try { iblockdata.entityInside(this.level(), blockposition_mutableblockposition, this); -@@ -4712,7 +4731,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4714,7 +4733,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) { @@ -59,7 +59,7 @@ index e1af8ca911513146eb04382b95fedbbf39545f91..b8688e0d8eb2ba25c15d9c4bad8d403e return false; } else { AABB axisalignedbb = this.getBoundingBox().deflate(0.001D); -@@ -4729,11 +4748,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4731,11 +4750,30 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess int k1 = 0; BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos(); diff --git a/patches/server/0073-Protect-scaffolding-from-creepers.patch b/patches/server/0073-Protect-scaffolding-from-creepers.patch index 880b69f..0ed00d4 100644 --- a/patches/server/0073-Protect-scaffolding-from-creepers.patch +++ b/patches/server/0073-Protect-scaffolding-from-creepers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Protect scaffolding from creepers diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index cfcbbea230982cfa0f496eebcdc660c859650199..5d0db6c87467b6b2bda37b2e3cf5eb76573069a6 100644 +index 98df890c88c6635566b5702080753f5cb0c20598..d7278a4f2a186532a9b4a57af8dad47b86660068 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -179,6 +179,11 @@ public class Explosion { +@@ -180,6 +180,11 @@ public class Explosion { return Optional.of(ZERO_RESISTANCE); } // Sakura end - allow explosions to destroy lava diff --git a/patches/server/0074-Entity-tracking-range-modifier.patch b/patches/server/0074-Entity-tracking-range-modifier.patch index 869fa88..bcb8a52 100644 --- a/patches/server/0074-Entity-tracking-range-modifier.patch +++ b/patches/server/0074-Entity-tracking-range-modifier.patch @@ -33,10 +33,10 @@ index 007bc568d3fb23f08790044aa3171727996927dc..4a5844be3683f502eebe01eed7ff1c2a public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) { super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index ff8580ca3e74e7e28afbfa8c2e566b98ced2dbff..c989f7051167ad6b83f0c916aefd068198711dab 100644 +index 71f9c53cb3a3130adcbbf92a081fbe2b32efd626..581a9efe67f3b803688679609d1feb0b601c9bde 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3017,6 +3017,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3022,6 +3022,18 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return (this.getHandle().requestedViewDistance() == 0) ? Bukkit.getViewDistance() : this.getHandle().requestedViewDistance(); } diff --git a/patches/server/0075-Set-entity-impulse-on-explosion.patch b/patches/server/0075-Set-entity-impulse-on-explosion.patch index df322d7..25dbacd 100644 --- a/patches/server/0075-Set-entity-impulse-on-explosion.patch +++ b/patches/server/0075-Set-entity-impulse-on-explosion.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Set entity impulse on explosion diff --git a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java -index 8ff4ce297e9e799b14d623b49493c5a4638153fc..a0ee26744d27b75d1a979b565cfe96989329ac81 100644 +index 8db362721860fe8d5eb497a766e6d1b7879cb455..911d1d8bef53b549f5f77ca1ed1e5b2e5102ba54 100644 --- a/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java +++ b/src/main/java/me/samsuik/sakura/explosion/special/SpecialisedExplosion.java -@@ -219,6 +219,7 @@ public abstract class SpecialisedExplosion extends Explosion { +@@ -223,6 +223,7 @@ public abstract class SpecialisedExplosion extends Explosion { moveZ += z; } @@ -17,10 +17,10 @@ index 8ff4ce297e9e799b14d623b49493c5a4638153fc..a0ee26744d27b75d1a979b565cfe9698 } } diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index ac98c757f9ee39c9cf6f08f5484eb4cb2d9686b1..6f805008df17b66cdb9f49dd9fb9cba582767348 100644 +index d7278a4f2a186532a9b4a57af8dad47b86660068..60267afc1d0ca0ed2daeff27c804e544f7704700 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -785,6 +785,7 @@ public class Explosion { +@@ -786,6 +786,7 @@ public class Explosion { // Paper end - knockback events } // CraftBukkit end diff --git a/patches/server/0076-Configurable-left-shooting-and-adjusting-limits.patch b/patches/server/0076-Configurable-left-shooting-and-adjusting-limits.patch index 69f83a7..0fb63dd 100644 --- a/patches/server/0076-Configurable-left-shooting-and-adjusting-limits.patch +++ b/patches/server/0076-Configurable-left-shooting-and-adjusting-limits.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable left shooting and adjusting limits diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 33ba8ba3168425268825c24f0d9b7c9778b5b292..6755bd2073f5ad876470906d63cdbac2fbdd1f3a 100644 +index 2e902a96d335abe849a2519fdc94844346046dc3..1912b9b1410073711ca85ed1703886a2d0e72f2b 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -632,6 +632,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -33,7 +33,7 @@ index 33ba8ba3168425268825c24f0d9b7c9778b5b292..6755bd2073f5ad876470906d63cdbac2 public Entity(EntityType type, Level world) { this.id = Entity.ENTITY_COUNTER.incrementAndGet(); -@@ -1664,6 +1682,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1666,6 +1684,25 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess boolean xSmaller = this.physics == null || this.physics.afterOrEqual(1_14_0) ? Math.abs(x) < Math.abs(z) : this.physics.isLegacy() && Math.abs(x) > Math.abs(z); // Sakura end - physics version api