From 32c2b33dccfa65e1231021b2218cdf5add003e96 Mon Sep 17 00:00:00 2001 From: Spottedleaf Date: Sun, 16 Feb 2025 12:23:20 -0800 Subject: [PATCH] Update Paper --- .../features/0001-Region-Threading-Base.patch | 134 +++++++++--------- .../features/0007-Region-profiler.patch | 12 +- .../features/0001-Region-Threading-Base.patch | 14 +- gradle.properties | 2 +- 4 files changed, 81 insertions(+), 81 deletions(-) diff --git a/folia-server/minecraft-patches/features/0001-Region-Threading-Base.patch b/folia-server/minecraft-patches/features/0001-Region-Threading-Base.patch index 57325ab..ee0462e 100644 --- a/folia-server/minecraft-patches/features/0001-Region-Threading-Base.patch +++ b/folia-server/minecraft-patches/features/0001-Region-Threading-Base.patch @@ -11080,7 +11080,7 @@ index 794770985c261fd56806188237921b5ec5e548e6..b715d1fbde9db81a2515249bb9a0fc7a list.add(player); } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d43a0389d 100644 +index e6733c43d582c1c632ad0e6abc99e88e337c8911..8026f9305faa85434b18366b30d64038290ec7e8 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -179,42 +179,40 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -11654,7 +11654,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // Paper end - log detailed entity tick information entity.setOldPosAndRot(); ProfilerFiller profilerFiller = Profiler.get(); -@@ -1267,7 +1314,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1268,7 +1315,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe final boolean isActive = io.papermc.paper.entity.activation.ActivationRange.checkIfActive(entity); // Paper - EAR 2 if (isActive) { // Paper - EAR 2 entity.tick(); @@ -11672,7 +11672,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } else {entity.inactiveTick();} // Paper - EAR 2 profilerFiller.pop(); -@@ -1276,9 +1332,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1277,9 +1333,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } // Paper start - log detailed entity tick information } finally { @@ -11683,7 +11683,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } // Paper end - log detailed entity tick information } -@@ -1286,7 +1340,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1287,7 +1341,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe private void tickPassenger(Entity ridingEntity, Entity passengerEntity, final boolean isActive) { // Paper - EAR 2 if (passengerEntity.isRemoved() || passengerEntity.getVehicle() != ridingEntity) { passengerEntity.stopRiding(); @@ -11691,8 +11691,8 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d + } else if (passengerEntity instanceof Player || this.getCurrentWorldData().hasEntityTickingEntity(passengerEntity)) { // Folia - region threading passengerEntity.setOldPosAndRot(); passengerEntity.tickCount++; - ProfilerFiller profilerFiller = Profiler.get(); -@@ -1295,7 +1349,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + passengerEntity.totalEntityAge++; // Paper - age-like counter for all entities +@@ -1297,7 +1351,16 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper start - EAR 2 if (isActive) { passengerEntity.rideTick(); @@ -11710,7 +11710,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } else { passengerEntity.setDeltaMovement(Vec3.ZERO); passengerEntity.inactiveTick(); -@@ -1369,19 +1432,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1371,19 +1434,20 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } // Paper end - add close param @@ -11739,7 +11739,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d DimensionDataStorage dataStorage = this.getChunkSource().getDataStorage(); if (join) { -@@ -1437,6 +1501,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1439,6 +1503,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe return list; } @@ -11759,7 +11759,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d @Nullable public ServerPlayer getRandomPlayer() { List players = this.getPlayers(LivingEntity::isAlive); -@@ -1518,8 +1595,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1520,8 +1597,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } else { if (entity instanceof net.minecraft.world.entity.item.ItemEntity itemEntity && itemEntity.getItem().isEmpty()) return false; // Paper - Prevent empty items from being added // Paper start - capture all item additions to the world @@ -11770,7 +11770,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d return true; } // Paper end - capture all item additions to the world -@@ -1694,13 +1771,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1696,13 +1773,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void sendBlockUpdated(BlockPos pos, BlockState oldState, BlockState newState, int flags) { @@ -11787,7 +11787,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d if (this.paperConfig().misc.updatePathfindingOnBlockUpdate) { // Paper - option to disable pathfinding updates VoxelShape collisionShape = oldState.getCollisionShape(this, pos); VoxelShape collisionShape1 = newState.getCollisionShape(this, pos); -@@ -1708,7 +1786,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1710,7 +1788,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe List list = new ObjectArrayList<>(); try { // Paper - catch CME see below why @@ -11797,7 +11797,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d PathNavigation navigation = mob.getNavigation(); if (navigation.shouldRecomputePath(pos)) { list.add(navigation); -@@ -1725,13 +1804,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1727,13 +1806,13 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper end - catch CME see below why try { @@ -11813,7 +11813,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } } } // Paper - option to disable pathfinding updates -@@ -1739,29 +1818,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1741,29 +1820,29 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void updateNeighborsAt(BlockPos pos, Block block) { @@ -11849,7 +11849,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } @Override -@@ -1851,7 +1930,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1853,7 +1932,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // CraftBukkit end ParticleOptions particleOptions = serverExplosion.isSmall() ? smallExplosionParticles : largeExplosionParticles; @@ -11858,7 +11858,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d if (serverPlayer.distanceToSqr(vec3) < 4096.0) { Optional optional = Optional.ofNullable(serverExplosion.getHitPlayers().get(serverPlayer)); serverPlayer.connection.send(new ClientboundExplodePacket(vec3, optional, particleOptions, explosionSound)); -@@ -1867,14 +1946,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1869,14 +1948,17 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void blockEvent(BlockPos pos, Block block, int eventID, int eventParam) { @@ -11880,7 +11880,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d if (this.shouldTickBlocksAt(blockEventData.pos())) { if (this.doBlockEvent(blockEventData)) { this.server -@@ -1890,11 +1972,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1892,11 +1974,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe ); } } else { @@ -11894,7 +11894,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } private boolean doBlockEvent(BlockEventData event) { -@@ -1904,12 +1986,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1906,12 +1988,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public LevelTicks getBlockTicks() { @@ -11909,7 +11909,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } @Nonnull -@@ -1962,7 +2044,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1964,7 +2046,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe double zOffset, double speed ) { @@ -11918,7 +11918,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } public int sendParticlesSource( List receivers, -@@ -2045,12 +2127,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2047,12 +2129,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Nullable public Entity getEntityOrPart(int id) { Entity entity = this.getEntities().get(id); @@ -11933,7 +11933,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } @Nullable -@@ -2105,6 +2187,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2107,6 +2189,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper start - Call missing map initialize event and set id final DimensionDataStorage storage = this.getServer().overworld().getDataStorage(); @@ -11941,7 +11941,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d final Optional cacheEntry = storage.cache.get(mapId.key()); if (cacheEntry == null) { // Cache did not contain, try to load and may init final MapItemSavedData mapData = storage.get(MapItemSavedData.factory(), mapId.key()); // get populates the cache -@@ -2124,6 +2207,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2126,6 +2209,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } return null; @@ -11949,7 +11949,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // Paper end - Call missing map initialize event and set id } -@@ -2178,6 +2262,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2180,6 +2264,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } public boolean setChunkForced(int chunkX, int chunkZ, boolean add) { @@ -11957,7 +11957,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d ForcedChunksSavedData forcedChunksSavedData = this.getDataStorage().computeIfAbsent(ForcedChunksSavedData.factory(), "chunks"); ChunkPos chunkPos = new ChunkPos(chunkX, chunkZ); long packedChunkPos = chunkPos.toLong(); -@@ -2185,7 +2270,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2187,7 +2272,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (add) { flag = forcedChunksSavedData.getChunks().add(packedChunkPos); if (flag) { @@ -11966,7 +11966,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } } else { flag = forcedChunksSavedData.getChunks().remove(packedChunkPos); -@@ -2210,11 +2295,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2212,11 +2297,24 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe Optional> optional1 = PoiTypes.forState(newState); if (!Objects.equals(optional, optional1)) { BlockPos blockPos = pos.immutable(); @@ -11994,7 +11994,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // Paper start - Remove stale POIs if (optional.isEmpty() && this.getPoiManager().exists(blockPos, ignored -> true)) { this.getPoiManager().remove(blockPos); -@@ -2222,7 +2320,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2224,7 +2322,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper end - Remove stale POIs this.getPoiManager().add(blockPos, (Holder)poiType); DebugPackets.sendPoiAddedPacket(this, blockPos); @@ -12011,7 +12011,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } } -@@ -2276,7 +2382,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2278,7 +2384,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } bufferedWriter.write(String.format(Locale.ROOT, "entities: %s\n", this.moonrise$getEntityLookup().getDebugInfo())); // Paper - rewrite chunk system @@ -12020,7 +12020,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d bufferedWriter.write(String.format(Locale.ROOT, "block_ticks: %d\n", this.getBlockTicks().count())); bufferedWriter.write(String.format(Locale.ROOT, "fluid_ticks: %d\n", this.getFluidTicks().count())); bufferedWriter.write("distance_manager: " + chunkMap.getDistanceManager().getDebugStatus() + "\n"); -@@ -2346,7 +2452,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2348,7 +2454,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe private void dumpBlockEntityTickers(Writer output) throws IOException { CsvOutput csvOutput = CsvOutput.builder().addColumn("x").addColumn("y").addColumn("z").addColumn("type").build(output); @@ -12029,7 +12029,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d BlockPos pos = tickingBlockEntity.getPos(); csvOutput.writeRow(pos.getX(), pos.getY(), pos.getZ(), tickingBlockEntity.getType()); } -@@ -2354,14 +2460,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2356,14 +2462,14 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @VisibleForTesting public void clearBlockEvents(BoundingBox boundingBox) { @@ -12046,7 +12046,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d return; } // CraftBukkit end -@@ -2410,8 +2516,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2412,8 +2518,8 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe this.players.size(), this.moonrise$getEntityLookup().getDebugInfo(), // Paper - rewrite chunk system getTypeCount(this.moonrise$getEntityLookup().getAll(), entity -> BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString()), // Paper - rewrite chunk system @@ -12057,7 +12057,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d this.getBlockTicks().count(), this.getFluidTicks().count(), this.gatherChunkSourceStats() -@@ -2463,15 +2569,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2465,15 +2571,15 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe } public void startTickingChunk(LevelChunk chunk) { @@ -12076,7 +12076,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } @Override -@@ -2489,7 +2595,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2491,7 +2597,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe return this.moonrise$getAnyChunkIfLoaded(ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkX(chunkPos), ca.spottedleaf.moonrise.common.util.CoordinateUtils.getChunkZ(chunkPos)) != null; // Paper - rewrite chunk system } @@ -12085,7 +12085,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // Paper start - rewrite chunk system final ca.spottedleaf.moonrise.patches.chunk_system.scheduling.NewChunkHolder chunkHolder = this.moonrise$getChunkTaskScheduler().chunkHolderManager.getChunkHolder(chunkPos); // isTicking implies the chunk is loaded, and the chunk is loaded now implies the entities are loaded -@@ -2581,7 +2687,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2583,7 +2689,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Paper start - optimize redstone (Alternate Current) @Override public alternate.current.wire.WireHandler getWireHandler() { @@ -12094,7 +12094,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } // Paper end - optimize redstone (Alternate Current) -@@ -2592,18 +2698,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2594,18 +2700,18 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void onDestroyed(Entity entity) { @@ -12116,7 +12116,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // Paper start - Reset pearls when they stop being ticked if (ServerLevel.this.paperConfig().fixes.disableUnloadedChunkEnderpearlExploit && ServerLevel.this.paperConfig().misc.legacyEnderPearlBehavior && entity instanceof net.minecraft.world.entity.projectile.ThrownEnderpearl pearl) { pearl.cachedOwner = null; -@@ -2615,6 +2721,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2617,6 +2723,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void onTrackingStart(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity register"); // Spigot @@ -12124,7 +12124,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d // ServerLevel.this.getChunkSource().addEntity(entity); // Paper - ignore and warn about illegal addEntity calls instead of crashing server; moved down below valid=true if (entity instanceof ServerPlayer serverPlayer) { ServerLevel.this.players.add(serverPlayer); -@@ -2629,12 +2736,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2631,12 +2738,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe ); } @@ -12139,7 +12139,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } } -@@ -2657,18 +2764,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2659,18 +2766,27 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @Override public void onTrackingEnd(Entity entity) { org.spigotmc.AsyncCatcher.catchOp("entity unregister"); // Spigot @@ -12168,7 +12168,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d } } } -@@ -2699,18 +2815,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2701,18 +2817,19 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe ); } @@ -12190,7 +12190,7 @@ index 67de67cf1e33672fe33fbb88aeb92e3a020a4ae5..ce310e2dc1bb46e17143bffc5e6cec7d if (!(entity instanceof ServerPlayer)) { for (ServerPlayer player : ServerLevel.this.server.getPlayerList().players) { // Paper - call onEntityRemove for all online players player.getBukkitEntity().onEntityRemove(entity); -@@ -2738,11 +2855,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -2740,11 +2857,11 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe private long lagCompensationTick = MinecraftServer.SERVER_INIT; public long getLagCompensationTick() { @@ -14224,7 +14224,7 @@ index a3c7d68469075bf8d33f2016149a181b0fb87e0e..73c581d3ee21d8fa96eae3e47afd6ce2 return blockToFallLocation(blockState); } else { diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3afbd7c569d 100644 +index 1b54cf07616a10d93e9336dbd299ba5f09678a28..1e59c21d26baf50fd74bc99c04dbea0faede446a 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -145,7 +145,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -14254,7 +14254,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af private EntityDimensions dimensions; private float eyeHeight; public boolean isInPowderSnow; -@@ -521,6 +521,23 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -522,6 +522,23 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } // Paper end - optimise entity tracker @@ -14278,7 +14278,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af public Entity(EntityType entityType, Level level) { this.type = entityType; -@@ -651,8 +668,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -652,8 +669,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess // due to interactions on the client. public void resendPossiblyDesyncedEntityData(net.minecraft.server.level.ServerPlayer player) { if (player.getBukkitEntity().canSee(this.getBukkitEntity())) { @@ -14288,7 +14288,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (tracker == null) { return; } -@@ -819,7 +835,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -820,7 +836,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public void postTick() { // No clean way to break out of ticking once the entity has been copied to a new world, so instead we move the portalling later in the tick cycle if (!(this instanceof ServerPlayer) && this.isAlive()) { // Paper - don't attempt to teleport dead entities @@ -14297,7 +14297,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } } // CraftBukkit end -@@ -837,7 +853,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -838,7 +854,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.boardingCooldown--; } @@ -14306,7 +14306,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (this.canSpawnSprintParticle()) { this.spawnSprintParticle(); } -@@ -1100,8 +1116,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1101,8 +1117,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } else { this.wasOnFire = this.isOnFire(); if (type == MoverType.PISTON) { @@ -14317,7 +14317,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af movement = this.limitPistonMovement(movement); if (movement.equals(Vec3.ZERO)) { return; -@@ -1400,7 +1416,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -1401,7 +1417,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess if (pos.lengthSqr() <= 1.0E-7) { return pos; } else { @@ -14326,7 +14326,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (gameTime != this.pistonDeltasGameTime) { Arrays.fill(this.pistonDeltas, 0.0); this.pistonDeltasGameTime = gameTime; -@@ -3034,6 +3050,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3035,6 +3051,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } if (force || this.canRide(vehicle) && vehicle.canAddPassenger(this)) { @@ -14334,7 +14334,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af // CraftBukkit start if (vehicle.getBukkitEntity() instanceof org.bukkit.entity.Vehicle && this.getBukkitEntity() instanceof org.bukkit.entity.LivingEntity) { org.bukkit.event.vehicle.VehicleEnterEvent event = new org.bukkit.event.vehicle.VehicleEnterEvent((org.bukkit.entity.Vehicle) vehicle.getBukkitEntity(), this.getBukkitEntity()); -@@ -3055,6 +3072,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3056,6 +3073,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -14342,7 +14342,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (this.isPassenger()) { this.stopRiding(); } -@@ -3122,7 +3140,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3123,7 +3141,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -14351,7 +14351,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } } -@@ -3136,6 +3154,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3137,6 +3155,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess throw new IllegalStateException("Use x.stopRiding(y), not y.removePassenger(x)"); } else { // CraftBukkit start @@ -14359,7 +14359,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af org.bukkit.craftbukkit.entity.CraftEntity craft = (org.bukkit.craftbukkit.entity.CraftEntity) passenger.getBukkitEntity().getVehicle(); Entity orig = craft == null ? null : craft.getHandle(); if (this.getBukkitEntity() instanceof org.bukkit.entity.Vehicle && passenger.getBukkitEntity() instanceof org.bukkit.entity.LivingEntity) { -@@ -3163,6 +3182,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3164,6 +3183,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -14367,7 +14367,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -3170,7 +3190,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3171,7 +3191,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } passenger.boardingCooldown = 60; @@ -14376,7 +14376,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } return true; // CraftBukkit } -@@ -3254,7 +3274,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3255,7 +3275,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -14385,7 +14385,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (this.level() instanceof ServerLevel serverLevel) { this.processPortalCooldown(); if (this.portalProcess != null) { -@@ -3262,21 +3282,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3263,21 +3283,20 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess ProfilerFiller profilerFiller = Profiler.get(); profilerFiller.push("portal"); this.setPortalCooldown(); @@ -14415,7 +14415,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } public int getDimensionChangingDelay() { -@@ -3416,6 +3435,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3417,6 +3436,11 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @Nullable public PlayerTeam getTeam() { @@ -14427,7 +14427,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (!this.level().paperConfig().scoreboards.allowNonPlayerEntitiesOnScoreboards && !(this instanceof Player)) { return null; } // Paper - Perf: Disable Scoreboards for non players by default return this.level().getScoreboard().getPlayersTeam(this.getScoreboardName()); } -@@ -3722,8 +3746,793 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3723,8 +3747,793 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.portalProcess = entity.portalProcess; } @@ -15221,7 +15221,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af // Paper start - Fix item duplication and teleport issues if ((!this.isAlive() || !this.valid) && (teleportTransition.newLevel() != this.level)) { LOGGER.warn("Illegal Entity Teleport " + this + " to " + teleportTransition.newLevel() + ":" + teleportTransition.position(), new Throwable()); -@@ -3907,6 +4716,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3908,6 +4717,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } @@ -15234,7 +15234,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af protected void removeAfterChangingDimensions() { this.setRemoved(Entity.RemovalReason.CHANGED_DIMENSION, null); // CraftBukkit - add Bukkit remove cause if (this instanceof Leashable leashable && leashable.isLeashed()) { // Paper - only call if it is leashed -@@ -4242,6 +5057,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4243,6 +5058,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } public void startSeenByPlayer(ServerPlayer serverPlayer) { @@ -15247,7 +15247,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } public void stopSeenByPlayer(ServerPlayer serverPlayer) { -@@ -4251,6 +5072,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4252,6 +5073,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess new io.papermc.paper.event.player.PlayerUntrackEntityEvent(serverPlayer.getBukkitEntity(), this.getBukkitEntity()).callEvent(); } // Paper end - entity tracking events @@ -15260,7 +15260,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af } public float rotate(Rotation transformRotation) { -@@ -4786,7 +5613,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4787,7 +5614,8 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } } // Paper end - Fix MC-4 @@ -15270,7 +15270,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af synchronized (this.posLock) { // Paper - detailed watchdog information this.position = new Vec3(x, y, z); } // Paper - detailed watchdog information -@@ -4805,7 +5633,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4806,7 +5634,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess } // Paper start - Block invalid positions and bounding box; don't allow desync of pos and AABB // hanging has its own special logic @@ -15279,7 +15279,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af this.setBoundingBox(this.makeBoundingBox()); } // Paper end - Block invalid positions and bounding box -@@ -4889,6 +5717,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4890,6 +5718,12 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return this.removalReason != null; } @@ -15292,7 +15292,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af @Nullable public Entity.RemovalReason getRemovalReason() { return this.removalReason; -@@ -4911,6 +5745,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4912,6 +5746,9 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess org.bukkit.craftbukkit.event.CraftEventFactory.callEntityRemoveEvent(this, cause); // CraftBukkit end final boolean alreadyRemoved = this.removalReason != null; // Paper - Folia schedulers @@ -15302,7 +15302,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af if (this.removalReason == null) { this.removalReason = removalReason; } -@@ -4934,6 +5771,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -4935,6 +5772,10 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.removalReason = null; } @@ -15314,7 +15314,7 @@ index 216482b4bb705520411bdeaa58f6044d05190eb6..7e7d232723362e94452ea0768c23d3af /** * Invoked only when the entity is truly removed from the server, never to be added to any world. diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index dd07daf3eb4a21a0893229d51ddd52de892e3e4c..b9aecea2e3f05500991254c931fda3b06bebdcea 100644 +index d87e31572aa85bffc62dc017520dd408560f79b4..3e31fc5fcc15a139bc8d3eb91e89b0f4e28d7eea 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -278,7 +278,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -15438,7 +15438,7 @@ index dd07daf3eb4a21a0893229d51ddd52de892e3e4c..b9aecea2e3f05500991254c931fda3b0 } @Override -@@ -3479,7 +3503,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3497,7 +3521,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -15447,7 +15447,7 @@ index dd07daf3eb4a21a0893229d51ddd52de892e3e4c..b9aecea2e3f05500991254c931fda3b0 if (this.xo != this.getX() || this.yo != this.getY() || this.zo != this.getZ() || this.yRotO != this.getYRot() || this.xRotO != this.getXRot()) { Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); -@@ -4152,7 +4176,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4170,7 +4194,7 @@ public abstract class LivingEntity extends Entity implements Attackable { boolean flag = false; BlockPos blockPos = BlockPos.containing(x, y, z); Level level = this.level(); @@ -15456,7 +15456,7 @@ index dd07daf3eb4a21a0893229d51ddd52de892e3e4c..b9aecea2e3f05500991254c931fda3b0 boolean flag1 = false; while (!flag1 && blockPos.getY() > level.getMinY()) { -@@ -4314,6 +4338,11 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4332,6 +4356,11 @@ public abstract class LivingEntity extends Entity implements Attackable { this.setXRot(0.0F); } }); diff --git a/folia-server/minecraft-patches/features/0007-Region-profiler.patch b/folia-server/minecraft-patches/features/0007-Region-profiler.patch index 5b8d0d7..fef10a3 100644 --- a/folia-server/minecraft-patches/features/0007-Region-profiler.patch +++ b/folia-server/minecraft-patches/features/0007-Region-profiler.patch @@ -1705,7 +1705,7 @@ index 548f5f0382c81ca86d238bfd7f94008bbd6e41bc..ac06b8a4813716a8d136be5731cbd961 } diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index ce310e2dc1bb46e17143bffc5e6cec7d43a0389d..d34ad333b6ea3855a24a58fcd80ccf19b2bbf41c 100644 +index 8026f9305faa85434b18366b30d64038290ec7e8..9cbd692680c66331ae8e1544ee8d2a7317262d01 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -729,6 +729,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -1795,7 +1795,7 @@ index ce310e2dc1bb46e17143bffc5e6cec7d43a0389d..d34ad333b6ea3855a24a58fcd80ccf19 } } -@@ -1312,6 +1334,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1313,6 +1335,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe profilerFiller.push(() -> BuiltInRegistries.ENTITY_TYPE.getKey(entity.getType()).toString()); profilerFiller.incrementCounter("tickNonPassenger"); final boolean isActive = io.papermc.paper.entity.activation.ActivationRange.checkIfActive(entity); // Paper - EAR 2 @@ -1808,7 +1808,7 @@ index ce310e2dc1bb46e17143bffc5e6cec7d43a0389d..d34ad333b6ea3855a24a58fcd80ccf19 if (isActive) { // Paper - EAR 2 entity.tick(); // Folia start - region threading -@@ -1326,6 +1354,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1327,6 +1355,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe // Folia end - region threading } else {entity.inactiveTick();} // Paper - EAR 2 profilerFiller.pop(); @@ -1816,7 +1816,7 @@ index ce310e2dc1bb46e17143bffc5e6cec7d43a0389d..d34ad333b6ea3855a24a58fcd80ccf19 for (Entity entity1 : entity.getPassengers()) { this.tickPassenger(entity, entity1, isActive); // Paper - EAR 2 -@@ -1341,6 +1370,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe +@@ -1342,6 +1371,12 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe if (passengerEntity.isRemoved() || passengerEntity.getVehicle() != ridingEntity) { passengerEntity.stopRiding(); } else if (passengerEntity instanceof Player || this.getCurrentWorldData().hasEntityTickingEntity(passengerEntity)) { // Folia - region threading @@ -1828,8 +1828,8 @@ index ce310e2dc1bb46e17143bffc5e6cec7d43a0389d..d34ad333b6ea3855a24a58fcd80ccf19 + // Folia end - profiler passengerEntity.setOldPosAndRot(); passengerEntity.tickCount++; - ProfilerFiller profilerFiller = Profiler.get(); -@@ -1371,6 +1406,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe + passengerEntity.totalEntityAge++; // Paper - age-like counter for all entities +@@ -1373,6 +1408,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe for (Entity entity : passengerEntity.getPassengers()) { this.tickPassenger(passengerEntity, entity, isActive); // Paper - EAR 2 } diff --git a/folia-server/paper-patches/features/0001-Region-Threading-Base.patch b/folia-server/paper-patches/features/0001-Region-Threading-Base.patch index c49d5ff..c2de964 100644 --- a/folia-server/paper-patches/features/0001-Region-Threading-Base.patch +++ b/folia-server/paper-patches/features/0001-Region-Threading-Base.patch @@ -2634,7 +2634,7 @@ index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..399ef60ab5f1bf02b638c8c46a72d297 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537c87b3ea6 100644 +index 1ee0ad266955e36b729ba31eb75aad9289acd8e4..895695015d21b4ae0ab87ef68d6b3da30f4616c1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -83,6 +83,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -2661,7 +2661,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 // Paper end Preconditions.checkArgument(location != null, "location cannot be null"); location.checkFinite(); -@@ -529,6 +539,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -530,6 +540,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } public Entity getHandle() { @@ -2669,7 +2669,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 return this.entity; } -@@ -722,7 +733,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -723,7 +734,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { ImmutableSet.Builder players = ImmutableSet.builder(); ServerLevel world = ((CraftWorld) this.getWorld()).getHandle(); @@ -2678,7 +2678,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 if (entityTracker != null) { for (ServerPlayerConnection connection : entityTracker.seenBy) { -@@ -1026,7 +1037,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1027,7 +1038,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } ServerLevel world = ((CraftWorld) this.getWorld()).getHandle(); @@ -2687,7 +2687,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 if (entityTracker == null) { return; -@@ -1045,7 +1056,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1046,7 +1057,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } ServerLevel world = ((CraftWorld) this.getWorld()).getHandle(); @@ -2696,7 +2696,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 if (entityTracker == null) { return; -@@ -1079,29 +1090,43 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1080,29 +1091,43 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { location.checkFinite(); Location locationClone = location.clone(); // clone so we don't need to worry about mutations after this call. @@ -2760,7 +2760,7 @@ index f8762064e0f377740688932c62145f7c789ea7ed..6919fbc5c432d510d965bb3fb2ea7537 } // Paper end - more teleport API / async chunk API -@@ -1214,8 +1239,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1215,8 +1240,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { // Paper start - tracked players API @Override public Set getTrackedPlayers() { diff --git a/gradle.properties b/gradle.properties index 2e9f554..bd00d90 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group=dev.folia version=1.21.4-R0.1-SNAPSHOT mcVersion=1.21.4 -paperRef=b9023b5dc3dbc2f9d19898f73e503bddde364bcf +paperRef=28d07dc5ab5e96c1a471bc37b613d158c5c7f197 org.gradle.configuration-cache=true org.gradle.caching=true