diff --git a/patches/server/0013-Optimize-canSee-checks.patch b/patches/server/0013-Optimize-canSee-checks.patch index 6740f6a..0058297 100644 --- a/patches/server/0013-Optimize-canSee-checks.patch +++ b/patches/server/0013-Optimize-canSee-checks.patch @@ -27,7 +27,7 @@ index d9cd497bc1b654030ff1a597f038b6a881df9f6b..5c70baf0113004e5c5cbc2fd6a6d34c7 } // 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 c54df6e4aed9b7b46a41af4108a8e90d96c1fe1f..c856311f0f50d6e097b9acf27a630cae9fd855ba 100644 +index da63b4050be25dcb91d04df8c2fcc643cbb0751d..bd4ca61dd2bb238bb05a64724e9926ede7063eef 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java @@ -181,7 +181,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @@ -39,7 +39,7 @@ index c54df6e4aed9b7b46a41af4108a8e90d96c1fe1f..c856311f0f50d6e097b9acf27a630cae private final Set unlistedEntities = new HashSet<>(); // Paper private static final WeakHashMap> pluginWeakReferences = new WeakHashMap<>(); private int hash = 0; -@@ -2091,9 +2091,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2138,9 +2138,16 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public boolean canSee(org.bukkit.entity.Entity entity) { diff --git a/patches/server/0017-Track-how-much-MSPT-each-world-used.patch b/patches/server/0017-Track-how-much-MSPT-each-world-used.patch index b43ca6d..0d947f8 100644 --- a/patches/server/0017-Track-how-much-MSPT-each-world-used.patch +++ b/patches/server/0017-Track-how-much-MSPT-each-world-used.patch @@ -77,10 +77,10 @@ index f43060555bf02f13268b284606045fce2b3e911a..f34a9d3a255ee72e2c467376bd1f7bc2 for (final io.papermc.paper.chunk.SingleThreadChunkRegionManager regionManager : worldserver.getChunkSource().chunkMap.regionManagers) { regionManager.recalculateRegions(); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index b78a9628a88f2a495ef6de74446a02a14d41a1f6..094a6ddebf79aa49b3e3cd8a032db7b8d23607c4 100644 +index 676087c3addd712939c865b39ddb5d9f0bc7ce25..6999dde76bb98f9a1cb74a24fa518d705421e58e 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -687,6 +687,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -692,6 +692,12 @@ public class ServerLevel extends Level implements WorldGenLevel { } // Paper end - optimise nearby player retrieval diff --git a/patches/server/0018-Parallel-world-ticking.patch b/patches/server/0018-Parallel-world-ticking.patch index a375c8f..1cdceb7 100644 --- a/patches/server/0018-Parallel-world-ticking.patch +++ b/patches/server/0018-Parallel-world-ticking.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Parallel world ticking "mom can we have folia?" "we already have folia at home" folia at home: 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 abd0217cf0bff183c8e262edc173a53403797c1a..1ef797d2c743077c40c7e1796d4afe324e162970 100644 +index 6bc7c6f16a1649fc9e24e7cf90fca401e5bd4875..a6082e925ad1e27d6a5089356af1840ee8852a9a 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 -@@ -1023,7 +1023,7 @@ public final class ChunkHolderManager { +@@ -1024,7 +1024,7 @@ public final class ChunkHolderManager { if (changedFullStatus.isEmpty()) { return; } @@ -18,7 +18,7 @@ index abd0217cf0bff183c8e262edc173a53403797c1a..1ef797d2c743077c40c7e1796d4afe32 this.taskScheduler.scheduleChunkTask(() -> { final ArrayDeque pendingFullLoadUpdate = ChunkHolderManager.this.pendingFullLoadUpdate; for (int i = 0, len = changedFullStatus.size(); i < len; ++i) { -@@ -1052,7 +1052,7 @@ public final class ChunkHolderManager { +@@ -1053,7 +1053,7 @@ public final class ChunkHolderManager { // note: never call while inside the chunk system, this will absolutely break everything public void processUnloads() { @@ -27,7 +27,7 @@ index abd0217cf0bff183c8e262edc173a53403797c1a..1ef797d2c743077c40c7e1796d4afe32 if (BLOCK_TICKET_UPDATES.get() == Boolean.TRUE) { throw new IllegalStateException("Cannot unload chunks recursively"); -@@ -1327,14 +1327,14 @@ public final class ChunkHolderManager { +@@ -1328,14 +1328,14 @@ public final class ChunkHolderManager { } private boolean processTicketUpdates(final boolean checkLocks, final boolean processFullUpdates, List scheduledTasks) { @@ -45,10 +45,10 @@ index abd0217cf0bff183c8e262edc173a53403797c1a..1ef797d2c743077c40c7e1796d4afe32 boolean ret = false; final boolean canProcessFullUpdates = processFullUpdates & isTickThread; diff --git a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -index f975cb93716e137d973ff2f9011acdbef58859a2..cc510eea4b872e1238f97846db638b2a7028a66d 100644 +index 17ce14f2dcbf900890efbc2351782bc6f8867068..3d762963d9b7bbb355358ccdb453a32c3651bc51 100644 --- a/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java +++ b/src/main/java/io/papermc/paper/chunk/system/scheduling/ChunkTaskScheduler.java -@@ -327,7 +327,7 @@ public final class ChunkTaskScheduler { +@@ -330,7 +330,7 @@ public final class ChunkTaskScheduler { public void scheduleTickingState(final int chunkX, final int chunkZ, final FullChunkStatus toStatus, final boolean addTicket, final PrioritisedExecutor.Priority priority, final Consumer onComplete) { @@ -57,7 +57,7 @@ index f975cb93716e137d973ff2f9011acdbef58859a2..cc510eea4b872e1238f97846db638b2a this.scheduleChunkTask(chunkX, chunkZ, () -> { ChunkTaskScheduler.this.scheduleTickingState(chunkX, chunkZ, toStatus, addTicket, priority, onComplete); }, priority); -@@ -483,7 +483,7 @@ public final class ChunkTaskScheduler { +@@ -486,7 +486,7 @@ public final class ChunkTaskScheduler { public void scheduleChunkLoad(final int chunkX, final int chunkZ, final ChunkStatus toStatus, final boolean addTicket, final PrioritisedExecutor.Priority priority, final Consumer onComplete) { @@ -381,7 +381,7 @@ index 6c78d90e73b47b62c4052727730850d4b67a9cd2..4c42889e680415caab304f230979f352 } diff --git a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java -index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1cb2ed7aa 100644 +index bf1c5834717758991c1520afd4b2a5c3fa68a558..c1387cd2726083b52f2ba51297072de3bb74281e 100644 --- a/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/DispenseItemBehavior.java @@ -222,7 +222,7 @@ public interface DispenseItemBehavior { @@ -447,7 +447,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -633,7 +633,7 @@ public interface DispenseItemBehavior { +@@ -639,7 +639,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack.copyWithCount(1)); // Paper - single item in event BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(x, y, z)); @@ -456,7 +456,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -708,7 +708,7 @@ public interface DispenseItemBehavior { +@@ -713,7 +713,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack.copyWithCount(1)); // Paper - single item in event BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); @@ -465,8 +465,8 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -755,7 +755,7 @@ public interface DispenseItemBehavior { - CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack); +@@ -760,7 +760,7 @@ public interface DispenseItemBehavior { + CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack); // Paper - ignore stack size on damageable items BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); - if (!DispenserBlock.eventFired) { @@ -474,7 +474,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -818,7 +818,7 @@ public interface DispenseItemBehavior { +@@ -821,7 +821,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack.copyWithCount(1)); // Paper - single item in event BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); @@ -483,7 +483,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -848,8 +848,8 @@ public interface DispenseItemBehavior { +@@ -850,8 +850,8 @@ public interface DispenseItemBehavior { // CraftBukkit start worldserver.captureTreeGeneration = false; if (worldserver.capturedBlockStates.size() > 0) { @@ -494,7 +494,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 Location location = CraftLocation.toBukkit(blockposition, worldserver.getWorld()); List blocks = new java.util.ArrayList<>(worldserver.capturedBlockStates.values()); worldserver.capturedBlockStates.clear(); -@@ -888,7 +888,7 @@ public interface DispenseItemBehavior { +@@ -890,7 +890,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1); BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector((double) blockposition.getX() + 0.5D, (double) blockposition.getY(), (double) blockposition.getZ() + 0.5D)); @@ -503,7 +503,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -945,7 +945,7 @@ public interface DispenseItemBehavior { +@@ -947,7 +947,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack.copyWithCount(1)); // Paper - single item in event BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); @@ -521,7 +521,7 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 worldserver.getCraftServer().getPluginManager().callEvent(event); } -@@ -1070,7 +1070,7 @@ public interface DispenseItemBehavior { +@@ -1069,7 +1069,7 @@ public interface DispenseItemBehavior { CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack.copyWithCount(1)); // Paper - only single item in event BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(blockposition.getX(), blockposition.getY(), blockposition.getZ())); @@ -531,11 +531,11 @@ index e6ac20a38f31bb0cd6b8840b2518f6992ef7f518..a7b57fd309ca2db1e465062c991f15c1 } diff --git a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java -index e17090003988ad2c890d48666c2234b14d511345..6b82ce7423fe08238bd9b44b442ca9b05a3101d8 100644 +index 887e75c940ab5089f4e42e4553ab95adf172df46..c477e31142be8ee20f1dbba7ad1f5b7baad7437d 100644 --- a/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java +++ b/src/main/java/net/minecraft/core/dispenser/ShearsDispenseItemBehavior.java @@ -40,7 +40,7 @@ public class ShearsDispenseItemBehavior extends OptionalDispenseItemBehavior { - CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack); + CraftItemStack craftItem = CraftItemStack.asCraftMirror(stack); // Paper - ignore stack size on damageable items BlockDispenseEvent event = new BlockDispenseEvent(bukkitBlock, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0)); - if (!DispenserBlock.eventFired) { @@ -841,7 +841,7 @@ index 22213a52c5d546145d8b8de929af61e49d40375d..40878c28fa1e383e88c7ce2dfa142ab0 } } diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b9c30c79e 100644 +index 6999dde76bb98f9a1cb74a24fa518d705421e58e..f53b7230a49678824039bea94fc5bd1501b38bf4 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -218,6 +218,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -852,7 +852,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b // CraftBukkit start public final LevelStorageSource.LevelStorageAccess convertable; -@@ -705,7 +706,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -710,7 +711,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.uuid = WorldUUID.getUUID(convertable_conversionsession.levelDirectory.path().toFile()); // CraftBukkit end this.players = Lists.newArrayList(); @@ -861,7 +861,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b this.blockTicks = new LevelTicks<>(this::isPositionTickingWithEntitiesLoaded, this.getProfilerSupplier()); this.fluidTicks = new LevelTicks<>(this::isPositionTickingWithEntitiesLoaded, this.getProfilerSupplier()); this.navigatingMobs = new ObjectOpenHashSet(); -@@ -776,6 +777,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -781,6 +782,7 @@ public class ServerLevel extends Level implements WorldGenLevel { this.chunkTaskScheduler = new io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler(this, io.papermc.paper.chunk.system.scheduling.ChunkTaskScheduler.workerThreads); // Paper - rewrite chunk system this.entityLookup = new io.papermc.paper.chunk.system.entity.EntityLookup(this, new EntityCallbacks()); // Paper - rewrite chunk system @@ -869,7 +869,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b } // Paper start -@@ -1353,7 +1355,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1358,7 +1360,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (fluid1.is(fluid)) { fluid1.tick(this, pos); } @@ -878,7 +878,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b } -@@ -1363,7 +1365,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1368,7 +1370,7 @@ public class ServerLevel extends Level implements WorldGenLevel { if (iblockdata.is(block)) { iblockdata.tick(this, pos, this.random); } @@ -887,7 +887,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b } -@@ -1381,7 +1383,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1386,7 +1388,7 @@ public class ServerLevel extends Level implements WorldGenLevel { public void tickNonPassenger(Entity entity) { // Paper start - log detailed entity tick information @@ -896,7 +896,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b try { if (currentlyTickingEntity.get() == null) { currentlyTickingEntity.lazySet(entity); -@@ -1669,6 +1671,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1674,6 +1676,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void addPlayer(ServerPlayer player) { @@ -904,7 +904,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b Entity entity = (Entity) this.getEntities().get(player.getUUID()); if (entity != null) { -@@ -1682,7 +1685,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1687,7 +1690,7 @@ public class ServerLevel extends Level implements WorldGenLevel { // CraftBukkit start private boolean addEntity(Entity entity, CreatureSpawnEvent.SpawnReason spawnReason) { @@ -913,7 +913,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b // Paper start if (entity.valid) { MinecraftServer.LOGGER.error("Attempted Double World add on " + entity, new Throwable()); -@@ -2667,6 +2670,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -2672,6 +2675,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void close() throws IOException { super.close(); @@ -922,7 +922,7 @@ index 094a6ddebf79aa49b3e3cd8a032db7b8d23607c4..e640ad5dd3f1caab04a8a99f967ef20b } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f355fce7f6f 100644 +index be05a52be037042c6158100e2ce880b8ed415d53..0eda3d6699a35ffe320c7fc7b86e4573c9d4e6cd 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -17,6 +17,7 @@ import java.util.OptionalInt; @@ -979,7 +979,7 @@ index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f35 if (!this.level().isClientSide && this.containerMenu != this.inventoryMenu && (this.isImmobile() || !this.containerMenu.stillValid(this))) { // Paper - auto close while frozen this.closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason.CANT_USE); // Paper this.containerMenu = this.inventoryMenu; -@@ -1184,6 +1182,7 @@ public class ServerPlayer extends Player { +@@ -1185,6 +1183,7 @@ public class ServerPlayer extends Player { ResourceKey resourcekey = worldserver1.getTypeKey(); // CraftBukkit if (resourcekey == LevelStem.END && worldserver != null && worldserver.getTypeKey() == LevelStem.OVERWORLD) { // CraftBukkit @@ -987,7 +987,7 @@ index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f35 this.isChangingDimension = true; // CraftBukkit - Moved down from above this.unRide(); this.serverLevel().removePlayerImmediately(this, Entity.RemovalReason.CHANGED_DIMENSION); -@@ -1196,6 +1195,10 @@ public class ServerPlayer extends Player { +@@ -1197,6 +1196,10 @@ public class ServerPlayer extends Player { return this; } else { @@ -998,7 +998,7 @@ index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f35 // CraftBukkit start /* WorldData worlddata = worldserver.getLevelData(); -@@ -1604,6 +1607,12 @@ public class ServerPlayer extends Player { +@@ -1605,6 +1608,12 @@ public class ServerPlayer extends Player { return OptionalInt.empty(); } else { // CraftBukkit start @@ -1011,7 +1011,7 @@ index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f35 this.containerMenu = container; if (!this.isImmobile()) this.connection.send(new ClientboundOpenScreenPacket(container.containerId, container.getType(), Objects.requireNonNullElseGet(title, container::getTitle))); // Paper // CraftBukkit end -@@ -1665,6 +1674,11 @@ public class ServerPlayer extends Player { +@@ -1666,6 +1675,11 @@ public class ServerPlayer extends Player { } @Override public void closeContainer(org.bukkit.event.inventory.InventoryCloseEvent.Reason reason) { @@ -1024,7 +1024,7 @@ index 0eb3384df396508c3d26d1e155cd0e6d64251346..548bbf8bf3aa128c8b0e24a4f98e0f35 // Paper end this.connection.send(new ClientboundContainerClosePacket(this.containerMenu.containerId)); diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index a35638a92479b90afa89cf201fc45b49c9e767f3..b842dc3d286a98d40267bac141749c4aaf3f082d 100644 +index e98a455b6bca9d094d0da323bddd7b3f2c07bb23..7b82aae91fda6a73c2ca2e27a89a2ec34ba0fa3c 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -109,7 +109,6 @@ import org.bukkit.Location; @@ -1308,7 +1308,7 @@ index 9442f58dff89ec843c321533965fbee2727d02f8..ab30f345381e32a1751adbd2344d8f3c continue; } diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 608259c6092f5353e818b5fbeb0e1a5249ed136b..ed07b4a584f4b51b9156ec58a8963436cf229b0f 100644 +index 6aae2e409258607df170165c959a1cc7448c7f62..c74c8950058084a9d2dcd44b3d4941d5bdde75a9 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -15,6 +15,8 @@ import java.util.function.Consumer; @@ -1736,7 +1736,7 @@ index 4cdfc433df67afcd455422e9baf56f167dd712ae..f52b3740bd48f8527a36d48a0454e7d6 // To ensure nothing weird happens with dimension travelling, do not iterate over new entries... // (by dfl iterator() is configured to not iterate over new entries) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 03eab4e7c2648c722c25387ec9353e8dafc09618..c78f1d934d0209ee01303835be7c3287609754fc 100644 +index 38d842bc0fb7d9c39a3673983a643248e9563fe2..f6663c2a9984955057e5f070f31b4825d956cf60 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -434,7 +434,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @@ -1812,7 +1812,7 @@ index 03eab4e7c2648c722c25387ec9353e8dafc09618..c78f1d934d0209ee01303835be7c3287 if (this.world.hasChunkAt(pos)) { net.minecraft.world.level.chunk.LevelChunk chunk = this.world.getChunkAt(pos); -@@ -2359,6 +2365,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2366,6 +2372,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { @Override public void sendGameEvent(Entity sourceEntity, org.bukkit.GameEvent gameEvent, Vector position) { @@ -1820,7 +1820,7 @@ index 03eab4e7c2648c722c25387ec9353e8dafc09618..c78f1d934d0209ee01303835be7c3287 getHandle().gameEvent(sourceEntity != null ? ((CraftEntity) sourceEntity).getHandle(): null, net.minecraft.core.registries.BuiltInRegistries.GAME_EVENT.get(org.bukkit.craftbukkit.util.CraftNamespacedKey.toMinecraft(gameEvent.getKey())), org.bukkit.craftbukkit.util.CraftVector.toBlockPos(position)); } // Paper end -@@ -2462,7 +2469,7 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2469,7 +2476,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 @@ -2073,7 +2073,7 @@ index 9271ff2a9ea05569e3c81886399aa7ab47efb05d..e5891ed14f688413dfe9ebd2b5af6d4b // 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 f67ec3f5f4b7e2f678609f2387cc8afa2adce161..5ab000311e2d93a0db6af5d77f33a3404168fe33 100644 +index 2aab68bac670dcd134d817940020214c7b0797f9..1bc112574337b262e88a8b30ed5b75d62d160db4 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -243,8 +243,8 @@ import org.bukkit.potion.PotionEffect;