From 8c40f738c793ae971942bd28f36f7b045f40daf0 Mon Sep 17 00:00:00 2001 From: MrPowerGamerBR Date: Tue, 1 Oct 2024 23:27:54 -0300 Subject: [PATCH] Fix merge conflicts --- .../0005-SPARKLYPOWER-Add-custom-blocks.patch | 4 +- ...3-Rewrite-framed-map-tracker-ticking.patch | 15 ++-- ...uler-s-executeTick-checks-if-there-i.patch | 10 +-- .../0010-Spooky-month-optimizations.patch | 8 +- .../server/0011-Optimize-canSee-checks.patch | 8 +- ...-Track-how-much-MSPT-each-world-used.patch | 6 +- .../0020-Add-CraftItemRecipeEvent.patch | 6 +- .../0021-Allow-item-version-downgrades.patch | 4 +- .../server/0023-Parallel-world-ticking.patch | 74 +++++++++---------- 9 files changed, 68 insertions(+), 67 deletions(-) diff --git a/patches/api/0005-SPARKLYPOWER-Add-custom-blocks.patch b/patches/api/0005-SPARKLYPOWER-Add-custom-blocks.patch index ef4ff00..64cbdf3 100644 --- a/patches/api/0005-SPARKLYPOWER-Add-custom-blocks.patch +++ b/patches/api/0005-SPARKLYPOWER-Add-custom-blocks.patch @@ -33,10 +33,10 @@ index be212b4fbeabab32a4dab6ae554768c368efaa88..fc885e551b1e8393569ec1391ee3decd /** diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java -index 54704da43cf9c429f3914f0580246dde99aa93c0..04ba1fa0eea60a8f01c89942cc8f3f8250192a72 100644 +index de469f32dd9a01e0e2fde016044a783dde0c5b98..ea13aabe6e8cdf07698f96dc5264531e8a254529 100644 --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -3676,6 +3676,22 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla +@@ -3678,6 +3678,22 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla BIG_DRIPLEAF_STEM(13167, Dripleaf.class), POTTED_AZALEA_BUSH(20430), POTTED_FLOWERING_AZALEA_BUSH(10609), diff --git a/patches/server/0003-Rewrite-framed-map-tracker-ticking.patch b/patches/server/0003-Rewrite-framed-map-tracker-ticking.patch index 7ec7496..9177e12 100644 --- a/patches/server/0003-Rewrite-framed-map-tracker-ticking.patch +++ b/patches/server/0003-Rewrite-framed-map-tracker-ticking.patch @@ -102,7 +102,7 @@ index 5b7245cd99593ee90e17c97e0104f3aba9ae05ea..03432d084f8ed0cb7716d612b35f7409 itemstack.consume(1, player); } diff --git a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java -index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee821caab7b5 100644 +index 6794466051dd4b725d579b2136c37844995a648e..95b2078d24c83e56760bc8be404df603a15b37c5 100644 --- a/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java +++ b/src/main/java/net/minecraft/world/level/saveddata/maps/MapItemSavedData.java @@ -80,6 +80,16 @@ public class MapItemSavedData extends SavedData { @@ -122,15 +122,16 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82 // CraftBukkit start public final CraftMapView mapView; -@@ -352,6 +362,7 @@ public class MapItemSavedData extends SavedData { +@@ -351,7 +361,7 @@ public class MapItemSavedData extends SavedData { + --this.trackedDecorationCount; } - this.setDecorationsDirty(); +- if (mapicon != null) this.setDecorationsDirty(); // Paper - only mark dirty if a change occurs + if (mapicon != null && mapicon.renderOnFrame()) this.dirtyFrameDecorations = true; // Paper } public static void addTargetDecoration(ItemStack stack, BlockPos pos, String id, Holder decorationType) { -@@ -433,6 +444,7 @@ public class MapItemSavedData extends SavedData { +@@ -433,6 +443,7 @@ public class MapItemSavedData extends SavedData { } this.setDecorationsDirty(); @@ -138,7 +139,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82 } } -@@ -446,6 +458,20 @@ public class MapItemSavedData extends SavedData { +@@ -446,6 +457,20 @@ public class MapItemSavedData extends SavedData { public void setColorsDirty(int x, int z) { this.setDirty(); @@ -159,7 +160,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82 Iterator iterator = this.carriedBy.iterator(); while (iterator.hasNext()) { -@@ -528,6 +554,7 @@ public class MapItemSavedData extends SavedData { +@@ -528,6 +553,7 @@ public class MapItemSavedData extends SavedData { public void removedFromFrame(BlockPos pos, int id) { this.removeDecoration(MapItemSavedData.getFrameKey(id)); this.frameMarkers.remove(MapFrame.frameId(pos)); @@ -167,7 +168,7 @@ index 17f33c83c6033564d6bf4fbd388b0b847c68adb3..6bcb565cd60b60be9255ef537591ee82 } public boolean updateColor(int x, int z, byte color) { -@@ -589,6 +616,93 @@ public class MapItemSavedData extends SavedData { +@@ -589,6 +615,93 @@ public class MapItemSavedData extends SavedData { return "frame-" + id; } diff --git a/patches/server/0008-Skip-EntityScheduler-s-executeTick-checks-if-there-i.patch b/patches/server/0008-Skip-EntityScheduler-s-executeTick-checks-if-there-i.patch index 70ee23d..308533b 100644 --- a/patches/server/0008-Skip-EntityScheduler-s-executeTick-checks-if-there-i.patch +++ b/patches/server/0008-Skip-EntityScheduler-s-executeTick-checks-if-there-i.patch @@ -73,10 +73,10 @@ index c03608fec96b51e1867f43d8f42e5aefb1520e46..15b21fa3907db1b77ed5b5d1050a37f4 throw new IllegalStateException("Ticking retired scheduler"); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 23ddd26af762c1cd7fb3920669abb96b3213ab37..7f2e25b2ebb8fb698a4adb12d77670e126549405 100644 +index 696d075ca2883f3c37e35f983c4d020e5db89d16..1a7daaebdfd616e1417eb6aade727ca23fa77b18 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -323,7 +323,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); Thread thread = new ca.spottedleaf.moonrise.common.util.TickThread(() -> { // Paper - rewrite chunk system -@@ -1727,6 +1728,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { for (final Entity entity : level.moonrise$getEntityLookup().getAllCopy()) { // Paper - rewrite chunk system if (entity.isRemoved()) { -@@ -1738,6 +1751,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) @@ -89,10 +89,10 @@ index 3b5cf6ffb74d11bea5eb21bd66d679734ff5000c..97bdeb56fee6fb4ae924973730e34dbf this.armorDropChances[EquipmentSlot.HEAD.getIndex()] = 0.0F; } diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 2280004638fd19ed018cb3e77d53a018b34ec516..fb15112f920174d7ea6a3bd683418772c0910780 100644 +index 2b43337ac63d051718a2074fcc46e128a1d65129..896e253f349b0cf21fda0d798aca8a70942c8f86 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -553,10 +553,11 @@ public class Zombie extends Monster { +@@ -550,10 +550,11 @@ public class Zombie extends Monster { if (this.getItemBySlot(EquipmentSlot.HEAD).isEmpty()) { LocalDate localdate = LocalDate.now(); diff --git a/patches/server/0011-Optimize-canSee-checks.patch b/patches/server/0011-Optimize-canSee-checks.patch index d29f0bd..4f63854 100644 --- a/patches/server/0011-Optimize-canSee-checks.patch +++ b/patches/server/0011-Optimize-canSee-checks.patch @@ -14,10 +14,10 @@ This seems stupid, but it does seem that it improves the performance a bit, and We also create a "canSee" method tailored for "ChunkMap#updatePlayer()", a method without the equals check (the "updatePlayer()" already checks if the entity is the same entity) because the CraftPlayer's `equals()` check is a *bit* expensive compared to only checking the object's identity, and because the identity has already been check, we don't need to check it twice. diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java -index 1e0a6e5a3c907ab55ee6f2780a7d43bd455f2b7b..15bc677119ae394e0334e2570bc01d774fe1a264 100644 +index af8cb316ac169aa8d98a88765b85bb013b9ba961..250f8ba3c77830ea0978fdeeb7748336ca150939 100644 --- a/src/main/java/net/minecraft/server/level/ChunkMap.java +++ b/src/main/java/net/minecraft/server/level/ChunkMap.java -@@ -1257,7 +1257,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider +@@ -1258,7 +1258,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider // Paper end - Configurable entity tracking range by Y // CraftBukkit start - respect vanish API @@ -27,7 +27,7 @@ index 1e0a6e5a3c907ab55ee6f2780a7d43bd455f2b7b..15bc677119ae394e0334e2570bc01d77 } // CraftBukkit end diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index a0d5082590ee03060f0dbb4770d196efc316c328..00c6e2ab7e79750a7eef8d25c03caa787b011b14 100644 +index 42d7660efe5baa6f796f2a7606686c765b6f2478..d047114737164e12491223bc68a141efc1c389fe 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -200,7 +200,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -39,7 +39,7 @@ index a0d5082590ee03060f0dbb4770d196efc316c328..00c6e2ab7e79750a7eef8d25c03caa78 private final Set unlistedEntities = new HashSet<>(); // Paper - Add Listing API for Player private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2248,9 +2248,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2252,9 +2252,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/server/0015-Track-how-much-MSPT-each-world-used.patch b/patches/server/0015-Track-how-much-MSPT-each-world-used.patch index fcd643e..de87eed 100644 --- a/patches/server/0015-Track-how-much-MSPT-each-world-used.patch +++ b/patches/server/0015-Track-how-much-MSPT-each-world-used.patch @@ -56,10 +56,10 @@ index 8b5293b0c696ef21d0101493ffa41b60bf0bc86b..601198a33adb29316b0617d5390d1620 } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index b198e2b7a1a96972ecf761e1713085d618aadead..1633d2b2816d3cf958f13d2613812f582b2d1591 100644 +index 3ad7a0a6b698ed2ff040fe1015b59e897a173811..f91374c44c392f9d28799fbf3538f99258d727b4 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1819,7 +1819,16 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entitiesWithScheduledTasks = java.util.concurrent.ConcurrentHashMap.newKeySet(); // SparklyPaper - skip EntityScheduler's executeTick checks if there isn't any tasks to be run (concurrent because plugins may schedule tasks async) public net.sparklypower.sparklypaper.HalloweenManager halloweenManager = new net.sparklypower.sparklypaper.HalloweenManager(); // SparklyPaper - Spooky month optimizations @@ -525,7 +525,7 @@ index 1633d2b2816d3cf958f13d2613812f582b2d1591..2a17896600e4405e4b533e8cb1d3caa3 public static S spin(Function serverFactory) { AtomicReference atomicreference = new AtomicReference(); -@@ -1795,52 +1798,65 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getEntities(@Nullable Entity except, AABB box, Predicate predicate) { @@ -993,7 +993,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a this.getProfiler().incrementCounter("getEntities"); // Paper start - rewrite chunk system final List ret = new java.util.ArrayList<>(); -@@ -1948,8 +1953,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl +@@ -1965,8 +1970,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl public abstract RecipeManager getRecipeManager(); public BlockPos getBlockRandomPos(int x, int y, int z, int l) { @@ -1004,7 +1004,7 @@ index b9c81680c34d71e0bb66c5d49cc115c945769e6b..4ce51383bc4526079e28e4549563629a return new BlockPos(x + (i1 & 15), y + (i1 >> 16 & l), z + (i1 >> 8 & 15)); } diff --git a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java -index f6edfea463b3725d3a79aca38825e86dbf82175c..c62d576a94308dece71eaef451280456dd87861c 100644 +index e1021d8be840f378568f28639c259182055c78ac..d8728bed4aaff697af2f4051afbe779481ae61dd 100644 --- a/src/main/java/net/minecraft/world/level/block/DispenserBlock.java +++ b/src/main/java/net/minecraft/world/level/block/DispenserBlock.java @@ -51,7 +51,8 @@ public class DispenserBlock extends BaseEntityBlock { @@ -1017,7 +1017,7 @@ index f6edfea463b3725d3a79aca38825e86dbf82175c..c62d576a94308dece71eaef451280456 @Override public MapCodec codec() { -@@ -111,7 +112,7 @@ public class DispenserBlock extends BaseEntityBlock { +@@ -110,7 +111,7 @@ public class DispenserBlock extends BaseEntityBlock { if (idispensebehavior != DispenseItemBehavior.NOOP) { if (!org.bukkit.craftbukkit.event.CraftEventFactory.handleBlockPreDispenseEvent(world, pos, itemstack, i)) return; // Paper - Add BlockPreDispenseEvent @@ -1301,10 +1301,10 @@ index 763b315b1d761bc3bd82d9b847ed3f64fd5ce991..b67dddabbae835cbe7261768fb14bfac } } diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b189393000 100644 +index 33e4818ba5a90d78d69baad9f6b1be1b1382e9f3..9ef3b66934e49cb492fd45cec50943ff4c7d2031 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -423,7 +423,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -474,7 +474,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { } private boolean unloadChunk0(int x, int z, boolean save) { @@ -1313,7 +1313,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 if (!this.isChunkLoaded(x, z)) { return true; } -@@ -444,6 +444,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -495,6 +495,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { if (!unloadChunk0(x, z, false)) { return false; } @@ -1321,7 +1321,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 warnUnsafeChunk("regenerating a faraway chunk", x, z); // Paper final long chunkKey = ChunkCoordIntPair.pair(x, z); -@@ -465,6 +466,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -516,6 +517,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean refreshChunk(int x, int z) { @@ -1329,7 +1329,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 ChunkHolder playerChunk = this.world.getChunkSource().chunkMap.getVisibleChunkIfPresent(ChunkPos.asLong(x, z)); if (playerChunk == null) return false; -@@ -525,7 +527,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -576,7 +578,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean loadChunk(int x, int z, boolean generate) { @@ -1338,7 +1338,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 warnUnsafeChunk("loading a faraway chunk", x, z); // Paper ChunkAccess chunk = this.world.getChunkSource().getChunk(x, z, generate || isChunkGenerated(x, z) ? ChunkStatus.FULL : ChunkStatus.EMPTY, true); // Paper -@@ -777,6 +779,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -828,6 +830,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { @@ -1346,7 +1346,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 this.world.captureTreeGeneration = true; this.world.captureBlockStates = true; boolean grownTree = this.generateTree(loc, type); -@@ -887,6 +890,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -938,6 +941,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public boolean createExplosion(double x, double y, double z, float power, boolean setFire, boolean breakBlocks, Entity source) { @@ -1354,15 +1354,15 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 net.minecraft.world.level.Level.ExplosionInteraction explosionType; if (!breakBlocks) { explosionType = net.minecraft.world.level.Level.ExplosionInteraction.NONE; // Don't break blocks -@@ -901,6 +905,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -952,6 +956,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { // Paper start @Override - public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks) { + public boolean createExplosion(Entity source, Location loc, float power, boolean setFire, boolean breakBlocks, boolean excludeSourceFromDamage) { + ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(world, loc.getX(), loc.getZ(), "Cannot create explosion asynchronously"); // SparklyPaper - parallel world ticking (additional concurrency issues logs) - return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE).wasCanceled; - } - // Paper end -@@ -977,6 +982,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { + return !world.explode(source != null ? ((org.bukkit.craftbukkit.entity.CraftEntity) source).getHandle() : null, loc.getX(), loc.getY(), loc.getZ(), power, setFire, breakBlocks ? net.minecraft.world.level.Level.ExplosionInteraction.MOB : net.minecraft.world.level.Level.ExplosionInteraction.NONE, explosion -> { + explosion.excludeSourceFromDamage = excludeSourceFromDamage; + }).wasCanceled; +@@ -1030,6 +1035,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public int getHighestBlockYAt(int x, int z, org.bukkit.HeightMap heightMap) { @@ -1370,7 +1370,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 warnUnsafeChunk("getting a faraway chunk", x >> 4, z >> 4); // Paper // Transient load for this tick return this.world.getChunk(x >> 4, z >> 4).getHeight(CraftHeightMap.toNMS(heightMap), x, z); -@@ -1007,6 +1013,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -1060,6 +1066,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void setBiome(int x, int y, int z, Holder bb) { BlockPos pos = new BlockPos(x, 0, z); @@ -1378,7 +1378,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2276,6 +2283,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2329,6 +2336,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { @@ -1386,7 +1386,7 @@ index ffd284f0e25c6f20672f7225aafd37e6c87ccf03..e8ee04d6b34ad7376428f8247c5383b1 getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.getHolder(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())).orElseThrow(), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position)); } // Paper end -@@ -2404,7 +2412,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2454,7 +2462,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { // Paper start public java.util.concurrent.CompletableFuture getChunkAtAsync(int x, int z, boolean gen, boolean urgent) { warnUnsafeChunk("getting a faraway chunk async", x, z); // Paper @@ -1566,7 +1566,7 @@ index ac11f18690434922179b61ffcc3036dea025b0cb..59b8136ebd0100f0f8e6ded002486b37 this.getNMS().tick(level, this.position, level.random); } diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java -index cee3fe00cc662f095e7d726b5f1a913cd8199210..bf1be2997d72767f0e953e735a7c4812a6179260 100644 +index 440b4c13121e3ac2bab937a83d20cc3fbf69bda1..7166ac09eaa855768e414904d3232bc3c92179e4 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java @@ -25,7 +25,7 @@ public abstract class CraftBlockEntityState extends Craft @@ -1639,7 +1639,7 @@ index b7ff7af2513204b151340538d50a65c850bdb75f..45f9b2594e449926d7f00f64bf12fef2 // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 6d166a6662ed2badfdc9cb42ca4374dc8d640404..e09be2bd058d93b9e7828fc788398a480452cc61 100644 +index beddb6a64e0ba5112d369794a066ca6b9f2ac303..5e29381a1077b1c997dfba4c9bedf85d6e583ca7 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -953,7 +953,7 @@ public class CraftEventFactory {