diff --git a/README.md b/README.md
index 795ef18..2746fc0 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,5 @@ Patches are licensed under GPL-3.0, unless indicated differently in their header
Binaries are licensed under GPL-3.0.
## TODO
-check Simpler ShapelessRecipe comparison for vanilla patch
check Cache CubeVoxelShape shape array (crash)
check backupRegionFile() in Add xor-shift random patch
\ No newline at end of file
diff --git a/gradle.properties b/gradle.properties
index 714605c..e51ff0d 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -2,7 +2,7 @@ group=org.galemc.gale
version=1.21-R0.1-SNAPSHOT
mcVersion=1.21
-paperRef=20889d04d8c7a11ff76061d99abcb58acd470fe7
+paperRef=7bd22b1835af2611c5ad597aef6470b1ece9b547
org.gradle.caching=false
org.gradle.parallel=true
diff --git a/patches/server/0008-Gale-configuration.patch b/patches/server/0008-Gale-configuration.patch
index 0179671..8648273 100644
--- a/patches/server/0008-Gale-configuration.patch
+++ b/patches/server/0008-Gale-configuration.patch
@@ -289,10 +289,10 @@ index 7d82cc6b847124cf4225428ba310309544928148..ac703c9ef504779dffbd8d7e676dbb51
if (this.convertOldUsers()) {
this.getProfileCache().save(false); // Paper
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 2d97ca1f3c625c0206d35b785c57d9587924ed0a..152ac3595ae74f2b5dc5cacc72a539d16590d786 100644
+index 2a752deb8cc44b49588be37198fe394a9c95683e..4b26fc350758822eae8d4d740e4276d4f17c59e0 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -519,7 +519,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -525,7 +525,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// Holder holder = worlddimension.type(); // CraftBukkit - decompile error
// Objects.requireNonNull(minecraftserver); // CraftBukkit - decompile error
@@ -302,7 +302,7 @@ index 2d97ca1f3c625c0206d35b785c57d9587924ed0a..152ac3595ae74f2b5dc5cacc72a539d1
this.convertable = convertable_conversionsession;
this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile());
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
-index fa6b8ce6505a3c094187298a63b0e944e1e74af1..e27f118ff2f49234dee68bb89086d7f9d5e62130 100644
+index 0d202ce8eb88bfdb8ca3306593d758fa483d8612..73407a5d33a24b50a250c38bc81f9a0f590e9f93 100644
--- a/src/main/java/net/minecraft/world/level/Level.java
+++ b/src/main/java/net/minecraft/world/level/Level.java
@@ -12,7 +12,6 @@ import java.util.function.Supplier;
diff --git a/patches/server/0017-Remove-vanilla-profiler.patch b/patches/server/0017-Remove-vanilla-profiler.patch
index a3765c7..847b403 100644
--- a/patches/server/0017-Remove-vanilla-profiler.patch
+++ b/patches/server/0017-Remove-vanilla-profiler.patch
@@ -614,7 +614,7 @@ index 831aaddd6d611a02d7066f002d0f1c8a46caffe6..e510366a69f44ea1772f5bbd1cf799d3
public SampleLogger getTickTimeLogger() {
return this.tickTimeLogger;
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
-index c96740a82eac9101f74edeb44edf4b64d1d633e0..57d46c0a1e85d82361e4694f50dfc02e6e687166 100644
+index 6df79aab2f0a75bbe347dc92e9ed5d62ceec7983..d3c0c50646794b36ffa5c6a8f6292eca5d575528 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -65,7 +65,6 @@ import net.minecraft.server.network.ServerPlayerConnection;
@@ -752,7 +752,7 @@ index 64ed296cfbe7e5d27286b8cee70454fd1d99ebb0..ebae8578a2d0dfd0d329861f45d0f278
}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147ad55418d7 100644
+index 4b26fc350758822eae8d4d740e4276d4f17c59e0..713360d4135b5b586176ba6897e8c9f533e48b32 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -80,7 +80,6 @@ import net.minecraft.util.ProgressListener;
@@ -763,7 +763,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
import net.minecraft.util.valueproviders.IntProvider;
import net.minecraft.util.valueproviders.UniformInt;
import net.minecraft.world.DifficultyInstance;
-@@ -519,15 +518,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -525,15 +524,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// Holder holder = worlddimension.type(); // CraftBukkit - decompile error
// Objects.requireNonNull(minecraftserver); // CraftBukkit - decompile error
@@ -784,7 +784,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
this.pathTypesByPosCache = new PathTypeCache();
this.navigatingMobs = new ObjectOpenHashSet();
this.blockEvents = new ObjectLinkedOpenHashSet();
-@@ -640,16 +641,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -646,16 +647,12 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
public void tick(BooleanSupplier shouldKeepTicking) {
@@ -801,7 +801,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
this.advanceWeatherCycle();
}
-@@ -681,30 +678,23 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -687,30 +684,23 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
this.tickTime();
}
@@ -832,7 +832,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
if (flag) {
this.timings.doSounds.startTiming(); // Spigot
this.runBlockEvents();
-@@ -712,7 +702,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -718,7 +708,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
this.handlingTick = false;
@@ -840,7 +840,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
boolean flag1 = !paperConfig().unsupportedSettings.disableWorldTickingWhenEmpty || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players // Paper - restore this
if (flag1) {
-@@ -720,12 +709,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -726,12 +715,9 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
if (flag1 || this.emptyTime++ < 300) {
@@ -853,7 +853,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
-@@ -735,9 +721,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -741,9 +727,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
entity.discard();
} else if (!tickratemanager.isEntityFrozen(entity)) {
@@ -863,7 +863,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
if (true || this.chunkSource.chunkMap.getDistanceManager().inEntityTickingRange(entity.chunkPosition().toLong())) { // Paper - rewrite chunk system
Entity entity1 = entity.getVehicle();
-@@ -749,22 +733,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -755,22 +739,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
entity.stopRiding();
}
@@ -886,7 +886,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
}
@Override
-@@ -823,9 +802,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -829,9 +808,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
boolean flag = this.isRaining();
int j = chunkcoordintpair.getMinBlockX();
int k = chunkcoordintpair.getMinBlockZ();
@@ -896,7 +896,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
if (!this.paperConfig().environment.disableThunder && flag && this.isThundering() && this.spigotConfig.thunderChance > 0 && this.random.nextInt(this.spigotConfig.thunderChance) == 0) { // Spigot // Paper - Option to disable thunder
-@@ -856,8 +833,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -862,8 +839,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
}
@@ -905,7 +905,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
if (!this.paperConfig().environment.disableIceAndSnow) { // Paper - Option to disable ice and snow
for (int l = 0; l < randomTickSpeed; ++l) {
if (this.random.nextInt(48) == 0) {
-@@ -869,7 +844,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -875,7 +850,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
} // Paper - Option to disable ice and snow
@@ -913,7 +913,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
timings.chunkTicksBlocks.startTiming(); // Paper
if (randomTickSpeed > 0) {
// Paper start - optimize random block ticking
-@@ -905,7 +879,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -911,7 +885,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// Paper end - optimise random block ticking
timings.chunkTicksBlocks.stopTiming(); // Paper
@@ -921,7 +921,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
}
@VisibleForTesting
-@@ -1223,19 +1196,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -1229,19 +1202,13 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
try {
// Paper end - timings
entity.setOldPosAndRot();
@@ -941,7 +941,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
} finally { timer.stopTiming(); } // Paper - timings
Iterator iterator = entity.getPassengers().iterator();
-@@ -1258,12 +1225,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -1264,12 +1231,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -954,7 +954,7 @@ index b26efc77a7669fd6b0ef498df23f0f78f1361073..55c81b6fa0173ba32cd3f3cee448147a
// Paper start - EAR 2
if (isActive) {
passenger.rideTick();
-@@ -1275,7 +1237,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -1281,7 +1243,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
vehicle.positionRider(passenger);
}
// Paper end - EAR 2
@@ -1113,10 +1113,10 @@ index 298e3eddd600f0b2e48ce2d4080cf68adff59a3a..6b3c57fc1231cd37e17a58137bb78411
protected abstract T prepare(ResourceManager manager, ProfilerFiller profiler);
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255fac38285 100644
+index 593f371c383d4310f4e8ed81200126b05f585ee6..7839702bd86dae0feefe1d6da4ef5661b0dfebc5 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -838,7 +838,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -858,7 +858,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
public void baseTick() {
@@ -1124,7 +1124,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
if (firstTick && this instanceof net.minecraft.world.entity.NeutralMob neutralMob) neutralMob.tickInitialPersistentAnger(level); // Paper - Prevent entity loading causing async lookups
this.inBlockState = null;
if (this.isPassenger() && this.getVehicle().isRemoved()) {
-@@ -902,8 +901,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -922,8 +921,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (!this.level().isClientSide && this instanceof Leashable) {
Leashable.tickLeash((Entity & Leashable) this); // CraftBukkit - decompile error
}
@@ -1133,7 +1133,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
}
public void setSharedFlagOnFire(boolean onFire) {
-@@ -1081,7 +1078,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1101,7 +1098,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
@@ -1141,7 +1141,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
if (this.stuckSpeedMultiplier.lengthSqr() > 1.0E-7D) {
movement = movement.multiply(this.stuckSpeedMultiplier);
this.stuckSpeedMultiplier = Vec3.ZERO;
-@@ -1090,7 +1086,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1110,7 +1106,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// Paper start - ignore movement changes while inactive.
if (isTemporarilyActive && !(this instanceof ItemEntity) && movement == getDeltaMovement() && movementType == MoverType.SELF) {
setDeltaMovement(Vec3.ZERO);
@@ -1149,7 +1149,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
return;
}
// Paper end
-@@ -1111,8 +1106,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1131,8 +1126,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.setPos(this.getX() + vec3d1.x, this.getY() + vec3d1.y, this.getZ() + vec3d1.z);
}
@@ -1158,7 +1158,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
boolean flag = !Mth.equal(movement.x, vec3d1.x);
boolean flag1 = !Mth.equal(movement.z, vec3d1.z);
-@@ -1130,9 +1123,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1150,9 +1143,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
BlockState iblockdata = this.level().getBlockState(blockposition);
this.checkFallDamage(vec3d1.y, this.onGround(), iblockdata, blockposition);
@@ -1169,7 +1169,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
if (this.horizontalCollision) {
Vec3 vec3d2 = this.getDeltaMovement();
-@@ -1233,8 +1224,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1253,8 +1244,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (this.isOnFire() && (this.isInPowderSnow || this.isInWaterRainOrBubble())) {
this.setRemainingFireTicks(-this.getFireImmuneTicks());
}
@@ -1178,7 +1178,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
}
}
}
-@@ -3102,7 +3091,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3122,7 +3111,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.processPortalCooldown();
if (this.portalProcess != null) {
if (this.portalProcess.processPortalTeleportation(worldserver, this, this.canUsePortal(false))) {
@@ -1186,7 +1186,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
this.setPortalCooldown();
DimensionTransition dimensiontransition = this.portalProcess.getPortalDestination(worldserver, this);
-@@ -3114,7 +3102,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3134,7 +3122,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
@@ -1194,7 +1194,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
} else if (this.portalProcess.hasExpired()) {
this.portalProcess = null;
}
-@@ -3615,7 +3602,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3635,7 +3622,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
}
@@ -1202,7 +1202,7 @@ index 83f3ffdd8fa901b3de580d2359cdb5ead0d762cb..0f3dedcc20007385bdbfd9cab5209255
Entity entity2 = worldserver1.dimension() == worldserver.dimension() ? this : this.getType().create(worldserver1);
if (entity2 != null) {
-@@ -3651,7 +3637,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3671,7 +3657,6 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
teleportTarget.postDimensionTransition().onTransition(entity2);
}
diff --git a/patches/server/0023-Move-random-tick-random.patch b/patches/server/0023-Move-random-tick-random.patch
index 49c6e2d..f835309 100644
--- a/patches/server/0023-Move-random-tick-random.patch
+++ b/patches/server/0023-Move-random-tick-random.patch
@@ -19,10 +19,10 @@ require it to be initialized earlier. By moving it to the superclass, we
initialize it earlier, ensuring that it is available sooner.
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 55c81b6fa0173ba32cd3f3cee448147ad55418d7..920e2d9441ddf007581875b80de7827d716a6972 100644
+index 713360d4135b5b586176ba6897e8c9f533e48b32..a51c90ba7dbbef85cfb850d4d10d8eec9db83a82 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -794,7 +794,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -800,7 +800,6 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
// Paper start - optimise random block ticking
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
diff --git a/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch b/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch
index c333d59..833b2dc 100644
--- a/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch
+++ b/patches/server/0024-Optimize-random-calls-in-chunk-ticking.patch
@@ -64,10 +64,10 @@ index ebae8578a2d0dfd0d329861f45d0f278fea1dd85..4200f3020b64160d3295995d8d9db117
this.level.timings.countNaturalMobs.startTiming(); // Paper - timings
int k = this.distanceManager.getNaturalSpawnChunkCount();
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 920e2d9441ddf007581875b80de7827d716a6972..9eb143508ace36756af8f728cfc13d24299dc8b1 100644
+index a51c90ba7dbbef85cfb850d4d10d8eec9db83a82..9d7b5062b803ebe75fcb8ed238724309fc03f47f 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -796,6 +796,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -802,6 +802,8 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
private final BlockPos.MutableBlockPos chunkTickMutablePosition = new BlockPos.MutableBlockPos();
// Paper end
@@ -76,7 +76,7 @@ index 920e2d9441ddf007581875b80de7827d716a6972..9eb143508ace36756af8f728cfc13d24
public void tickChunk(LevelChunk chunk, int randomTickSpeed) {
ChunkPos chunkcoordintpair = chunk.getPos();
boolean flag = this.isRaining();
-@@ -804,7 +806,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -810,7 +812,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
final BlockPos.MutableBlockPos blockposition = this.chunkTickMutablePosition; // Paper - use mutable to reduce allocation rate, final to force compile fail on change
@@ -85,7 +85,7 @@ index 920e2d9441ddf007581875b80de7827d716a6972..9eb143508ace36756af8f728cfc13d24
blockposition.set(this.findLightningTargetAround(this.getBlockRandomPos(j, 0, k, 15))); // Paper
if (this.isRainingAt(blockposition)) {
-@@ -832,7 +834,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -838,7 +840,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
}
}
diff --git a/patches/server/0034-Better-checking-for-useless-move-packets.patch b/patches/server/0034-Better-checking-for-useless-move-packets.patch
index 7a1f9d9..9144c48 100644
--- a/patches/server/0034-Better-checking-for-useless-move-packets.patch
+++ b/patches/server/0034-Better-checking-for-useless-move-packets.patch
@@ -31,18 +31,18 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index 1d849ce4e2c85f149af25318b8ffb6dcef6c6788..ac5bdd0584cd48d95c97dfa791eee9f447082cea 100644
+index b4971813d267dffc6507502345e5c8b991541eca..8b707bbc2fea71989311eb706e0d658d4dcbcdbf 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -181,6 +181,7 @@ public class ServerEntity {
+@@ -188,6 +188,7 @@ public class ServerEntity {
boolean flag6 = k < -32768L || k > 32767L || l < -32768L || l > 32767L || i1 < -32768L || i1 > 32767L;
- if (!flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()) {
+ if (!this.forceStateResync && !flag6 && this.teleportDelay <= 400 && !this.wasRiding && this.wasOnGround == this.entity.onGround()) { // Paper - fix desync when a player is added to the tracker
+ if (flag2 || flag3 || this.entity instanceof AbstractArrow) { // Gale - Airplane - better checking for useless move packets
if ((!flag2 || !flag3) && !(this.entity instanceof AbstractArrow)) {
if (flag2) {
packet1 = new ClientboundMoveEntityPacket.Pos(this.entity.getId(), (short) ((int) k), (short) ((int) l), (short) ((int) i1), this.entity.onGround());
-@@ -194,6 +195,7 @@ public class ServerEntity {
+@@ -201,6 +202,7 @@ public class ServerEntity {
flag4 = true;
flag5 = true;
}
diff --git a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch b/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch
index e65bd57..61d1e46 100644
--- a/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch
+++ b/patches/server/0038-Remove-streams-and-iterators-from-range-check.patch
@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
-index 57d46c0a1e85d82361e4694f50dfc02e6e687166..5906faeaf30dddaeb96b8f71662d3e0f6c49194b 100644
+index d3c0c50646794b36ffa5c6a8f6292eca5d575528..3f7586470329eb5ad9668df34a38b832b96f36d5 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
-@@ -1194,8 +1194,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
+@@ -1308,8 +1308,30 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return ChunkMap.this.level.getServer().getScaledTrackingDistance(initialDistance);
}
@@ -65,7 +65,7 @@ index 57d46c0a1e85d82361e4694f50dfc02e6e687166..5906faeaf30dddaeb96b8f71662d3e0f
Iterator iterator = this.entity.getIndirectPassengers().iterator();
while (iterator.hasNext()) {
-@@ -1207,6 +1229,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
+@@ -1321,6 +1343,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
i = j;
}
}
diff --git a/patches/server/0041-Remove-lambda-from-ticking-guard.patch b/patches/server/0041-Remove-lambda-from-ticking-guard.patch
index 58ccc29..83f5acb 100644
--- a/patches/server/0041-Remove-lambda-from-ticking-guard.patch
+++ b/patches/server/0041-Remove-lambda-from-ticking-guard.patch
@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 9eb143508ace36756af8f728cfc13d24299dc8b1..461124b92e67690758b94d95c592be9206f8fbea 100644
+index 9d7b5062b803ebe75fcb8ed238724309fc03f47f..ba3e24f049da77bb88663e3c99a06eac027dc55b 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -733,7 +733,20 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -739,7 +739,20 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
entity.stopRiding();
}
diff --git a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch b/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch
index b45c578..8734d71 100644
--- a/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch
+++ b/patches/server/0042-Reduce-entity-fluid-lookups-if-no-fluids.patch
@@ -31,10 +31,10 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 68e02e2ffdaf063471bf6022d328aad5475a5f94..985bc7856b165eee2df1edf3a53d9a8b40eb2516 100644
+index 34d234fffa7d2e52929acaa1341e2dc5854bdc7a..c012ff06018a1ad1441131494cd144bb5dd5831c 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4271,16 +4271,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4294,16 +4294,18 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public boolean updateFluidHeightAndDoFluidPushing(TagKey tag, double speed) {
@@ -60,7 +60,7 @@ index 68e02e2ffdaf063471bf6022d328aad5475a5f94..985bc7856b165eee2df1edf3a53d9a8b
double d1 = 0.0D;
boolean flag = this.isPushedByFluid();
boolean flag1 = false;
-@@ -4288,14 +4290,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4311,14 +4313,61 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
int k1 = 0;
BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
@@ -128,7 +128,7 @@ index 68e02e2ffdaf063471bf6022d328aad5475a5f94..985bc7856b165eee2df1edf3a53d9a8b
if (d2 >= axisalignedbb.minY) {
flag1 = true;
-@@ -4317,9 +4366,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4340,9 +4389,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
// CraftBukkit end
}
}
diff --git a/patches/server/0076-Reduce-array-allocations.patch b/patches/server/0076-Reduce-array-allocations.patch
index dff9138..e0d5dd7 100644
--- a/patches/server/0076-Reduce-array-allocations.patch
+++ b/patches/server/0076-Reduce-array-allocations.patch
@@ -356,10 +356,10 @@ index 244a19ecd0234fa1d7a6ecfea20751595688605d..f76ca394169d844a263a53c31c30e57d
OptionSpec optionspec11 = optionparser.accepts("port").withRequiredArg().ofType(Integer.class).defaultsTo(-1, new Integer[0]);
OptionSpec optionspec12 = optionparser.accepts("serverId").withRequiredArg();
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
-index ac5bdd0584cd48d95c97dfa791eee9f447082cea..8090e9b6bd8a3e93532322b5a61058545c7c3a6d 100644
+index 8b707bbc2fea71989311eb706e0d658d4dcbcdbf..54d4c648660808692ae998b6f93da90341a394c4 100644
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
-@@ -338,7 +338,7 @@ public class ServerEntity {
+@@ -346,7 +346,7 @@ public class ServerEntity {
if (this.entity instanceof LivingEntity) {
List> list = Lists.newArrayList();
diff --git a/patches/server/0077-Optimize-sun-burn-tick.patch b/patches/server/0077-Optimize-sun-burn-tick.patch
index 361b684..f164b91 100644
--- a/patches/server/0077-Optimize-sun-burn-tick.patch
+++ b/patches/server/0077-Optimize-sun-burn-tick.patch
@@ -13,7 +13,7 @@ As part of: JettPack (https://gitlab.com/Titaniumtown/JettPack)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 46fa9c7cb799523980029392dba37d2c7951be9a..0419c25e47f04cfdb180588178d963d5d20616e6 100644
+index 12b497a54b4cfc3fb4b564dda6537d01e2602317..54ce3f4724d08abdf00bbb9eae70776a73d965f2 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -315,7 +315,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -25,7 +25,7 @@ index 46fa9c7cb799523980029392dba37d2c7951be9a..0419c25e47f04cfdb180588178d963d5
public BlockPos blockPosition; // Gale - Pufferfish - optimize entity coordinate key - private -> public
private ChunkPos chunkPosition;
private Vec3 deltaMovement;
-@@ -1958,9 +1958,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1978,9 +1978,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
/** @deprecated */
@Deprecated
public float getLightLevelDependentMagicValue() {
diff --git a/patches/server/0094-Skip-entity-move-if-movement-is-zero.patch b/patches/server/0094-Skip-entity-move-if-movement-is-zero.patch
index cf44260..a3aa216 100644
--- a/patches/server/0094-Skip-entity-move-if-movement-is-zero.patch
+++ b/patches/server/0094-Skip-entity-move-if-movement-is-zero.patch
@@ -13,7 +13,7 @@ As part of: VMP (https://github.com/RelativityMC/VMP-fabric)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 0419c25e47f04cfdb180588178d963d5d20616e6..2933f84e416228303d269aec13f7e649effa7a79 100644
+index 54ce3f4724d08abdf00bbb9eae70776a73d965f2..0c667db0abe536b3cbb07aea2c8026b681209c8e 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
@@ -324,6 +324,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -24,7 +24,7 @@ index 0419c25e47f04cfdb180588178d963d5d20616e6..2933f84e416228303d269aec13f7e649
public boolean onGround;
public boolean horizontalCollision;
public boolean verticalCollision;
-@@ -1065,6 +1066,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1085,6 +1086,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public void move(MoverType movementType, Vec3 movement) {
@@ -36,7 +36,7 @@ index 0419c25e47f04cfdb180588178d963d5d20616e6..2933f84e416228303d269aec13f7e649
final Vec3 originalMovement = movement; // Paper - Expose pre-collision velocity
if (this.noPhysics) {
this.setPos(this.getX() + movement.x, this.getY() + movement.y, this.getZ() + movement.z);
-@@ -3970,6 +3976,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3990,6 +3996,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
public final void setBoundingBox(AABB boundingBox) {
diff --git a/patches/server/0099-Hide-flames-on-entities-with-fire-resistance.patch b/patches/server/0099-Hide-flames-on-entities-with-fire-resistance.patch
index 4120bfd..bcd7c23 100644
--- a/patches/server/0099-Hide-flames-on-entities-with-fire-resistance.patch
+++ b/patches/server/0099-Hide-flames-on-entities-with-fire-resistance.patch
@@ -13,10 +13,10 @@ As part of: Slice (https://github.com/Cryptite/Slice)
Licensed under: MIT (https://opensource.org/licenses/MIT)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 2933f84e416228303d269aec13f7e649effa7a79..6f13b8656869570eb7ebdb63611447c1d2d8ae52 100644
+index 0c667db0abe536b3cbb07aea2c8026b681209c8e..db7de9c5ea150edae263798d8ee5d8ca3c97efeb 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -896,7 +896,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -916,7 +916,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.checkBelowWorld();
if (!this.level().isClientSide) {
diff --git a/patches/server/0101-Reduce-block-destruction-packet-allocations.patch b/patches/server/0101-Reduce-block-destruction-packet-allocations.patch
index 36be151..c98c664 100644
--- a/patches/server/0101-Reduce-block-destruction-packet-allocations.patch
+++ b/patches/server/0101-Reduce-block-destruction-packet-allocations.patch
@@ -13,10 +13,10 @@ As part of: SportPaper (https://github.com/Electroid/SportPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 461124b92e67690758b94d95c592be9206f8fbea..0d1c24dc6da1541e934aeb6294f748d0ed358318 100644
+index ba3e24f049da77bb88663e3c99a06eac027dc55b..8777b99bdf4071f6b91c7a0fa8f2c552428cf777 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1529,7 +1529,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -1535,7 +1535,17 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
@Override
public void destroyBlockProgress(int entityId, BlockPos pos, int progress) {
@@ -35,7 +35,7 @@ index 461124b92e67690758b94d95c592be9206f8fbea..0d1c24dc6da1541e934aeb6294f748d0
// CraftBukkit start
Player entityhuman = null;
-@@ -1563,7 +1573,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
+@@ -1569,7 +1579,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ca.spottedleaf.
// CraftBukkit end
if (d0 * d0 + d1 * d1 + d2 * d2 < 1024.0D) {
diff --git a/patches/server/0107-Load-portal-destination-chunk-before-entity-teleport.patch b/patches/server/0107-Load-portal-destination-chunk-before-entity-teleport.patch
index 8e82339..d10257b 100644
--- a/patches/server/0107-Load-portal-destination-chunk-before-entity-teleport.patch
+++ b/patches/server/0107-Load-portal-destination-chunk-before-entity-teleport.patch
@@ -13,10 +13,10 @@ As part of: MultiPaper (https://github.com/MultiPaper/MultiPaper)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 6f13b8656869570eb7ebdb63611447c1d2d8ae52..47f94388024f1618549d9cafa6a8c2bb24d7279d 100644
+index db7de9c5ea150edae263798d8ee5d8ca3c97efeb..e9f8690af2f94749d6c07b7657985e6488d24eef 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -3845,7 +3845,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -3865,7 +3865,15 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
if (entity == null) {
return false;
diff --git a/patches/server/0109-Don-t-load-chunks-to-activate-climbing-entities.patch b/patches/server/0109-Don-t-load-chunks-to-activate-climbing-entities.patch
index 1b32512..e20a82c 100644
--- a/patches/server/0109-Don-t-load-chunks-to-activate-climbing-entities.patch
+++ b/patches/server/0109-Don-t-load-chunks-to-activate-climbing-entities.patch
@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 47f94388024f1618549d9cafa6a8c2bb24d7279d..d0599a0a41d4bfc1a2063ef4228402da00e1a06c 100644
+index e9f8690af2f94749d6c07b7657985e6488d24eef..6c065ff49a05546781fd3e0f6861e5032e72a67b 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -4493,6 +4493,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -4516,6 +4516,16 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return this.inBlockState;
}
diff --git a/patches/server/0123-For-collision-check-has-physics-before-same-vehicle.patch b/patches/server/0123-For-collision-check-has-physics-before-same-vehicle.patch
index 377126d..448a4f9 100644
--- a/patches/server/0123-For-collision-check-has-physics-before-same-vehicle.patch
+++ b/patches/server/0123-For-collision-check-has-physics-before-same-vehicle.patch
@@ -16,10 +16,10 @@ As part of: Akarin (https://github.com/Akarin-project/Akarin)
Licensed under: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index d0599a0a41d4bfc1a2063ef4228402da00e1a06c..9edcf2a791fd645ce7a13cea21446167d619a0a9 100644
+index 6c065ff49a05546781fd3e0f6861e5032e72a67b..138da0cbdde29aa871f3e1493b0584698bce63e9 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -2085,8 +2085,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -2105,8 +2105,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
public void playerTouch(Player player) {}
public void push(Entity entity) {
diff --git a/patches/server/0124-Skip-negligible-planar-movement-multiplication.patch b/patches/server/0124-Skip-negligible-planar-movement-multiplication.patch
index f9c4786..d32f042 100644
--- a/patches/server/0124-Skip-negligible-planar-movement-multiplication.patch
+++ b/patches/server/0124-Skip-negligible-planar-movement-multiplication.patch
@@ -7,10 +7,10 @@ License: GPL-3.0 (https://www.gnu.org/licenses/gpl-3.0.html)
Gale - https://galemc.org
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
-index 9edcf2a791fd645ce7a13cea21446167d619a0a9..0170337bc9b2837d542d0235039c15d5e8dffba2 100644
+index 138da0cbdde29aa871f3e1493b0584698bce63e9..73b13f630fc22c504b966ee5a96f0162a1af2699 100644
--- a/src/main/java/net/minecraft/world/entity/Entity.java
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
-@@ -1219,9 +1219,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
+@@ -1239,9 +1239,19 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
}
this.tryCheckInsideBlocks();