9
0
mirror of https://github.com/Samsuik/Sakura.git synced 2025-12-21 15:59:26 +00:00

Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@914fb08 Fix Entity#updateFluidHeightAndDoFluidPushing inconsistency with Vanilla
PaperMC/Paper@e9fa3a7 Use correct queue when blocking on futures
PaperMC/Paper@0ff899d Prevent world mutation on copper golem spawn cancel (#13152)
PaperMC/Paper@bae47d3 Update to 1.21.10 (#13127)
PaperMC/Paper@8339bb3 Update DataConverter constants for 1.21.10
PaperMC/Paper@3982efa Sync Moonrise
PaperMC/Paper@fa57d4b Remove Vanilla packet processing at start of tick
PaperMC/Paper@fba780d Rebuild patches
This commit is contained in:
Samsuik
2025-10-07 20:21:51 +01:00
parent 96634b9263
commit 1530ca1264
24 changed files with 202 additions and 86 deletions

View File

@@ -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

View File

@@ -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<Javadoc>().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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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<TickTa
@@ -1809,6 +1809,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
profilerFiller.pop();
profilerFiller.pop();
serverLevel.explosionDensityCache.clear(); // Paper - Optimize explosions

View File

@@ -36,7 +36,7 @@ index 6987eeace609fbfba967922e558e09268e0f6d44..e45e2d6094620d761b624bfaf5dfbbed
final CompoundTag tag;
diff --git a/net/minecraft/server/level/ChunkMap.java b/net/minecraft/server/level/ChunkMap.java
index 88035581d220dd3653fa2d30102e59e9a9340002..f9dfbf11a39573e839153fd5d72bcf9019540359 100644
index c151134781e5a02892b79401595e897eb1733e86..3757c436b7a181831eb6a362549c89f361e96868 100644
--- a/net/minecraft/server/level/ChunkMap.java
+++ b/net/minecraft/server/level/ChunkMap.java
@@ -173,6 +173,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -109,10 +109,10 @@ index 88035581d220dd3653fa2d30102e59e9a9340002..f9dfbf11a39573e839153fd5d72bcf90
if (flag && !player.getBukkitEntity().canSee(this.entity.getBukkitEntity())) { // Paper - only consider hits
flag = false;
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 1b1e2cb3f97de8bce9a88709e3fe02f7c44c77b6..9a963308d5b1a896b0dfe6a47f7d257a173719c5 100644
index 88a296df6eeeb50c25f370ccab802a3277943d59..477c3436d6586a9fd9f0486bc8102808c15c5bae 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -584,6 +584,22 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -591,6 +591,22 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.playerTickingChunks.remove((LevelChunk)chunkHolder.getCurrentChunk());
}
// Paper end - chunk tick iteration
@@ -135,7 +135,7 @@ index 1b1e2cb3f97de8bce9a88709e3fe02f7c44c77b6..9a963308d5b1a896b0dfe6a47f7d257a
public ServerLevel(
MinecraftServer server,
@@ -692,6 +708,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -699,6 +715,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
this.chunkDataController = new ca.spottedleaf.moonrise.patches.chunk_system.io.datacontroller.ChunkDataController((ServerLevel)(Object)this, this.chunkTaskScheduler);
// Paper end - rewrite chunk system
this.getCraftServer().addWorld(this.getWorld()); // CraftBukkit
@@ -143,7 +143,7 @@ index 1b1e2cb3f97de8bce9a88709e3fe02f7c44c77b6..9a963308d5b1a896b0dfe6a47f7d257a
}
// Paper start
@@ -1931,7 +1948,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -1938,7 +1955,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
for (ServerPlayer serverPlayer : this.players) {
if (serverPlayer.distanceToSqr(vec3) < 4096.0) {
Optional<Vec3> 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

View File

@@ -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())

View File

@@ -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;
}

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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 {

View File

@@ -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);
}

View File

@@ -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<VoxelShape> voxelList, final List<AABB> 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<Entity.Movement> 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 {

View File

@@ -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

View File

@@ -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) {

View File

@@ -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

View File

@@ -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 {

View File

@@ -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");

View File

@@ -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

View File

@@ -8,7 +8,7 @@
public Entity(EntityType<?> entityType, Level level) {
this.type = entityType;
@@ -4301,7 +_,7 @@
@@ -4306,7 +_,7 @@
}
public boolean isPushedByFluid() {

View File

@@ -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();

View File

@@ -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) {

View File

@@ -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

View File

@@ -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");