diff --git a/gradle.properties b/gradle.properties index 984ca0e..05f6f7f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ version = 1.20.4-R0.1-SNAPSHOT mcVersion = 1.20.4 # Upstream commit -purpurCommit = 04ee5e7c2831439b9816fb8cc00afff591b2c66c +purpurCommit = d05e78bdb143883e03cb17df96fee1f05f60cada # Gradle org.gradle.caching = true diff --git a/patches/api/0014-Kiterino-NamespacedKey.patch b/patches/api/0014-Kiterino-NamespacedKey.patch index 79666d2..1fb0748 100644 --- a/patches/api/0014-Kiterino-NamespacedKey.patch +++ b/patches/api/0014-Kiterino-NamespacedKey.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Kiterino NamespacedKey diff --git a/src/main/java/org/bukkit/NamespacedKey.java b/src/main/java/org/bukkit/NamespacedKey.java -index 8ac72cb0b05e2c493d98310f2e87c3714d15c5e3..bb833ecc01ec06a865a2474548d07e7eaf9c679f 100644 +index 95bc1078e35a92624b6627e78ed80080832d1b57..9ba8224bafb35584650b6a467546f02df7b3cd58 100644 --- a/src/main/java/org/bukkit/NamespacedKey.java +++ b/src/main/java/org/bukkit/NamespacedKey.java @@ -30,6 +30,12 @@ public final class NamespacedKey implements net.kyori.adventure.key.Key, com.des @@ -21,7 +21,7 @@ index 8ac72cb0b05e2c493d98310f2e87c3714d15c5e3..bb833ecc01ec06a865a2474548d07e7e // private final String namespace; private final String key; -@@ -180,6 +186,19 @@ public final class NamespacedKey implements net.kyori.adventure.key.Key, com.des +@@ -176,6 +182,19 @@ public final class NamespacedKey implements net.kyori.adventure.key.Key, com.des return new NamespacedKey(MINECRAFT, key); } diff --git a/patches/server/0015-Origami-Keep-weather-clear-after-sleep.patch b/patches/server/0015-Origami-Keep-weather-clear-after-sleep.patch index ad0557d..e899625 100644 --- a/patches/server/0015-Origami-Keep-weather-clear-after-sleep.patch +++ b/patches/server/0015-Origami-Keep-weather-clear-after-sleep.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Origami - Keep weather clear after sleep diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index dd0ef00d29d4caa3a1fe8513ec82d72f64fc308f..6512e2179d68115679dafd5e4ac9144d7ed4cb21 100644 +index ac3e1d0f5b8def2bdace6f3b680ff9e929c515fb..5d37e72f4af2b6c318c67dd16916e4f6c39032c9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1400,6 +1400,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1405,6 +1405,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @VisibleForTesting public void resetWeatherCycle() { diff --git a/patches/server/0023-Allow-sleeping-anytime-and-anywhere.patch b/patches/server/0023-Allow-sleeping-anytime-and-anywhere.patch index 264462a..36bad42 100644 --- a/patches/server/0023-Allow-sleeping-anytime-and-anywhere.patch +++ b/patches/server/0023-Allow-sleeping-anytime-and-anywhere.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow sleeping anytime and anywhere diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6512e2179d68115679dafd5e4ac9144d7ed4cb21..98a79b7e0a04d8f01cd46ed69f02cfa35fa7f5ff 100644 +index 5d37e72f4af2b6c318c67dd16916e4f6c39032c9..c74a8df4502b4067024daf4ae441a720b819d11e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -850,8 +850,19 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -855,8 +855,19 @@ public class ServerLevel extends Level implements WorldGenLevel { if (!event.isCancelled()) { this.setDayTime(this.getDayTime() + event.getSkipAmount()); } @@ -28,7 +28,7 @@ index 6512e2179d68115679dafd5e4ac9144d7ed4cb21..98a79b7e0a04d8f01cd46ed69f02cfa3 if (!event.isCancelled()) { this.wakeUpAllPlayers(); } -@@ -859,6 +870,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -864,6 +875,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (this.getGameRules().getBoolean(GameRules.RULE_WEATHER_CYCLE) && this.isRaining()) { this.resetWeatherCycle(); } @@ -37,10 +37,10 @@ index 6512e2179d68115679dafd5e4ac9144d7ed4cb21..98a79b7e0a04d8f01cd46ed69f02cfa3 this.updateSkyBrightness(); diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index b4949fc39b6bd4be83ef925ea9f1253cf492cdd4..234832a5b76451c0e84b292188dc6a34311b74f0 100644 +index b107ac51f5c01a1ae1378612b1472c3295379768..dc17a8b118ba00b9d8e3f1af49fc346f06b5ccdf 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1423,6 +1423,7 @@ public class ServerPlayer extends Player { +@@ -1424,6 +1424,7 @@ public class ServerPlayer extends Player { return Either.left(Player.BedSleepingProblem.OBSTRUCTED); } else { this.setRespawnPosition(this.level().dimension(), blockposition, this.getYRot(), false, true, com.destroystokyo.paper.event.player.PlayerSetSpawnEvent.Cause.BED); // Paper - PlayerSetSpawnEvent @@ -49,7 +49,7 @@ index b4949fc39b6bd4be83ef925ea9f1253cf492cdd4..234832a5b76451c0e84b292188dc6a34 return Either.left(Player.BedSleepingProblem.NOT_POSSIBLE_NOW); } else { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f1fe8a0c1ff1514d9a158e18dc6d234d54388573..a53618e21197b9c54527b9c480c0c506af88d5da 100644 +index 738aca99196c5b88ed5d561d410964c71625578d..3c730b3603aab78aa0981015e739cb133a9f8199 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -287,7 +287,7 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0042-Observers-detect-entities.patch b/patches/server/0042-Observers-detect-entities.patch index f15d0a4..82cdc83 100644 --- a/patches/server/0042-Observers-detect-entities.patch +++ b/patches/server/0042-Observers-detect-entities.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Observers detect entities diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1e6a65970a64eed30a0917b9e30162dc7e2817c0..18945c86ef09313b34f9485267960a2166ef28bc 100644 +index ceddda7ddb1a3b1e7c6e5b9f6887bd12d8584e89..13db4b85ef0f7943f3c4dd3bc47b976494d26188 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1318,6 +1318,29 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1322,6 +1322,29 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S //this.level().getProfiler().pop(); // Purpur } diff --git a/patches/server/0051-Add-block-place-API.patch b/patches/server/0051-Add-block-place-API.patch index 88b13da..392136c 100644 --- a/patches/server/0051-Add-block-place-API.patch +++ b/patches/server/0051-Add-block-place-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add block place API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 257ad0205579740bda9416bfaed9bc28424cf869..b55e6ab1094c38e544513da9c9cb5cf6844706d7 100644 +index 0122902b0949d8e8b87b0ef1e98359be0b1568a2..116643d751b36bf41c84045867e7328c7ed66b8f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3464,4 +3464,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3470,4 +3470,37 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message))); } // Purpur end diff --git a/patches/server/0058-Client-kick-message-API.patch b/patches/server/0058-Client-kick-message-API.patch index 643cfc3..5cdd04c 100644 --- a/patches/server/0058-Client-kick-message-API.patch +++ b/patches/server/0058-Client-kick-message-API.patch @@ -47,10 +47,10 @@ index da499e0b21eba40d24d95047e3a9220567d4bae7..d43c695c809a36495b63a9eeece02213 MinecraftServer minecraftserver = this.server; Connection networkmanager = this.connection; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b55e6ab1094c38e544513da9c9cb5cf6844706d7..2cb8c43b7ad3de04a2aaf6a8ab6757be189c208d 100644 +index 116643d751b36bf41c84045867e7328c7ed66b8f..7dab81c7fae682ec20d859756b8ac1a483477c7e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -3496,5 +3496,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3502,5 +3502,19 @@ public class CraftPlayer extends CraftHumanEntity implements Player { return true; } diff --git a/patches/server/0061-Allow-setting-entity-s-rider.patch b/patches/server/0061-Allow-setting-entity-s-rider.patch index 48eea05..1630711 100644 --- a/patches/server/0061-Allow-setting-entity-s-rider.patch +++ b/patches/server/0061-Allow-setting-entity-s-rider.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Allow setting entity's rider diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 18945c86ef09313b34f9485267960a2166ef28bc..402778b86dff000aab145cb30a3d42ff041706f3 100644 +index 13db4b85ef0f7943f3c4dd3bc47b976494d26188..9f1a01220e25f8a0da2e4e5831806358607ee59e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3073,6 +3073,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -3077,6 +3077,20 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -30,7 +30,7 @@ index 18945c86ef09313b34f9485267960a2166ef28bc..402778b86dff000aab145cb30a3d42ff protected boolean removePassenger(Entity entity) { return removePassenger(entity, false);} protected boolean removePassenger(Entity entity, boolean suppressCancellation) { // CraftBukkit diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java -index f364674b35bf22f50ada5931065faba287fa541d..ba67d69d1cda2b22431642c3c4e7efbd789d8b55 100644 +index 8ca0d6f2a5565f83a7bc5ecc7ccd9ff5ae7079c5..49233d48c00c76ec5fa4391caa8668cfefcff05f 100644 --- a/src/main/java/net/minecraft/world/entity/Mob.java +++ b/src/main/java/net/minecraft/world/entity/Mob.java @@ -1823,7 +1823,7 @@ public abstract class Mob extends LivingEntity implements Targeting { diff --git a/patches/server/0064-Fix-entity-serialization.patch b/patches/server/0064-Fix-entity-serialization.patch index bb3c2aa..b46f46a 100644 --- a/patches/server/0064-Fix-entity-serialization.patch +++ b/patches/server/0064-Fix-entity-serialization.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix entity serialization diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 402778b86dff000aab145cb30a3d42ff041706f3..2b2638bd3fcb37ab2f4e21145dc3ffe5983100f2 100644 +index 9f1a01220e25f8a0da2e4e5831806358607ee59e..612fce2a325f27e0d2dd1bca53cd95c1236fb503 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2359,15 +2359,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2363,15 +2363,6 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } diff --git a/patches/server/0065-Spawning-player-API.patch b/patches/server/0065-Spawning-player-API.patch index cb7fbde..a34d9ac 100644 --- a/patches/server/0065-Spawning-player-API.patch +++ b/patches/server/0065-Spawning-player-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Spawning player API diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2b2638bd3fcb37ab2f4e21145dc3ffe5983100f2..a45ade021825f7f6753eb4df200a0b516161e431 100644 +index 612fce2a325f27e0d2dd1bca53cd95c1236fb503..6f118c8f1534ec8bcd09738bb557aa5d248eca72 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -449,6 +449,27 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -36,7 +36,7 @@ index 2b2638bd3fcb37ab2f4e21145dc3ffe5983100f2..a45ade021825f7f6753eb4df200a0b51 public boolean isChunkLoaded() { return this.level.hasChunk((int) Math.floor(this.getX()) >> 4, (int) Math.floor(this.getZ()) >> 4); } -@@ -2525,6 +2546,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2529,6 +2550,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putBoolean("Purpur.FireImmune", immuneToFire); } // Purpur end @@ -48,7 +48,7 @@ index 2b2638bd3fcb37ab2f4e21145dc3ffe5983100f2..a45ade021825f7f6753eb4df200a0b51 return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2677,6 +2703,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2681,6 +2707,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S immuneToFire = nbt.getBoolean("Purpur.FireImmune"); } // Purpur end @@ -73,7 +73,7 @@ index a2a59dd2e515bf4dca84a442703c122fd36f05e0..d8246fc22c4fef2f80988daddb80204d // CraftBukkit start // SPIGOT-7045: Give ocelot babies back their special spawn reason. Note: This is the only modification required as ocelots count as monsters which means they only spawn during normal chunk ticking and do not spawn during chunk generation as starter mobs. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 2f418e3809e97f93ed09a8660dbb22e1b796b024..68d12d4ac69a0ec6bd798ecba9d6576f5a400f57 100644 +index be78915fd1a8cdd0b7f5109b45087fd1b2220f97..99589c948c7c0e3e8a56971315658d8bedffd11a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1282,4 +1282,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0074-Tweak-minecart-off-rail-velocity.patch b/patches/server/0074-Tweak-minecart-off-rail-velocity.patch index ec42ec4..25fe31b 100644 --- a/patches/server/0074-Tweak-minecart-off-rail-velocity.patch +++ b/patches/server/0074-Tweak-minecart-off-rail-velocity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tweak minecart off rail velocity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a45ade021825f7f6753eb4df200a0b516161e431..e66ad73e22a1dd2dff39bce155b0c07cfa485c52 100644 +index 6f118c8f1534ec8bcd09738bb557aa5d248eca72..23d9a112d2d25602b0ebdc76f6c1451e7c4460d7 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1525,7 +1525,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1529,7 +1529,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return offsetFactor; } diff --git a/patches/server/0077-Include-vehicle-s-height-in-collision.patch b/patches/server/0077-Include-vehicle-s-height-in-collision.patch index f6a90d3..b3b1ecf 100644 --- a/patches/server/0077-Include-vehicle-s-height-in-collision.patch +++ b/patches/server/0077-Include-vehicle-s-height-in-collision.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Include vehicle's height in collision diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index e66ad73e22a1dd2dff39bce155b0c07cfa485c52..da978ae625f36d7cbfcd2c8c6d167bd7b1186a60 100644 +index 23d9a112d2d25602b0ebdc76f6c1451e7c4460d7..72279d822bfe6f34c70d97148c6e2346b2f4fd08 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1535,7 +1535,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1539,7 +1539,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } final Level world = this.level; @@ -22,7 +22,7 @@ index e66ad73e22a1dd2dff39bce155b0c07cfa485c52..da978ae625f36d7cbfcd2c8c6d167bd7 if (io.papermc.paper.util.CollisionUtil.isEmpty(currBoundingBox)) { return movement; -@@ -1597,10 +1602,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1601,10 +1606,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return vec3d2.add(io.papermc.paper.util.CollisionUtil.performCollisions(new Vec3(0.0D, -vec3d2.y + movement.y, 0.0D), currBoundingBox.move(vec3d2), potentialCollisionsVoxel, potentialCollisionsBB)); } diff --git a/patches/server/0078-Mob-possessing-mechanic-compatibility.patch b/patches/server/0078-Mob-possessing-mechanic-compatibility.patch index 5d0a178..f885fbf 100644 --- a/patches/server/0078-Mob-possessing-mechanic-compatibility.patch +++ b/patches/server/0078-Mob-possessing-mechanic-compatibility.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Mob possessing mechanic compatibility diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index da978ae625f36d7cbfcd2c8c6d167bd7b1186a60..a0fbf68a47ab4a03ab9a5a7341be31eb8d4fda00 100644 +index 72279d822bfe6f34c70d97148c6e2346b2f4fd08..ddcdd055e552f35aa1117c71f98bd513b88127a4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1537,7 +1537,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1541,7 +1541,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S final Level world = this.level; // Kiterino start - include vehicle's height in collision AABB currBoundingBox = this.getBoundingBox(); @@ -17,7 +17,7 @@ index da978ae625f36d7cbfcd2c8c6d167bd7b1186a60..a0fbf68a47ab4a03ab9a5a7341be31eb currBoundingBox = new AABB(currBoundingBox.minX, getVehicle().getBoundingBox().minY + 0.1, currBoundingBox.minZ, currBoundingBox.maxX, currBoundingBox.maxY, currBoundingBox.maxZ); } // Kiterino end -@@ -1605,6 +1605,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1609,6 +1609,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } // Kiterino start - include vehicle's height in collision for (Entity passenger : getPassengers()) { diff --git a/patches/server/0079-Collision-based-landing-pos.patch b/patches/server/0079-Collision-based-landing-pos.patch index d6f73bd..b516593 100644 --- a/patches/server/0079-Collision-based-landing-pos.patch +++ b/patches/server/0079-Collision-based-landing-pos.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Collision based landing pos diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a0fbf68a47ab4a03ab9a5a7341be31eb8d4fda00..1ff2ee4d9064d20a469781a0f05fe9fd6ad592c8 100644 +index ddcdd055e552f35aa1117c71f98bd513b88127a4..44bbb2ae3f9c00dd22b649b226d31773531747b5 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1439,6 +1439,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1443,6 +1443,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S /** @deprecated */ @Deprecated public BlockPos getOnPosLegacy() { diff --git a/patches/server/0088-Fix-MC-2025.patch b/patches/server/0088-Fix-MC-2025.patch index d82b393..918f742 100644 --- a/patches/server/0088-Fix-MC-2025.patch +++ b/patches/server/0088-Fix-MC-2025.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix MC-2025 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 1ff2ee4d9064d20a469781a0f05fe9fd6ad592c8..50d6a838b223e9c0f678731d64d2483c616b642f 100644 +index 44bbb2ae3f9c00dd22b649b226d31773531747b5..79788625d4dc73b00c480a8ca4f5b0c1542d64a0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2578,6 +2578,19 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2582,6 +2582,19 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S nbttagcompound.putUUID("Kiterino.SpawningPlayerUUID", spawningPlayerUuid); } // Kiterino end @@ -28,7 +28,7 @@ index 1ff2ee4d9064d20a469781a0f05fe9fd6ad592c8..50d6a838b223e9c0f678731d64d2483c return nbttagcompound; } catch (Throwable throwable) { CrashReport crashreport = CrashReport.forThrowable(throwable, "Saving entity NBT"); -@@ -2655,6 +2668,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -2659,6 +2672,21 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S this.reapplyPosition(); } diff --git a/patches/server/0090-Fix-MC-145311-consider-entities-in-water-cauldrons-b.patch b/patches/server/0090-Fix-MC-145311-consider-entities-in-water-cauldrons-b.patch index f2f76ef..5d274e9 100644 --- a/patches/server/0090-Fix-MC-145311-consider-entities-in-water-cauldrons-b.patch +++ b/patches/server/0090-Fix-MC-145311-consider-entities-in-water-cauldrons-b.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Fix MC-145311 - consider entities in water cauldrons being diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 50d6a838b223e9c0f678731d64d2483c616b642f..3f1e30330145dd688af21281a20fe6e143098cde 100644 +index 79788625d4dc73b00c480a8ca4f5b0c1542d64a0..6bbd2d53672bfd59a5e64ac5a244225f489fb28f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -1936,6 +1936,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1940,6 +1940,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S return this.isInWaterOrBubble() || this.isInLava(); } @@ -28,7 +28,7 @@ index 50d6a838b223e9c0f678731d64d2483c616b642f..3f1e30330145dd688af21281a20fe6e1 public boolean isUnderWater() { return this.wasEyeInWater && this.isInWater(); } -@@ -1970,7 +1982,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -1974,7 +1986,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } diff --git a/patches/server/0094-Call-BlockDestroyEvent-for-breakNaturally.patch b/patches/server/0094-Call-BlockDestroyEvent-for-breakNaturally.patch index 736e9db..903f729 100644 --- a/patches/server/0094-Call-BlockDestroyEvent-for-breakNaturally.patch +++ b/patches/server/0094-Call-BlockDestroyEvent-for-breakNaturally.patch @@ -5,29 +5,40 @@ Subject: [PATCH] Call BlockDestroyEvent for breakNaturally diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 634774bfd8e87bd279a53c0d14382e03be8b9f5f..631fdcf7ed4c318fba824df2037c0cd867d84cff 100644 +index 4d999e8b798506267633517e41acbb07d4313b7f..73944f321cc3d86f647020ad56f28c3dbc7e4960 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -@@ -501,9 +501,21 @@ public class CraftBlock implements Block { +@@ -501,9 +501,23 @@ public class CraftBlock implements Block { net.minecraft.world.item.ItemStack nmsItem = CraftItemStack.asNMSCopy(item); boolean result = false; + // Kiterino start + boolean dropResources = true; ++ int expDrop = dropExperience ? block.getExpDrop(iblockdata, this.world.getMinecraftWorld(), this.position, nmsItem, true) : 0; + if (block != Blocks.AIR) { -+ var blockDestroyEvent = new com.destroystokyo.paper.event.block.BlockDestroyEvent(this, iblockdata.getFluidState().createLegacyBlock().createCraftBlockData(), true); ++ var blockDestroyEvent = new com.destroystokyo.paper.event.block.BlockDestroyEvent(this, iblockdata.getFluidState().createLegacyBlock().createCraftBlockData(), iblockdata.createCraftBlockData(), expDrop, true); + blockDestroyEvent.setPlayEffect(triggerEffect); + if (!blockDestroyEvent.callEvent()) return false; + + triggerEffect = blockDestroyEvent.playEffect(); + dropResources = blockDestroyEvent.willDrop(); ++ expDrop = blockDestroyEvent.getExpToDrop(); + } + // Kiterino end + // Modelled off EntityHuman#hasBlock if (block != Blocks.AIR && (item == null || !iblockdata.requiresCorrectToolForDrops() || nmsItem.isCorrectToolForDrops(iblockdata))) { -- net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem); -+ if (dropResources) net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem); // Kiterino +- net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem, false); // Paper ++ if (dropResources) net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem, false); // Paper // Kiterino // Paper start - improve Block#breanNaturally if (triggerEffect) { if (iblockdata.getBlock() instanceof net.minecraft.world.level.block.BaseFireBlock) { +@@ -512,7 +526,7 @@ public class CraftBlock implements Block { + this.world.levelEvent(net.minecraft.world.level.block.LevelEvent.PARTICLES_DESTROY_BLOCK, this.position, net.minecraft.world.level.block.Block.getId(iblockdata)); + } + } +- if (dropExperience) block.popExperience(this.world.getMinecraftWorld(), this.position, block.getExpDrop(iblockdata, this.world.getMinecraftWorld(), this.position, nmsItem, true)); ++ if (expDrop > 0) block.popExperience(this.world.getMinecraftWorld(), this.position, expDrop); // Kiterino + // Paper end + result = true; + } diff --git a/patches/server/0095-Paper-PR-Add-FillBottleEvents-for-player-and-dispens.patch b/patches/server/0095-Paper-PR-Add-FillBottleEvents-for-player-and-dispens.patch index e4db32b..ec0d6c5 100644 --- a/patches/server/0095-Paper-PR-Add-FillBottleEvents-for-player-and-dispens.patch +++ b/patches/server/0095-Paper-PR-Add-FillBottleEvents-for-player-and-dispens.patch @@ -15,7 +15,7 @@ AreaEffectCloud. Co-authored-by: Dmitry Sidorov diff --git a/src/main/java/net/minecraft/core/cauldron/CauldronInteraction.java b/src/main/java/net/minecraft/core/cauldron/CauldronInteraction.java -index 4c9334dde0734a3550a810845cee53f474e9c96b..bd8bfb5bb21f79a491ff20ed79e14c4d0f0bfe9b 100644 +index ef7f1a871144f4a6897769f2459a4dd5eeffa5b4..46798e9ac9f54e31bd7b65285d3e85fe58b6e35a 100644 --- a/src/main/java/net/minecraft/core/cauldron/CauldronInteraction.java +++ b/src/main/java/net/minecraft/core/cauldron/CauldronInteraction.java @@ -114,7 +114,14 @@ public interface CauldronInteraction { @@ -35,10 +35,10 @@ index 4c9334dde0734a3550a810845cee53f474e9c96b..bd8bfb5bb21f79a491ff20ed79e14c4d entityhuman.awardStat(Stats.ITEM_USED.get(item)); // LayeredCauldronBlock.lowerFillLevel(iblockdata, world, blockposition); // CraftBukkit diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index 5e3a3565ac71cd8b1ea95b1732e5a1ec26ef6adb..278e933e268a0c4e6bb7fd7cd29b30e4e9dc6eea 100644 +index 44df01054645deb99b8d2ae8ac9540f4f0035d1c..d1332cc80165301467ebf7e08637fe3c44068c3c 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -@@ -1050,9 +1050,11 @@ public interface DispenseItemBehavior { +@@ -1049,9 +1049,11 @@ public interface DispenseItemBehavior { pointer.level().gameEvent((Entity) null, GameEvent.FLUID_PICKUP, pointer.pos()); return filledBottleStack.copy(); } else { @@ -50,7 +50,7 @@ index 5e3a3565ac71cd8b1ea95b1732e5a1ec26ef6adb..278e933e268a0c4e6bb7fd7cd29b30e4 return emptyBottleStack; } -@@ -1093,12 +1095,24 @@ public interface DispenseItemBehavior { +@@ -1091,12 +1093,24 @@ public interface DispenseItemBehavior { if (iblockdata.is(BlockTags.BEEHIVES, (blockbase_blockdata) -> { return blockbase_blockdata.hasProperty(BeehiveBlock.HONEY_LEVEL) && blockbase_blockdata.getBlock() instanceof BeehiveBlock; }) && (Integer) iblockdata.getValue(BeehiveBlock.HONEY_LEVEL) >= 5) { @@ -123,7 +123,7 @@ index 384da302bbf87d87352dad9cce841deae7faf0e9..126fc6b13f6bc6fe11666f411a05774e } diff --git a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java -index 7d1f3c367efcf8def56b961993136e02e05ba59c..6d14b603cf4380685f271995b4463a4925ddd227 100644 +index 2594c8e233114b21e5b00acb5ad7012b004a0ef2..5bcd0665c9c3efb0c7847cfdbff9146eee587280 100644 --- a/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BeehiveBlock.java @@ -159,12 +159,22 @@ public class BeehiveBlock extends BaseEntityBlock { @@ -153,7 +153,7 @@ index 7d1f3c367efcf8def56b961993136e02e05ba59c..6d14b603cf4380685f271995b4463a49 flag = true; diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 013434af51b4b05e42d3abc0504657729cafd14a..f5b1a2031b8899d8694a4c13fc25f02c63403f67 100644 +index cb978aeb63d8074358e75302a92559ce8472551b..2e016321682ce4a5007bb08eef3ff0f7cc9aef81 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -2154,6 +2154,18 @@ public class CraftEventFactory { diff --git a/patches/server/0101-EMC-Allow-Vehicle-Passenger-Teleporting-for-Bukkit-A.patch b/patches/server/0101-EMC-Allow-Vehicle-Passenger-Teleporting-for-Bukkit-A.patch index 6188c9c..521c136 100644 --- a/patches/server/0101-EMC-Allow-Vehicle-Passenger-Teleporting-for-Bukkit-A.patch +++ b/patches/server/0101-EMC-Allow-Vehicle-Passenger-Teleporting-for-Bukkit-A.patch @@ -6,7 +6,7 @@ Subject: [PATCH] EMC - Allow Vehicle/Passenger Teleporting for Bukkit API If Bukkit teleport is called, teleport the whole set of entities together and maintain the chain. diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index cace6bab48c502ca6b4f6aaad2f0664b736adbae..48bcf0097ba843da2cf8bc89aebb56edb8f42517 100644 +index ce03cd59919507c0471fe3450f64a50282f6a698..639cae1f99bf528770343f6da0f9565ee512552e 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -830,7 +830,7 @@ public abstract class PlayerList { @@ -19,7 +19,7 @@ index cace6bab48c502ca6b4f6aaad2f0664b736adbae..48bcf0097ba843da2cf8bc89aebb56ed this.playersByName.remove(entityplayer.getScoreboardName().toLowerCase(java.util.Locale.ROOT)); // Spigot entityplayer.serverLevel().removePlayerImmediately(entityplayer, Entity.RemovalReason.DISCARDED); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 3f1e30330145dd688af21281a20fe6e143098cde..fb9b2cb90a39407cf0c6e1644b0e158faed2cdf4 100644 +index 6bbd2d53672bfd59a5e64ac5a244225f489fb28f..bcc300d642c8d133201d2c919ab079710b41c809 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -301,7 +301,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -32,7 +32,7 @@ index 3f1e30330145dd688af21281a20fe6e143098cde..fb9b2cb90a39407cf0c6e1644b0e158f public double xo; public double yo; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 68d12d4ac69a0ec6bd798ecba9d6576f5a400f57..9140111c6d3e645e48b281f43ef138b4faa598b8 100644 +index 99589c948c7c0e3e8a56971315658d8bedffd11a..32ed37ba1a381bdf4346928f84a1767bc80cc6fc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -240,6 +240,86 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -161,7 +161,7 @@ index 68d12d4ac69a0ec6bd798ecba9d6576f5a400f57..9140111c6d3e645e48b281f43ef138b4 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 01d154c7de52afeee437a9d0f785d533164faf59..ec6ee08d8d7c2899db63f9568b087aaa66a25fdf 100644 +index 7dab81c7fae682ec20d859756b8ac1a483477c7e..e4312af4a4c1447e02d01c70ae1b16d65b1d866c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -1346,12 +1346,12 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -195,8 +195,8 @@ index 01d154c7de52afeee437a9d0f785d533164faf59..ec6ee08d8d7c2899db63f9568b087aaa + this.detachEntities(); // EMC // Check if the fromWorld and toWorld are the same. if (fromWorld == toWorld) { - entity.connection.internalTeleport(to.getX(), to.getY(), to.getZ(), to.getYaw(), to.getPitch(), relativeArguments); // Paper - Teleport API -@@ -1416,9 +1417,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player { + // Paper start - Teleport API +@@ -1422,9 +1423,23 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // The respawn reason should never be used if the passed location is non null. this.server.getHandle().respawn(entity, toWorld, true, to, !toWorld.paperConfig().environment.disableTeleportationSuffocationCheck, null); // Paper } diff --git a/patches/server/0105-Require-wearing-elytra-for-elytra-distance-statistic.patch b/patches/server/0105-Require-wearing-elytra-for-elytra-distance-statistic.patch index c7e8a9a..8d382c2 100644 --- a/patches/server/0105-Require-wearing-elytra-for-elytra-distance-statistic.patch +++ b/patches/server/0105-Require-wearing-elytra-for-elytra-distance-statistic.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Require wearing elytra for elytra distance statistics diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index dc8a894c39a56087b1d06f490e662db15122dd1b..57fb8db33660c66b04f87789e3cca0ea89d67447 100644 +index 749a57dbda60e2267e9ad6521624c76df7217178..165002a2bee25aebcb046ff7c29e2cf53b7ad6ab 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1822,8 +1822,13 @@ public class ServerPlayer extends Player { +@@ -1823,8 +1823,13 @@ public class ServerPlayer extends Player { } } } else if (this.isFallFlying()) { diff --git a/patches/server/0106-Don-t-count-Purpur-s-riding-towards-distance-statist.patch b/patches/server/0106-Don-t-count-Purpur-s-riding-towards-distance-statist.patch index 6b97094..6d9fe16 100644 --- a/patches/server/0106-Don-t-count-Purpur-s-riding-towards-distance-statist.patch +++ b/patches/server/0106-Don-t-count-Purpur-s-riding-towards-distance-statist.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Don't count Purpur's riding towards distance statistics diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 57fb8db33660c66b04f87789e3cca0ea89d67447..9dadded3adc82e36a93689547ac52fd45cbdea2f 100644 +index 165002a2bee25aebcb046ff7c29e2cf53b7ad6ab..f5d2d78c2be2542ac18796e5d9243de971f316d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -1843,6 +1843,11 @@ public class ServerPlayer extends Player { +@@ -1844,6 +1844,11 @@ public class ServerPlayer extends Player { if (this.isPassenger() && !ServerPlayer.didNotMove(deltaX, deltaY, deltaZ)) { int i = Math.round((float) Math.sqrt(deltaX * deltaX + deltaY * deltaY + deltaZ * deltaZ) * 100.0F); Entity entity = this.getVehicle(); diff --git a/patches/server/0107-Add-manual-panic-mode.patch b/patches/server/0107-Add-manual-panic-mode.patch index 8818519..6c5272b 100644 --- a/patches/server/0107-Add-manual-panic-mode.patch +++ b/patches/server/0107-Add-manual-panic-mode.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add manual panic mode diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index fb9b2cb90a39407cf0c6e1644b0e158faed2cdf4..fc6fda49fa466bfa113b217d17652af0c5f6ae60 100644 +index bcc300d642c8d133201d2c919ab079710b41c809..8d0531b593ef9367b2792447862e2cdcbc5c877f 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -340,6 +340,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S @@ -16,7 +16,7 @@ index fb9b2cb90a39407cf0c6e1644b0e158faed2cdf4..fc6fda49fa466bfa113b217d17652af0 public boolean wasTouchingWater; protected Object2DoubleMap> fluidHeight; protected boolean wasEyeInWater; -@@ -914,6 +915,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -918,6 +919,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S } } @@ -56,7 +56,7 @@ index 3263c816e82285ff943270be21049432ac7f55e9..da2cc383231175c7d0739f5a7169219b protected boolean findRandomPosition() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 9140111c6d3e645e48b281f43ef138b4faa598b8..e29a56aac670f760e11608accaa5259a22ac7a60 100644 +index 32ed37ba1a381bdf4346928f84a1767bc80cc6fc..cdd9f1ff3ea38584e4d7641bb1fae7742dc9f7a6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -1371,5 +1371,15 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { diff --git a/patches/server/0115-Paper-PR-Fix-delay-player-chunk-unloads.patch b/patches/server/0115-Paper-PR-Fix-delay-player-chunk-unloads.patch index 5c8904e..9346d08 100644 --- a/patches/server/0115-Paper-PR-Fix-delay-player-chunk-unloads.patch +++ b/patches/server/0115-Paper-PR-Fix-delay-player-chunk-unloads.patch @@ -44,10 +44,10 @@ index 1b090f1e79b996e52097afc49c1cec85936653e6..9ba8ac05ac7d700be7fb43dbcdf2d8b2 final int sendRadius) { // expect sendRadius to be = 1 + target viewable radius diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -index 2519ad2884b6c09b312432b933c31476b369e599..229198010de1cbefa465a07e023b60fba6c61573 100644 +index e1ffd62f4ebceecb9bc5471df3da406cffea0483..6e5311b33453ef54d8f5dc7bbd2ca70c801772fd 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkHolderManager.java -@@ -517,10 +517,18 @@ public final class ChunkHolderManager { +@@ -518,10 +518,18 @@ public final class ChunkHolderManager { } boolean addTicketAtLevel(final TicketType type, final long chunk, final int level, final T identifier, final boolean lock) { @@ -67,7 +67,7 @@ index 2519ad2884b6c09b312432b933c31476b369e599..229198010de1cbefa465a07e023b60fb final int chunkX = CoordinateUtils.getChunkX(chunk); final int chunkZ = CoordinateUtils.getChunkZ(chunk); -@@ -604,21 +612,9 @@ public final class ChunkHolderManager { +@@ -605,21 +613,9 @@ public final class ChunkHolderManager { final int newLevel = getTicketLevelAt(ticketsAtChunk); // we should not change the ticket levels while the target region may be ticking if (oldLevel != newLevel) {