diff --git a/gradle.properties b/gradle.properties index 12f5aa8..ef5071a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group=me.samsuik.sakura -version=1.21.9-R0.1-SNAPSHOT -mcVersion=1.21.9 +version=1.21.10-R0.1-SNAPSHOT +mcVersion=1.21.10 -paperRef=8483163895efbe6d71812c1e2e456330c1aa7859 +paperRef=fba780d6a2948d5a42030a80cf79cb49a8472456 org.gradle.jvmargs=-Xmx2G org.gradle.vfs.watch=false diff --git a/sakura-api/build.gradle.kts.patch b/sakura-api/build.gradle.kts.patch index d071e1f..334580e 100644 --- a/sakura-api/build.gradle.kts.patch +++ b/sakura-api/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts -@@ -68,6 +_,7 @@ +@@ -67,6 +_,7 @@ api("org.apache.maven:maven-resolver-provider:3.9.6") // make API dependency for Paper Plugins implementation("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") implementation("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") @@ -8,7 +8,7 @@ // Annotations - Slowly migrate to jspecify val annotations = "org.jetbrains:annotations:$annotationsVersion" -@@ -90,7 +_,7 @@ +@@ -89,7 +_,7 @@ testRuntimeOnly("org.junit.platform:junit-platform-launcher") } @@ -17,7 +17,7 @@ idea { module { generatedSourceDirs.add(generatedDir.toFile()) -@@ -100,6 +_,18 @@ +@@ -99,6 +_,18 @@ main { java { srcDir(generatedDir) @@ -36,7 +36,7 @@ } } } -@@ -166,7 +_,7 @@ +@@ -165,7 +_,7 @@ tasks.withType().configureEach { val options = options as StandardJavadocDocletOptions @@ -45,7 +45,7 @@ options.use() options.isDocFilesSubDirs = true options.links( -@@ -201,11 +_,11 @@ +@@ -198,11 +_,11 @@ } // workaround for https://github.com/gradle/gradle/issues/4046 diff --git a/sakura-api/src/main/java/me/samsuik/sakura/mechanics/MechanicVersion.java b/sakura-api/src/main/java/me/samsuik/sakura/mechanics/MechanicVersion.java index 8efcf18..ae5a562 100644 --- a/sakura-api/src/main/java/me/samsuik/sakura/mechanics/MechanicVersion.java +++ b/sakura-api/src/main/java/me/samsuik/sakura/mechanics/MechanicVersion.java @@ -25,6 +25,7 @@ public final class MechanicVersion { public static final short v1_21_5 = MinecraftVersionEncoding.v1xy(21, 5); public static final short v1_21_6 = MinecraftVersionEncoding.v1xy(21, 6); public static final short v1_21_9 = MinecraftVersionEncoding.v1xy(21, 9); + public static final short v1_21_10 = MinecraftVersionEncoding.v1xy(21, 10); public static String name(final short version) { if (version == LATEST) { diff --git a/sakura-server/build.gradle.kts.patch b/sakura-server/build.gradle.kts.patch index e22f982..d3e5f23 100644 --- a/sakura-server/build.gradle.kts.patch +++ b/sakura-server/build.gradle.kts.patch @@ -7,7 +7,7 @@ +val serverBrand = rootProject.name dependencies { - mache("io.papermc:mache:1.21.9+build.1") + mache("io.papermc:mache:1.21.10+build.1") @@ -26,6 +_,17 @@ minecraftVersion = providers.gradleProperty("mcVersion") gitFilePatches = false diff --git a/sakura-server/minecraft-patches/features/0001-Track-block-changes-and-level-tick-scheduler.patch b/sakura-server/minecraft-patches/features/0001-Track-block-changes-and-level-tick-scheduler.patch index 279f852..a60e0e9 100644 --- a/sakura-server/minecraft-patches/features/0001-Track-block-changes-and-level-tick-scheduler.patch +++ b/sakura-server/minecraft-patches/features/0001-Track-block-changes-and-level-tick-scheduler.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Track block changes and level tick scheduler diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 9d5d30f70fc348ca31ca88e7d8650ea5e338732d..bb53b16be00c0cbb2f16f749d41aad28b70da872 100644 +index 252fefa6e19b2109d1b228b62a900b038766fbdd..a854d5cbb4cb78795f40e4b2dd81aa773fd3978b 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1793,6 +1793,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop optional = Optional.ofNullable(serverExplosion.getHitPlayers().get(serverPlayer)); @@ -166,7 +166,7 @@ index 1b1e2cb3f97de8bce9a88709e3fe02f7c44c77b6..9a963308d5b1a896b0dfe6a47f7d257a } diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 637d60f082ca7aac689f9e7dc940e8c16d414445..24921be00af8df2314e54373c7014b6831940204 100644 +index 25bb23d613d44986caa118ec6a624c9ce329afb1..adf7db8095404825c392bb6bd399f02345693e9e 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -473,6 +473,7 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -268,7 +268,7 @@ index 7f6cc8f111f6f5df311397a7e31e25fa2c93c685..877a53bb8d0ef0693c6c77f70fe63bc6 if (this.player.containerMenu != oldContainer) { this.player.containerMenu.resumeRemoteUpdates(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 40983aa59d0d8ee7e725c3daf2049a8a9d775d70..8d64020b4c4d5f86ab692db05f40e79b9c42ee68 100644 +index 57f01bf4af29c6a5e0f80c272917cb6aa43855b9..9644382065aa9e3c611e62b3679f753ea5390e33 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -535,6 +535,10 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name diff --git a/sakura-server/minecraft-patches/features/0003-Load-Chunks-on-Movement.patch b/sakura-server/minecraft-patches/features/0003-Load-Chunks-on-Movement.patch index 25f57d8..f8f07f7 100644 --- a/sakura-server/minecraft-patches/features/0003-Load-Chunks-on-Movement.patch +++ b/sakura-server/minecraft-patches/features/0003-Load-Chunks-on-Movement.patch @@ -62,7 +62,7 @@ index 25ea504fa93f78b43237e1c79f8b5685a2aa6d7c..5395b3e0491f197ffea3910d3f172dcd private static TicketType register(String name, long timeout, int flags) { return Registry.register(BuiltInRegistries.TICKET_TYPE, name, new TicketType(timeout, flags)); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 8d64020b4c4d5f86ab692db05f40e79b9c42ee68..245997396ebb84c69ee056d83b02fcbc06cea4d2 100644 +index 9644382065aa9e3c611e62b3679f753ea5390e33..82f8f4bbadf569fd64d3babbb988ebcd7abe59b2 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -539,6 +539,19 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -85,7 +85,7 @@ index 8d64020b4c4d5f86ab692db05f40e79b9c42ee68..245997396ebb84c69ee056d83b02fcbc public Entity(EntityType entityType, Level level) { this.type = entityType; -@@ -1537,7 +1550,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1540,7 +1553,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.getCollisionsForBlocksOrWorldBorder( this.level, (Entity)(Object)this, initialCollisionBox, potentialCollisionsVoxel, potentialCollisionsBB, @@ -94,7 +94,7 @@ index 8d64020b4c4d5f86ab692db05f40e79b9c42ee68..245997396ebb84c69ee056d83b02fcbc ); potentialCollisionsBB.addAll(entityAABBs); final Vec3 collided = ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.performCollisions(movement, currentBox, potentialCollisionsVoxel, potentialCollisionsBB); -@@ -5248,13 +5261,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -5243,13 +5256,14 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @Override public boolean shouldBeSaved() { return (this.removalReason == null || this.removalReason.shouldSave()) diff --git a/sakura-server/minecraft-patches/features/0004-Slice-Packet-obfuscation-and-reduction.patch b/sakura-server/minecraft-patches/features/0004-Slice-Packet-obfuscation-and-reduction.patch index 923e65a..c41d67e 100644 --- a/sakura-server/minecraft-patches/features/0004-Slice-Packet-obfuscation-and-reduction.patch +++ b/sakura-server/minecraft-patches/features/0004-Slice-Packet-obfuscation-and-reduction.patch @@ -153,10 +153,10 @@ index 638432a2e6506d3db6a25c068a33eeafb13cf0d6..c386288e808e97c938f1909d81ebfa00 if (this.entity instanceof LivingEntity) { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 245997396ebb84c69ee056d83b02fcbc06cea4d2..eb157e848ea97ea11bbf233d473e6a62a23bf32f 100644 +index 82f8f4bbadf569fd64d3babbb988ebcd7abe59b2..f66cc3104a4d3f61833ef6fdae79ef4a480aa2dd 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3703,7 +3703,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -3708,7 +3708,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name this.entityData.markDirty(Entity.DATA_AIR_SUPPLY_ID); return; } diff --git a/sakura-server/minecraft-patches/features/0008-Merge-Cannon-Entities.patch b/sakura-server/minecraft-patches/features/0008-Merge-Cannon-Entities.patch index 2bf7b13..0d104bb 100644 --- a/sakura-server/minecraft-patches/features/0008-Merge-Cannon-Entities.patch +++ b/sakura-server/minecraft-patches/features/0008-Merge-Cannon-Entities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Merge Cannon Entities diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index bc714079924b4a724a6f1aa7ccfa53884a9e4fa9..259faa131f4aec7db565c78c38aa058d20ef3d28 100644 +index 477c3436d6586a9fd9f0486bc8102808c15c5bae..4bf46b1a7ce64f39ca7d4e915001f54391a3e89c 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -709,6 +709,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -716,6 +716,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper end - rewrite chunk system this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.levelTickScheduler.repeatingTask(this.explosionPositions::clear, 0); // Sakura - client visibility settings @@ -16,7 +16,7 @@ index bc714079924b4a724a6f1aa7ccfa53884a9e4fa9..259faa131f4aec7db565c78c38aa058d } // Paper start -@@ -827,6 +828,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -834,6 +835,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } io.papermc.paper.entity.activation.ActivationRange.activateEntities(this); // Paper - EAR @@ -24,7 +24,7 @@ index bc714079924b4a724a6f1aa7ccfa53884a9e4fa9..259faa131f4aec7db565c78c38aa058d this.entityTickList .forEach( entity -> { -@@ -845,6 +847,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -852,6 +854,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe entity.stopRiding(); } @@ -41,7 +41,7 @@ index bc714079924b4a724a6f1aa7ccfa53884a9e4fa9..259faa131f4aec7db565c78c38aa058d this.guardEntityTick(this::tickNonPassenger, entity); profilerFiller.pop(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 127479da921c2679e19f13e71cc04be8a310b459..4ce3d09d30996fb2c13afe799bb31d910ce666ba 100644 +index 5fd20439dd1686e5f2ee20d3f89dab78932d5a15..f7d0b0017ebcec507d88f90c9b894cbf51e3511a 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -567,6 +567,27 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -72,7 +72,7 @@ index 127479da921c2679e19f13e71cc04be8a310b459..4ce3d09d30996fb2c13afe799bb31d91 public Entity(EntityType entityType, Level level) { this.type = entityType; -@@ -5241,6 +5262,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -5236,6 +5257,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name if (this.removalReason != Entity.RemovalReason.UNLOADED_TO_CHUNK) { this.getPassengers().forEach(Entity::stopRiding); } // Paper - rewrite chunk system this.levelCallback.onRemove(removalReason); this.onRemoval(removalReason); @@ -292,7 +292,7 @@ index 5f49990b13ac7fdd4366585d976d50bd3ae183cb..93ff0fdaee21ac493833640b5f620f9b protected Level( WritableLevelData levelData, diff --git a/net/minecraft/world/level/block/BasePressurePlateBlock.java b/net/minecraft/world/level/block/BasePressurePlateBlock.java -index fe9b5cf6fb8d8221b98836148e95aa857241181d..f9c1c5a7f0602c225d18005e7161384cc1d3c604 100644 +index 02289b88710f9305192e3fa7eed3e7c45eda1178..2ca8c39c4883ff7f398ed931d560e7cfcf474e1a 100644 --- a/net/minecraft/world/level/block/BasePressurePlateBlock.java +++ b/net/minecraft/world/level/block/BasePressurePlateBlock.java @@ -92,7 +92,7 @@ public abstract class BasePressurePlateBlock extends Block { diff --git a/sakura-server/minecraft-patches/features/0009-Replace-explosion-density-cache.patch b/sakura-server/minecraft-patches/features/0009-Replace-explosion-density-cache.patch index d9616eb..bd6a641 100644 --- a/sakura-server/minecraft-patches/features/0009-Replace-explosion-density-cache.patch +++ b/sakura-server/minecraft-patches/features/0009-Replace-explosion-density-cache.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Replace explosion density cache diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 259faa131f4aec7db565c78c38aa058d20ef3d28..efdf41c42320ac9defd5d0eb206df5aaed012363 100644 +index 4bf46b1a7ce64f39ca7d4e915001f54391a3e89c..f698366f23e9064db89b1b9840f198e9963826c5 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -710,6 +710,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -717,6 +717,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit this.levelTickScheduler.repeatingTask(this.explosionPositions::clear, 0); // Sakura - client visibility settings this.levelTickScheduler.repeatingTask(this.mergeHandler::expire, 200); // Sakura - merge cannon entities @@ -29,7 +29,7 @@ index 93ff0fdaee21ac493833640b5f620f9bec1a69c8..e807aafed0295d8db7ba0782bb1e4625 protected Level( WritableLevelData levelData, diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index a3e47902098331ce1dfcbb96909e4a8cd5d7da78..39a4f8ffb7c0e61d94c4384c4a3f77550fefe16f 100644 +index d93a6ed05a09655704e70a7d7ea75ac44e5942e1..950ac55b64ae86a22cfdad6746460283cd6d35aa 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java @@ -296,7 +296,12 @@ public class ServerExplosion implements Explosion { @@ -98,7 +98,7 @@ index a3e47902098331ce1dfcbb96909e4a8cd5d7da78..39a4f8ffb7c0e61d94c4384c4a3f7755 return blockDensity; diff --git a/net/minecraft/world/level/block/BasePressurePlateBlock.java b/net/minecraft/world/level/block/BasePressurePlateBlock.java -index f9c1c5a7f0602c225d18005e7161384cc1d3c604..a43dfc0ebd28d42d4334021ac7255e496f78c6b7 100644 +index 2ca8c39c4883ff7f398ed931d560e7cfcf474e1a..6949e2486651280777e785868310ac2c93139f4f 100644 --- a/net/minecraft/world/level/block/BasePressurePlateBlock.java +++ b/net/minecraft/world/level/block/BasePressurePlateBlock.java @@ -107,6 +107,11 @@ public abstract class BasePressurePlateBlock extends Block { diff --git a/sakura-server/minecraft-patches/features/0011-Specialised-Explosions.patch b/sakura-server/minecraft-patches/features/0011-Specialised-Explosions.patch index c5802dc..8afb873 100644 --- a/sakura-server/minecraft-patches/features/0011-Specialised-Explosions.patch +++ b/sakura-server/minecraft-patches/features/0011-Specialised-Explosions.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Specialised Explosions diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index efdf41c42320ac9defd5d0eb206df5aaed012363..733c5d7419cae21300d40fb13979dd40ecdd6810 100644 +index f698366f23e9064db89b1b9840f198e9963826c5..0b9ac2b9e07102babf3c8975cae42841b63f1c63 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -1947,7 +1947,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1954,7 +1954,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe case STANDARD -> Explosion.BlockInteraction.DESTROY; // CraftBukkit - handle custom explosion type }; Vec3 vec3 = new Vec3(x, y, z); @@ -24,7 +24,7 @@ index efdf41c42320ac9defd5d0eb206df5aaed012363..733c5d7419cae21300d40fb13979dd40 if (configurator != null) configurator.accept(serverExplosion);// Paper - Allow explosions to damage source int i = serverExplosion.explode(); // CraftBukkit start -@@ -1955,6 +1962,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1962,6 +1969,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe return serverExplosion; } // CraftBukkit end @@ -54,7 +54,7 @@ index efdf41c42320ac9defd5d0eb206df5aaed012363..733c5d7419cae21300d40fb13979dd40 ParticleOptions particleOptions = serverExplosion.isSmall() ? smallExplosionParticles : largeExplosionParticles; for (ServerPlayer serverPlayer : this.players) { -@@ -1977,7 +2007,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1984,7 +2014,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } } @@ -90,7 +90,7 @@ index 8a36e0ce4792e7152905256dde7746fd09d42729..b349149592b09512b573911e95fd1391 // Sakura end - merge cannon entities diff --git a/net/minecraft/world/level/ServerExplosion.java b/net/minecraft/world/level/ServerExplosion.java -index 17aaa7cd99f9a0f1d1c31c72bea2973eeb71e600..0f95ffa2551289cb74d0210673b942ca90be74d3 100644 +index 9833450075b97720371340ac05f485cdc62edab9..301c8846d4c77c450d693ab3b42be476ec07dfcc 100644 --- a/net/minecraft/world/level/ServerExplosion.java +++ b/net/minecraft/world/level/ServerExplosion.java @@ -327,6 +327,38 @@ public class ServerExplosion implements Explosion { diff --git a/sakura-server/minecraft-patches/features/0012-Optimise-cannon-entity-movement.patch b/sakura-server/minecraft-patches/features/0012-Optimise-cannon-entity-movement.patch index 823151b..518c851 100644 --- a/sakura-server/minecraft-patches/features/0012-Optimise-cannon-entity-movement.patch +++ b/sakura-server/minecraft-patches/features/0012-Optimise-cannon-entity-movement.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise cannon entity movement diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 4ce3d09d30996fb2c13afe799bb31d910ce666ba..0c20de0f6af0385a7849cb9b0be86049784d59ae 100644 +index f7d0b0017ebcec507d88f90c9b894cbf51e3511a..128f62186d18186b7ba3a0c40a2723b8a933e8fb 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -1200,7 +1200,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1203,7 +1203,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name Vec3 vec3 = this.collide(movement); double d = vec3.lengthSqr(); if (d > 1.0E-7 || movement.lengthSqr() - d < 1.0E-7) { @@ -17,7 +17,7 @@ index 4ce3d09d30996fb2c13afe799bb31d910ce666ba..0c20de0f6af0385a7849cb9b0be86049 double min = Math.min(vec3.length(), 8.0); Vec3 vec31 = this.position().add(vec3.normalize().scale(min)); BlockHitResult blockHitResult = this.level() -@@ -1555,6 +1555,132 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1558,6 +1558,132 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return list.isEmpty() ? distance : -Shapes.collide(Direction.Axis.Y, boundingBox, list, -distance); } diff --git a/sakura-server/minecraft-patches/features/0017-Configure-cannon-physics.patch b/sakura-server/minecraft-patches/features/0017-Configure-cannon-physics.patch index 19dafdb..58275c8 100644 --- a/sakura-server/minecraft-patches/features/0017-Configure-cannon-physics.patch +++ b/sakura-server/minecraft-patches/features/0017-Configure-cannon-physics.patch @@ -83,7 +83,7 @@ index 703a75c7c6cd05a95afb630973250898dbc7223d..1531f0c275814e1346fef34dc06ea976 // CraftBukkit end serverLevel.addFreshEntity(primedTnt); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31a6818a2e 100644 +index 128f62186d18186b7ba3a0c40a2723b8a933e8fb..c9f5accf384bae21b0a177526e77429f9795d975 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -588,6 +588,13 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -121,7 +121,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 // Paper start - EAR 2 this.activatedTick = Math.max(this.activatedTick, net.minecraft.server.MinecraftServer.currentTick + 20); this.activatedImmunityTick = Math.max(this.activatedImmunityTick, net.minecraft.server.MinecraftServer.currentTick + 20); -@@ -1199,10 +1209,17 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1202,10 +1212,17 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name movement = this.maybeBackOffFromEdge(movement, type); Vec3 vec3 = this.collide(movement); double d = vec3.lengthSqr(); @@ -143,7 +143,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 BlockHitResult blockHitResult = this.level() .clip(new ClipContext(this.position(), vec31, ClipContext.Block.FALLDAMAGE_RESETTING, ClipContext.Fluid.WATER, this)); if (blockHitResult.getType() != HitResult.Type.MISS) { -@@ -1211,9 +1228,15 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1214,9 +1231,15 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } Vec3 vec32 = this.position(); @@ -162,7 +162,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 } profilerFiller.pop(); -@@ -1244,6 +1267,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1247,6 +1270,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } else { if (this.horizontalCollision) { Vec3 deltaMovement = this.getDeltaMovement(); @@ -174,7 +174,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 this.setDeltaMovement(flag ? 0.0 : deltaMovement.x, deltaMovement.y, flag1 ? 0.0 : deltaMovement.z); } -@@ -1585,7 +1613,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1588,7 +1616,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } this.collectCollisions(bb, voxelList, bbList, ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.COLLISION_FLAG_CHECK_BORDER); @@ -183,7 +183,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 } private Vec3 collideAxisScan(final Vec3 movement, AABB currBoundingBox, final List voxelList, final List bbList) { -@@ -1593,7 +1621,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1596,7 +1624,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name double y = movement.y; double z = movement.z; @@ -192,7 +192,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 if (y != 0.0) { y = this.scanY(currBoundingBox, y, voxelList, bbList); -@@ -1715,7 +1743,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1718,7 +1746,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.COLLISION_FLAG_CHECK_BORDER | this.getExtraCollisionFlags(), null // Sakura - load chunks on movement ); potentialCollisionsBB.addAll(entityAABBs); @@ -201,7 +201,7 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 final boolean collidedX = collided.x != movement.x; final boolean collidedY = collided.y != movement.y; -@@ -1838,25 +1866,37 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1841,25 +1869,37 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name private void checkInsideBlocks(List movements, InsideBlockEffectApplier.StepBasedCollector stepBasedCollector) { if (this.isAffectedByBlocks()) { LongSet set = this.visitedBlocks; @@ -244,30 +244,34 @@ index 0c20de0f6af0385a7849cb9b0be86049784d59ae..87948a1f3ff9b9e5ac2de8e4eb033e31 this.checkInsideBlocks(movement.to(), movement.to(), stepBasedCollector, set, 1); } } -@@ -1866,7 +1906,17 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1869,8 +1909,20 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } private int checkInsideBlocks(Vec3 from, Vec3 to, InsideBlockEffectApplier.StepBasedCollector stepBasedCollector, LongSet visited, int maxSteps) { - AABB aabb = this.makeBoundingBox(to).deflate(1.0E-5F); +- boolean flag = from.distanceToSqr(to) > Mth.square(0.9999900000002526); + // Sakura start - configure server mechanics ++ final me.samsuik.sakura.mechanics.MinecraftMechanicsTarget mechanicsTarget = this.mechanicsTarget; + final double margin; -+ if (this.mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_2)) { ++ if (mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_2)) { + margin = 1.0e-5f; -+ } else if (this.mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_19_3)) { ++ } else if (mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_19_3)) { + margin = 1.0e-7f; + } else { + margin = 0.001; + } -+ AABB aabb = this.makeBoundingBox(to).deflate(margin); ++ final AABB aabb = this.makeBoundingBox(to).deflate(margin); ++ boolean flag = mechanicsTarget.before(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_10) ++ || from.distanceToSqr(to) > Mth.square(0.9999900000002526); + // Sakura end - configure server mechanics - boolean flag = this.level instanceof ServerLevel serverLevel + boolean flag1 = this.level instanceof ServerLevel serverLevel && serverLevel.getServer().debugSubscribers().hasAnySubscriberFor(DebugSubscriptions.ENTITY_BLOCK_INTERSECTIONS); AtomicInteger atomicInteger = new AtomicInteger(); -@@ -1874,6 +1924,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1878,6 +1930,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name from, to, aabb, -+ this.mechanicsTarget, // Sakura - configure server mechanics ++ mechanicsTarget, // Sakura - configure server mechanics (pos, index) -> { if (!this.isAlive()) { return false; @@ -693,11 +697,11 @@ index 0c6ae65fc58d63a0b80f3bc1ffa0c9a1bb33de83..f291dc3b3f3e3b8da221f42580ed26c4 level.playSound( null, diff --git a/net/minecraft/world/level/block/HoneyBlock.java b/net/minecraft/world/level/block/HoneyBlock.java -index c15cd4d68e3168d63dba10122a74abe9a884f80d..6da4f87a7ce49f3ad86ca456a9aba66e2a5d1439 100644 +index 009f6b118e227b8a037a7b39b7d4a319518e5765..0a9009dc26edb0c6904cdf484463c5c33e5099de 100644 --- a/net/minecraft/world/level/block/HoneyBlock.java +++ b/net/minecraft/world/level/block/HoneyBlock.java @@ -71,11 +71,19 @@ public class HoneyBlock extends HalfTransparentBlock { - super.entityInside(state, level, pos, entity, effectApplier); + super.entityInside(state, level, pos, entity, effectApplier, flag); } - private static double getOldDeltaY(double deltaY) { @@ -822,7 +826,7 @@ index 4c6c68eedba2d5acdde6cf760e53b8e81f75f001..ce27dfb14974d452f50c191a3eeec65d } else { if (isCross(state) || isDot(state)) { diff --git a/net/minecraft/world/level/block/WaterlilyBlock.java b/net/minecraft/world/level/block/WaterlilyBlock.java -index 3b3047aa1198754e64913634f76fdc015c1fe07d..4e88020dc0036145281f86b7f5eaf4620dd0dfef 100644 +index cbb81c8bf5f689f276e74548ce324a8c35357e3a..bdd0b1bcb97d9505d49994737f4c847e3423b1f9 100644 --- a/net/minecraft/world/level/block/WaterlilyBlock.java +++ b/net/minecraft/world/level/block/WaterlilyBlock.java @@ -24,6 +24,15 @@ public class WaterlilyBlock extends VegetationBlock { diff --git a/sakura-server/minecraft-patches/features/0022-Add-entity-travel-distance-limits.patch b/sakura-server/minecraft-patches/features/0022-Add-entity-travel-distance-limits.patch index 43178ca..5328baa 100644 --- a/sakura-server/minecraft-patches/features/0022-Add-entity-travel-distance-limits.patch +++ b/sakura-server/minecraft-patches/features/0022-Add-entity-travel-distance-limits.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add entity travel distance limits diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 733c5d7419cae21300d40fb13979dd40ecdd6810..aca28d1e2530d239b0e2b55f75c6d0e398841ea1 100644 +index 0b9ac2b9e07102babf3c8975cae42841b63f1c63..c94aa1d950a18a29692f9c4e668c8495985ca4c8 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -1336,6 +1336,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1343,6 +1343,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe final boolean isActive = io.papermc.paper.entity.activation.ActivationRange.checkIfActive(entity); // Paper - EAR 2 if (isActive) { // Paper - EAR 2 entity.tick(); @@ -21,7 +21,7 @@ index 733c5d7419cae21300d40fb13979dd40ecdd6810..aca28d1e2530d239b0e2b55f75c6d0e3 } else {entity.inactiveTick();} // Paper - EAR 2 profilerFiller.pop(); diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 6d1edbfd851737d19ce0a3ffa4914c6beecaa440..4ceffc9f043ef3c3063e8dc2b4cda753ad4d8059 100644 +index a0e8c5d822c9312054c682d2727d05eb9d885cd5..c5d38a77e28574d54677cd23b690f9ea3994ee63 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -603,6 +603,18 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name diff --git a/sakura-server/minecraft-patches/features/0024-Configurable-left-shooting-and-adjusting-limits.patch b/sakura-server/minecraft-patches/features/0024-Configurable-left-shooting-and-adjusting-limits.patch index cd58587..925fa47 100644 --- a/sakura-server/minecraft-patches/features/0024-Configurable-left-shooting-and-adjusting-limits.patch +++ b/sakura-server/minecraft-patches/features/0024-Configurable-left-shooting-and-adjusting-limits.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Configurable left shooting and adjusting limits diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 4ceffc9f043ef3c3063e8dc2b4cda753ad4d8059..5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a 100644 +index c5d38a77e28574d54677cd23b690f9ea3994ee63..679a377f068ce4f37b2a3e6f446cccc51fb29bf9 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -615,6 +615,47 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name @@ -56,7 +56,7 @@ index 4ceffc9f043ef3c3063e8dc2b4cda753ad4d8059..5a8fdf9af5b64d2e365151c178b2fbe4 public Entity(EntityType entityType, Level level) { this.type = entityType; -@@ -1652,6 +1693,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1655,6 +1696,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } if (xSmaller && z != 0.0) { @@ -64,7 +64,7 @@ index 4ceffc9f043ef3c3063e8dc2b4cda753ad4d8059..5a8fdf9af5b64d2e365151c178b2fbe4 z = this.scanZ(currBoundingBox, z, voxelList, bbList); if (z != 0.0) { currBoundingBox = ca.spottedleaf.moonrise.patches.collisions.CollisionUtil.offsetZ(currBoundingBox, z); -@@ -1659,6 +1701,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1662,6 +1704,11 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } if (x != 0.0) { diff --git a/sakura-server/minecraft-patches/features/0026-Optimise-check-inside-blocks-and-traverse-blocks.patch b/sakura-server/minecraft-patches/features/0026-Optimise-check-inside-blocks-and-traverse-blocks.patch index 6cdef2a..f3fbbaa 100644 --- a/sakura-server/minecraft-patches/features/0026-Optimise-check-inside-blocks-and-traverse-blocks.patch +++ b/sakura-server/minecraft-patches/features/0026-Optimise-check-inside-blocks-and-traverse-blocks.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Optimise check inside blocks and traverse blocks diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a3adb7756 100644 +index 679a377f068ce4f37b2a3e6f446cccc51fb29bf9..d2bd693934b27815e388387b9b9a707d75999cad 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -1935,6 +1935,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1938,6 +1938,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name if (this.isAffectedByBlocks()) { LongSet set = this.visitedBlocks; final me.samsuik.sakura.mechanics.MinecraftMechanicsTarget mechanicsTarget = this.mechanicsTarget; // Sakura - configure server mechanics @@ -16,7 +16,7 @@ index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a for (Entity.Movement movement : movements) { Vec3 vec3 = movement.from; -@@ -1952,7 +1953,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1955,7 +1956,7 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name double d = vec31.get(axis); if (d != 0.0) { Vec3 vec32 = vec3.relative(axis.getPositive(), d); @@ -25,7 +25,7 @@ index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a if (mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_9)) { i -= stepsTaken; } -@@ -1960,12 +1961,12 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1963,12 +1964,12 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } } } else if (mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_2)) { @@ -40,7 +40,7 @@ index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a } } -@@ -1973,7 +1974,16 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -1976,7 +1977,16 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name } } @@ -56,9 +56,9 @@ index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a + ) { + // Sakura end - optimise check inside blocks // Sakura start - configure server mechanics + final me.samsuik.sakura.mechanics.MinecraftMechanicsTarget mechanicsTarget = this.mechanicsTarget; final double margin; - if (this.mechanicsTarget.atLeast(me.samsuik.sakura.mechanics.MechanicVersion.v1_21_2)) { -@@ -2000,7 +2010,20 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name +@@ -2006,7 +2016,20 @@ public abstract class Entity implements SyncedDataHolder, DebugValueSource, Name return false; } else { atomicInteger.set(index); @@ -78,7 +78,7 @@ index 5a8fdf9af5b64d2e365151c178b2fbe4468f9a2a..bc6e2cd985f28a79c843efe93e8b847a + final BlockState blockState = chunk.getBlockState(pos); + // Sakura end - optimise check inside blocks if (blockState.isAir()) { - if (flag) { + if (flag1) { this.debugBlockIntersection((ServerLevel)this.level(), pos.immutable(), false, false); diff --git a/net/minecraft/world/level/BlockGetter.java b/net/minecraft/world/level/BlockGetter.java index ba2e7efe147b26bea5d73eac1f4b2fe6ee4bd5c2..b9ed6671edc98fe7a4bb30fdd25a6629e852da4f 100644 diff --git a/sakura-server/minecraft-patches/features/0028-Cache-vanilla-and-eigencraft-redstone-wires.patch b/sakura-server/minecraft-patches/features/0028-Cache-vanilla-and-eigencraft-redstone-wires.patch index bacc478..5a41db0 100644 --- a/sakura-server/minecraft-patches/features/0028-Cache-vanilla-and-eigencraft-redstone-wires.patch +++ b/sakura-server/minecraft-patches/features/0028-Cache-vanilla-and-eigencraft-redstone-wires.patch @@ -33,10 +33,10 @@ index ff747a1ecdf3c888bca0d69de4f85dcd810b6139..d90f6aa4557b5863eba6a206226f763c } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index d9958a1358bd949b302c852bef096eb690acf702..2bc7ad463b21faed3ba25e6e127925e6b5a8cf95 100644 +index c94aa1d950a18a29692f9c4e668c8495985ca4c8..0ee3033ef6533dd3ca7ec4b2ba48cfb85a03f596 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -711,6 +711,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -718,6 +718,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.levelTickScheduler.repeatingTask(this.explosionPositions::clear, 0); // Sakura - client visibility settings this.levelTickScheduler.repeatingTask(this.mergeHandler::expire, 200); // Sakura - merge cannon entities this.levelTickScheduler.repeatingTask(this.densityCache::expire, 0); // Sakura - explosion density cache @@ -108,7 +108,7 @@ index ce27dfb14974d452f50c191a3eeec65d3deff6a3..8a53126b192dca8ee86b47a50da8273d : powerValue; } diff --git a/net/minecraft/world/level/block/state/BlockBehaviour.java b/net/minecraft/world/level/block/state/BlockBehaviour.java -index 7ee94845b69139f7c419b9d6ee24ba1db0e69975..d90389c515255df8273a69c652ba524135928482 100644 +index 1867661f9790246ca5ced9ba9c8a3f3ed75ed361..6d4032ead7ee32c71f000261b1440fd3255f78e7 100644 --- a/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/net/minecraft/world/level/block/state/BlockBehaviour.java @@ -524,6 +524,13 @@ public abstract class BlockBehaviour implements FeatureElement { diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index 141d486..45a7e07 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -26,7 +26,7 @@ // Paper start - rewrite chunk system private volatile Throwable chunkSystemCrash; -@@ -512,6 +_,10 @@ +@@ -528,6 +_,10 @@ Runtime.getRuntime().addShutdownHook(new org.bukkit.craftbukkit.util.ServerShutdownThread(this)); // CraftBukkit end this.paperConfigurations = services.paper().configurations(); // Paper - add paper configuration files @@ -37,7 +37,7 @@ } private void readScoreboard(DimensionDataStorage dataStorage) { -@@ -1277,6 +_,11 @@ +@@ -1293,6 +_,11 @@ this.currentTickStart = tickStart; ++MinecraftServer.currentTick; @@ -49,7 +49,7 @@ // Paper end - improve tick loop boolean flag = l == 0L; -@@ -1303,6 +_,7 @@ +@@ -1319,6 +_,7 @@ this.tickFrame.end(); this.recordEndOfTick(); // Paper - improve tick loop profilerFiller.popPush("nextTickWait"); diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch index 63b5850..9f50752 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/server/level/ServerLevel.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java -@@ -602,7 +_,7 @@ +@@ -609,7 +_,7 @@ org.bukkit.generator.BiomeProvider biomeProvider // CraftBukkit ) { // CraftBukkit start diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 4af8b6d..4f4e10b 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -8,7 +8,7 @@ public Entity(EntityType entityType, Level level) { this.type = entityType; -@@ -4301,7 +_,7 @@ +@@ -4306,7 +_,7 @@ } public boolean isPushedByFluid() { diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch index c5e62d1..3732781 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/BubbleColumnBlock.java.patch @@ -2,7 +2,7 @@ +++ b/net/minecraft/world/level/block/BubbleColumnBlock.java @@ -50,6 +_,13 @@ @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(level, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent + // Sakura start - configure bubble columns affecting cannon entities + if (!level.sakuraConfig().cannons.tntAndSandAffectedByBubbleColumns && ( @@ -11,6 +11,6 @@ + return; + } + // Sakura end - configure bubble columns affecting cannon entities - BlockState blockState = level.getBlockState(pos.above()); - boolean flag = blockState.getCollisionShape(level, pos).isEmpty() && blockState.getFluidState().isEmpty(); if (flag) { + BlockState blockState = level.getBlockState(pos.above()); + boolean flag1 = blockState.getCollisionShape(level, pos).isEmpty() && blockState.getFluidState().isEmpty(); diff --git a/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/WebBlock.java.patch b/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/WebBlock.java.patch index 9a9d901..998cdb6 100644 --- a/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/WebBlock.java.patch +++ b/sakura-server/minecraft-patches/sources/net/minecraft/world/level/block/WebBlock.java.patch @@ -39,4 +39,4 @@ + // Sakura end - configure players colliding with cobwebs @Override - protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier) { + protected void entityInside(BlockState state, Level level, BlockPos pos, Entity entity, InsideBlockEffectApplier effectApplier, boolean flag) { diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch new file mode 100644 index 0000000..1fe26ff --- /dev/null +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java.patch @@ -0,0 +1,100 @@ +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -347,7 +_,6 @@ + + @Override + public void setArrowCooldown(int ticks) { +- Preconditions.checkArgument(ticks >= 0, "Amount of ticks before next arrow removal must be non-negative"); + this.getHandle().removeArrowTime = ticks; + } + +@@ -358,7 +_,7 @@ + + @Override + public void setArrowsInBody(final int count, final boolean fireEvent) { // Paper +- Preconditions.checkArgument(count >= 0, "New arrow amount must be non-negative"); ++ Preconditions.checkArgument(count >= 0, "New arrow amount must be >= 0"); + if (!fireEvent) { + this.getHandle().getEntityData().set(net.minecraft.world.entity.LivingEntity.DATA_ARROW_COUNT_ID, count); + } else { +@@ -366,32 +_,56 @@ + } + } + ++ // Paper start - Add methods for working with arrows stuck in living entities ++ @Override ++ public void setNextArrowRemoval(final int ticks) { ++ Preconditions.checkArgument(ticks >= 0, "New amount of ticks before next arrow removal must be >= 0"); ++ this.getHandle().removeArrowTime = ticks; ++ } ++ ++ @Override ++ public int getNextArrowRemoval() { ++ return this.getHandle().removeArrowTime; ++ } ++ // Paper end - Add methods for working with arrows stuck in living entities ++ + @Override + public boolean isInvulnerable() { + return this.getHandle().isInvulnerableTo((ServerLevel) this.getHandle().level(), this.getHandle().damageSources().generic()); + } +- ++ // Paper start - Bee Stinger API + @Override + public int getBeeStingerCooldown() { +- return this.getHandle().removeStingerTime; ++ return getHandle().removeStingerTime; + } + + @Override + public void setBeeStingerCooldown(int ticks) { +- Preconditions.checkArgument(ticks >= 0, "New amount of ticks before next bee stinger removal must be non-negative"); +- this.getHandle().removeStingerTime = ticks; ++ getHandle().removeStingerTime = ticks; + } + + @Override + public int getBeeStingersInBody() { +- return this.getHandle().getStingerCount(); ++ return getHandle().getStingerCount(); + } + + @Override + public void setBeeStingersInBody(int count) { + Preconditions.checkArgument(count >= 0, "New bee stinger amount must be >= 0"); +- this.getHandle().setStingerCount(count); +- } ++ getHandle().setStingerCount(count); ++ } ++ ++ @Override ++ public void setNextBeeStingerRemoval(final int ticks) { ++ Preconditions.checkArgument(ticks >= 0, "New amount of ticks before next bee stinger removal must be >= 0"); ++ this.getHandle().removeStingerTime = ticks; ++ } ++ ++ @Override ++ public int getNextBeeStingerRemoval() { ++ return this.getHandle().removeStingerTime; ++ } ++ // Paper end - Bee Stinger API + + @Override + public void damage(double amount) { +@@ -941,6 +_,16 @@ + @Override + public float getUpwardsMovement() { + return this.getHandle().yya; ++ } ++ ++ @Override ++ public int getArrowsStuck() { ++ return this.getHandle().getArrowCount(); ++ } ++ ++ @Override ++ public void setArrowsStuck(final int arrows) { ++ this.getHandle().setArrowCount(arrows); + } + + @Override diff --git a/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/ApiVersion.java.patch b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/ApiVersion.java.patch new file mode 100644 index 0000000..14b2eb9 --- /dev/null +++ b/sakura-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/ApiVersion.java.patch @@ -0,0 +1,11 @@ +--- a/src/main/java/org/bukkit/craftbukkit/util/ApiVersion.java ++++ b/src/main/java/org/bukkit/craftbukkit/util/ApiVersion.java +@@ -17,7 +_,7 @@ + + static { + versions = new HashMap<>(); +- CURRENT = getOrCreateVersion("1.21.10"); ++ CURRENT = getOrCreateVersion("1.21.9"); + FLATTENING = getOrCreateVersion("1.13"); + FIELD_NAME_PARITY = getOrCreateVersion("1.20.5"); + ABSTRACT_COW = getOrCreateVersion("1.21.5");