Updated Upstream (Paper)

Upstream has released updates that appear to apply and compile correctly

Paper Changes:
PaperMC/Paper@046466f Re-arrange most chunk system patches to front (#8338)
PaperMC/Paper@e8c2c3b Fix World#refreshChunk not working for chunks in no-tick range
This commit is contained in:
BillyGalbreath
2022-09-01 21:51:05 -05:00
parent be681220d6
commit ff8e329e9d
29 changed files with 160 additions and 161 deletions

View File

@@ -286,10 +286,10 @@ index 5de95ba778e4a0cd1467e7392aa80eda1bd21a03..0bfdc4247a651f6c1caf7a95114be68b
@Override
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812dabb52a90 100644
index cec58f0d7ac6bf73a0f7b418a595704b8b807425..56ec684bac1c29c99bac117e38d82db2b4dc20e8 100644
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
@@ -1002,15 +1002,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1000,15 +1000,15 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
protected void tick(BooleanSupplier shouldKeepTicking) {
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
@@ -309,7 +309,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
gameprofilerfiller.pop();
@@ -1169,7 +1169,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1161,7 +1161,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
private CompletableFuture<Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> scheduleChunkLoad(ChunkPos pos) {
// Paper start - Async chunk io
final java.util.function.BiFunction<ChunkSerializer.InProgressChunkHolder, Throwable, Either<ChunkAccess, ChunkHolder.ChunkLoadingFailure>> syncLoadComplete = (chunkHolder, ioThrowable) -> {
@@ -318,7 +318,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.level.getProfiler().incrementCounter("chunkLoad");
if (ioThrowable != null) {
return this.handleChunkLoadFailure(ioThrowable, pos);
@@ -1360,7 +1360,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1352,7 +1352,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
ChunkStatus chunkstatus = ChunkHolder.getStatus(chunkHolder.getTicketLevel());
return !chunkstatus.isOrAfter(ChunkStatus.FULL) ? ChunkHolder.UNLOADED_CHUNK : either.mapLeft((ichunkaccess) -> {
@@ -327,7 +327,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
ChunkPos chunkcoordintpair = chunkHolder.getPos();
ProtoChunk protochunk = (ProtoChunk) ichunkaccess;
LevelChunk chunk;
@@ -1385,7 +1385,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1377,7 +1377,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
return chunk;
@@ -336,7 +336,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
});
}, (runnable) -> {
ProcessorHandle mailbox = this.mainThreadMailbox;
@@ -1511,9 +1511,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1509,9 +1509,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
private void asyncSave(ChunkAccess chunk) {
ChunkPos chunkPos = chunk.getPos();
CompoundTag poiData;
@@ -348,7 +348,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE.scheduleSave(this.level, chunkPos.x, chunkPos.z,
poiData, null, com.destroystokyo.paper.io.PrioritizedTaskQueue.NORMAL_PRIORITY);
@@ -1533,9 +1533,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1531,9 +1531,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
ChunkSerializer.AsyncSaveData asyncSaveData;
@@ -360,7 +360,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.level.asyncChunkTaskManager.scheduleChunkSave(chunkPos.x, chunkPos.z, com.destroystokyo.paper.io.PrioritizedTaskQueue.NORMAL_PRIORITY,
asyncSaveData, chunk);
@@ -1546,7 +1546,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1544,7 +1544,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
// Paper end
public boolean save(ChunkAccess chunk) {
@@ -369,7 +369,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
this.poiManager.flush(chunk.getPos());
if (!chunk.isUnsaved()) {
return false;
@@ -1570,9 +1570,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1568,9 +1568,9 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
this.level.getProfiler().incrementCounter("chunkSave");
CompoundTag nbttagcompound;
@@ -381,7 +381,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
// Paper start - async chunk io
com.destroystokyo.paper.io.PaperFileIOThread.Holder.INSTANCE.scheduleSave(this.level, chunkcoordintpair.x, chunkcoordintpair.z,
@@ -1586,7 +1586,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -1584,7 +1584,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
return false;
}
}
@@ -390,7 +390,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
private boolean isExistingChunkFull(ChunkPos pos) {
@@ -2109,24 +2109,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2107,24 +2107,24 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
}
// Pufferfish end
@@ -419,7 +419,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
}
// Paper end - optimised tracker
@@ -2141,7 +2141,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2139,7 +2139,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
List<ServerPlayer> list = Lists.newArrayList();
List<ServerPlayer> list1 = this.level.players();
ObjectIterator objectiterator = this.entityMap.values().iterator();
@@ -428,7 +428,7 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
ChunkMap.TrackedEntity playerchunkmap_entitytracker;
@@ -2166,17 +2166,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
@@ -2164,17 +2164,17 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
playerchunkmap_entitytracker.serverEntity.sendChanges();
}
}
@@ -450,10 +450,10 @@ index 9acfb1a0b15a304401ad3e5e8dfb869b15bf787a..01a6751f096eec3e7b2f854550fd812d
}
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55289d651e 100644
index 40094f8ed5e04eed0378c68120c918af05090601..6b4c502cf549996411ac21251e22849be2ed7a23 100644
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
@@ -660,10 +660,10 @@ public class ServerChunkCache extends ChunkSource {
@@ -481,10 +481,10 @@ public class ServerChunkCache extends ChunkSource {
com.destroystokyo.paper.io.chunk.ChunkTaskManager.pushChunkWait(this.level, x1, z1);
// Paper end
com.destroystokyo.paper.io.SyncLoadFinder.logSyncLoad(this.level, x1, z1); // Paper - sync load info
@@ -466,7 +466,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
this.distanceManager.clearPriorityTickets(pair); // Paper - Chunk priority
this.distanceManager.clearUrgent(pair); // Paper - Chunk priority
} // Paper
@@ -827,7 +827,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -648,7 +648,7 @@ public class ServerChunkCache extends ChunkSource {
public boolean runDistanceManagerUpdates() {
if (distanceManager.delayDistanceManagerTick) return false; // Paper - Chunk priority
if (this.chunkMap.unloadingPlayerChunk) { LOGGER.error("Cannot tick distance manager while unloading playerchunks", new Throwable()); throw new IllegalStateException("Cannot tick distance manager while unloading playerchunks"); } // Paper
@@ -475,7 +475,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
boolean flag = this.distanceManager.runAllUpdates(this.chunkMap);
boolean flag1 = this.chunkMap.promoteChunkMap();
@@ -837,7 +837,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -658,7 +658,7 @@ public class ServerChunkCache extends ChunkSource {
this.clearCache();
return true;
}
@@ -484,7 +484,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
}
// Paper start
@@ -855,17 +855,17 @@ public class ServerChunkCache extends ChunkSource {
@@ -676,17 +676,17 @@ public class ServerChunkCache extends ChunkSource {
public void save(boolean flush) {
this.runDistanceManagerUpdates();
@@ -506,7 +506,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
}
// Paper end
@@ -900,22 +900,22 @@ public class ServerChunkCache extends ChunkSource {
@@ -721,22 +721,22 @@ public class ServerChunkCache extends ChunkSource {
@Override
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
this.level.getProfiler().push("purge");
@@ -535,7 +535,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
this.level.getProfiler().pop();
this.clearCache();
}
@@ -970,7 +970,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -791,7 +791,7 @@ public class ServerChunkCache extends ChunkSource {
boolean flag1 = level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && worlddata.getGameTime() % level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
gameprofilerfiller.push("naturalSpawnCount");
@@ -544,7 +544,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
int l = this.distanceManager.getNaturalSpawnChunkCount();
// Paper start - per player mob spawning
NaturalSpawner.SpawnState spawnercreature_d; // moved down
@@ -991,12 +991,12 @@ public class ServerChunkCache extends ChunkSource {
@@ -812,12 +812,12 @@ public class ServerChunkCache extends ChunkSource {
// Pufferfish end
}
// Paper end
@@ -559,7 +559,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
// Paper - moved down
@@ -1050,17 +1050,17 @@ public class ServerChunkCache extends ChunkSource {
@@ -871,17 +871,17 @@ public class ServerChunkCache extends ChunkSource {
}
}
// Paper end - optimise chunk tick iteration
@@ -581,7 +581,7 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
if (!this.chunkMap.needsChangeBroadcasting.isEmpty()) {
ReferenceOpenHashSet<ChunkHolder> copy = this.chunkMap.needsChangeBroadcasting.clone();
this.chunkMap.needsChangeBroadcasting.clear();
@@ -1072,7 +1072,7 @@ public class ServerChunkCache extends ChunkSource {
@@ -893,7 +893,7 @@ public class ServerChunkCache extends ChunkSource {
}
}
}
@@ -591,10 +591,10 @@ index 378cc1f9e19eb9b18037ab8af92f65897e15a405..de4b8001ff0ddb1603fcca2b6829bb55
// Paper end - use set of chunks requiring updates, rather than iterating every single one loaded
// Paper start - controlled flush for entity tracker packets
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e52642a8e 100644
index 0df97cf932f8bd315e3ae645368ae8df6c51fc25..207f07dfd0d2fd0ff5fdb3952966d069ca184123 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -652,7 +652,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -654,7 +654,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.updateSkyBrightness();
this.tickTime();
gameprofilerfiller.popPush("tickPending");
@@ -603,7 +603,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (!this.isDebug()) {
j = this.getGameTime();
gameprofilerfiller.push("blockTicks");
@@ -661,20 +661,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -663,20 +663,20 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.fluidTicks.tick(j, 65536, this::tickFluid);
gameprofilerfiller.pop();
}
@@ -631,7 +631,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
this.handlingTick = false;
gameprofilerfiller.pop();
boolean flag = true || !this.players.isEmpty() || !this.getForcedChunks().isEmpty(); // CraftBukkit - this prevents entity cleanup, other issues on servers with no players
@@ -685,7 +685,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -687,7 +687,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (flag || this.emptyTime++ < 300) {
gameprofilerfiller.push("entities");
@@ -640,7 +640,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (this.dragonFight != null) {
gameprofilerfiller.push("dragonFight");
this.dragonFight.tick();
@@ -693,7 +693,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -695,7 +695,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
org.spigotmc.ActivationRange.activateEntities(this); // Spigot
@@ -649,7 +649,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
this.entityTickList.forEach((entity) -> {
if (!entity.isRemoved()) {
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
@@ -733,8 +733,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -735,8 +735,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
});
@@ -660,7 +660,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
gameprofilerfiller.pop();
this.tickBlockEntities();
}
@@ -896,7 +896,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -898,7 +898,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Paper start - optimise random block ticking
gameprofilerfiller.popPush("randomTick");
@@ -669,7 +669,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (randomTickSpeed > 0) {
LevelChunkSection[] sections = chunk.getSections();
int minSection = io.papermc.paper.util.WorldUtil.getMinSection(this);
@@ -930,7 +930,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -932,7 +932,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
}
}
// Paper end - optimise random block ticking
@@ -678,7 +678,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
gameprofilerfiller.pop();
}
@@ -1224,8 +1224,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1226,8 +1226,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
// Spigot end
// Paper start- timings
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(entity);
@@ -689,7 +689,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Paper end - timings
entity.setOldPosAndRot();
ProfilerFiller gameprofilerfiller = this.getProfiler();
@@ -1241,7 +1241,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1243,7 +1243,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
entity.postTick(); // CraftBukkit
} else { entity.inactiveTick(); } // Paper - EAR 2
this.getProfiler().pop();
@@ -698,7 +698,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
Iterator iterator = entity.getPassengers().iterator();
while (iterator.hasNext()) {
@@ -1264,8 +1264,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1266,8 +1266,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (passenger instanceof Player || this.entityTickList.contains(passenger)) {
// Paper - EAR 2
final boolean isActive = org.spigotmc.ActivationRange.checkIfActive(passenger);
@@ -709,7 +709,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Paper end
passenger.setOldPosAndRot();
++passenger.tickCount;
@@ -1295,7 +1295,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1297,7 +1297,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.tickPassenger(passenger, entity2);
}
@@ -718,7 +718,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
}
} else {
passenger.stopRiding();
@@ -1315,14 +1315,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1317,14 +1317,14 @@ public class ServerLevel extends Level implements WorldGenLevel {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld()));
}
@@ -736,7 +736,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
// Copied from save()
// CraftBukkit start - moved from MinecraftServer.saveChunks
@@ -1334,7 +1334,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1336,7 +1336,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
this.convertable.saveDataTag(this.server.registryHolder, this.serverLevelData, this.server.getPlayerList().getSingleplayerData());
}
// CraftBukkit end
@@ -745,7 +745,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
}
// Paper end
@@ -1343,7 +1343,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1345,7 +1345,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
if (!savingDisabled) {
org.bukkit.Bukkit.getPluginManager().callEvent(new org.bukkit.event.world.WorldSaveEvent(getWorld())); // CraftBukkit
@@ -754,7 +754,7 @@ index fdc9de253ae6d20b4df71fd6e6c1bb98ec753abf..5a800731927ca20e95fbcd0e8b94999e
if (progressListener != null) {
progressListener.progressStartNoAbort(Component.translatable("menu.savingLevel"));
}
@@ -1353,10 +1353,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1355,10 +1355,10 @@ public class ServerLevel extends Level implements WorldGenLevel {
progressListener.progressStage(Component.translatable("menu.savingChunks"));
}
@@ -800,10 +800,10 @@ index 0bc14bd2252705bd08ced10db3ed8dfbdc59893d..166fd17d03d84cd3ea5917c17e6b9549
}
// CraftBukkit end
diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java
index d9153b04b242e22d6e8894bfd45c92ea6466df00..1da509127582618d6ced45e6e8a310304e9ecc16 100644
index 9ed964da70a17afbe26c513f67b2d911f2c9e7c5..138b2c1a21b9ceb60030d10e24c78e09533937a0 100644
--- a/src/main/java/net/minecraft/server/players/PlayerList.java
+++ b/src/main/java/net/minecraft/server/players/PlayerList.java
@@ -1290,7 +1290,7 @@ public abstract class PlayerList {
@@ -1287,7 +1287,7 @@ public abstract class PlayerList {
public void saveAll(int interval) {
net.minecraft.server.MCUtil.ensureMain("Save Players" , () -> { // Paper - Ensure main
@@ -812,7 +812,7 @@ index d9153b04b242e22d6e8894bfd45c92ea6466df00..1da509127582618d6ced45e6e8a31030
int numSaved = 0;
long now = MinecraftServer.currentTick;
for (int i = 0; i < this.players.size(); ++i) {
@@ -1301,7 +1301,7 @@ public abstract class PlayerList {
@@ -1298,7 +1298,7 @@ public abstract class PlayerList {
}
// Paper end
}