mirror of
https://github.com/PaperMC/Folia.git
synced 2024-11-23 12:15:17 +01:00
Adjust initial world spawn radius load
The spawn selection may actually be farther than 32 blocks, so we need a larger load radius to prevent a deadlock on startup. Additionally, re-insert thread checks for sync loads that were previously in 1.20.
This commit is contained in:
parent
5833269c4c
commit
2e7bc0721a
@ -8196,7 +8196,7 @@ index e2c24813f59c2fd075c740ac1842a38f20ed8554..fbc619a132c6ca6b1abab51ac230be29
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 696d075ca2883f3c37e35f983c4d020e5db89d16..9e5c063d1371d766c9e34dc8a6758fb760c164bd 100644
|
index 696d075ca2883f3c37e35f983c4d020e5db89d16..84f1f7956065de039837ceeaeee30259a7df4118 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -210,7 +210,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -210,7 +210,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@ -8340,10 +8340,10 @@ index 696d075ca2883f3c37e35f983c4d020e5db89d16..9e5c063d1371d766c9e34dc8a6758fb7
|
|||||||
this.addLevel(world); // Paper - Put world into worldlist before initing the world; move up
|
this.addLevel(world); // Paper - Put world into worldlist before initing the world; move up
|
||||||
- this.initWorld(world, worlddata, this.worldData, worldoptions);
|
- this.initWorld(world, worlddata, this.worldData, worldoptions);
|
||||||
+ // Folia start - region threading
|
+ // Folia start - region threading
|
||||||
+ // the spawn should be within ~32 blocks, so we force add ticket levels to ensure the first thread
|
+ // the spawn should be within ~1024 blocks, so we force add ticket levels to ensure the first thread
|
||||||
+ // to init spawn will not run into any ownership issues
|
+ // to init spawn will not run into any ownership issues
|
||||||
+ // move init to start of tickServer
|
+ // move init to start of tickServer
|
||||||
+ int loadRegionRadius = ((32) >> 4);
|
+ int loadRegionRadius = 1024 >> 4;
|
||||||
+ world.randomSpawnSelection = new ChunkPos(world.getChunkSource().randomState().sampler().findSpawnPosition());
|
+ world.randomSpawnSelection = new ChunkPos(world.getChunkSource().randomState().sampler().findSpawnPosition());
|
||||||
+ for (int currX = -loadRegionRadius; currX <= loadRegionRadius; ++currX) {
|
+ for (int currX = -loadRegionRadius; currX <= loadRegionRadius; ++currX) {
|
||||||
+ for (int currZ = -loadRegionRadius; currZ <= loadRegionRadius; ++currZ) {
|
+ for (int currZ = -loadRegionRadius; currZ <= loadRegionRadius; ++currZ) {
|
||||||
@ -10649,7 +10649,7 @@ index 2d2596f04f5addac38037a14a02c6e0622d0c485..ddfbdd7c07be201bbb29fa980b6ba832
|
|||||||
|
|
||||||
public String getDebugStatus() {
|
public String getDebugStatus() {
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e80970ab844e6 100644
|
index dcb5651d1d9b10b40430fb2f713beedf68336704..b0e41b79d357f7e1b189985b4752accc78f05bbb 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
@@ -57,16 +57,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -57,16 +57,14 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
@ -10671,7 +10671,19 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
// Paper start
|
// Paper start
|
||||||
private final ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<net.minecraft.world.level.chunk.LevelChunk> fullChunks = new ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<>();
|
private final ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<net.minecraft.world.level.chunk.LevelChunk> fullChunks = new ca.spottedleaf.concurrentutil.map.ConcurrentLong2ReferenceChainedHashTable<>();
|
||||||
long chunkFutureAwaitCounter;
|
long chunkFutureAwaitCounter;
|
||||||
@@ -126,7 +124,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -89,6 +87,11 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
|
}
|
||||||
|
|
||||||
|
private ChunkAccess syncLoad(final int chunkX, final int chunkZ, final ChunkStatus toStatus) {
|
||||||
|
+ // Folia start - region threading
|
||||||
|
+ if (ca.spottedleaf.moonrise.common.util.TickThread.isTickThread()) {
|
||||||
|
+ ca.spottedleaf.moonrise.common.util.TickThread.ensureTickThread(this.level, chunkX, chunkZ, "Cannot asynchronously load chunks");
|
||||||
|
+ }
|
||||||
|
+ // Folia end - region threading
|
||||||
|
final ca.spottedleaf.moonrise.patches.chunk_system.scheduling.ChunkTaskScheduler chunkTaskScheduler = ((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel)this.level).moonrise$getChunkTaskScheduler();
|
||||||
|
final CompletableFuture<ChunkAccess> completable = new CompletableFuture<>();
|
||||||
|
chunkTaskScheduler.scheduleChunkLoad(
|
||||||
|
@@ -126,7 +129,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
return load ? this.syncLoad(chunkX, chunkZ, toStatus) : null;
|
return load ? this.syncLoad(chunkX, chunkZ, toStatus) : null;
|
||||||
}
|
}
|
||||||
// Paper end - rewrite chunk system
|
// Paper end - rewrite chunk system
|
||||||
@ -10680,7 +10692,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
|
|
||||||
public ServerChunkCache(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, int simulationDistance, boolean dsync, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier<DimensionDataStorage> persistentStateManagerFactory) {
|
public ServerChunkCache(ServerLevel world, LevelStorageSource.LevelStorageAccess session, DataFixer dataFixer, StructureTemplateManager structureTemplateManager, Executor workerExecutor, ChunkGenerator chunkGenerator, int viewDistance, int simulationDistance, boolean dsync, ChunkProgressListener worldGenerationProgressListener, ChunkStatusUpdateListener chunkStatusChangeListener, Supplier<DimensionDataStorage> persistentStateManagerFactory) {
|
||||||
this.level = world;
|
this.level = world;
|
||||||
@@ -252,6 +250,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -252,6 +255,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
}
|
}
|
||||||
|
|
||||||
public CompletableFuture<ChunkResult<ChunkAccess>> getChunkFuture(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) {
|
public CompletableFuture<ChunkResult<ChunkAccess>> getChunkFuture(int chunkX, int chunkZ, ChunkStatus leastStatus, boolean create) {
|
||||||
@ -10688,7 +10700,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
boolean flag1 = Thread.currentThread() == this.mainThread;
|
boolean flag1 = Thread.currentThread() == this.mainThread;
|
||||||
CompletableFuture completablefuture;
|
CompletableFuture completablefuture;
|
||||||
|
|
||||||
@@ -419,11 +418,12 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -419,11 +423,12 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tickChunks() {
|
private void tickChunks() {
|
||||||
@ -10704,7 +10716,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
if (!this.level.isDebug()) {
|
if (!this.level.isDebug()) {
|
||||||
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
|
ProfilerFiller gameprofilerfiller = this.level.getProfiler();
|
||||||
|
|
||||||
@@ -438,13 +438,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -438,13 +443,13 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
final ServerChunkCache.ChunkAndHolder[] raw = tickingChunks.getRawDataUnchecked();
|
final ServerChunkCache.ChunkAndHolder[] raw = tickingChunks.getRawDataUnchecked();
|
||||||
final int size = tickingChunks.size();
|
final int size = tickingChunks.size();
|
||||||
|
|
||||||
@ -10722,7 +10734,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
// Paper end - chunk tick iteration optimisations
|
// Paper end - chunk tick iteration optimisations
|
||||||
@@ -462,7 +462,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -462,7 +467,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
NaturalSpawner.SpawnState spawnercreature_d; // moved down
|
NaturalSpawner.SpawnState spawnercreature_d; // moved down
|
||||||
if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
|
if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
|
||||||
// re-set mob counts
|
// re-set mob counts
|
||||||
@ -10731,7 +10743,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
// Paper start - per player mob spawning backoff
|
// Paper start - per player mob spawning backoff
|
||||||
for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) {
|
for (int ii = 0; ii < ServerPlayer.MOBCATEGORY_TOTAL_ENUMS; ii++) {
|
||||||
player.mobCounts[ii] = 0;
|
player.mobCounts[ii] = 0;
|
||||||
@@ -475,23 +475,23 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -475,23 +480,23 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
}
|
}
|
||||||
// Paper end - per player mob spawning backoff
|
// Paper end - per player mob spawning backoff
|
||||||
}
|
}
|
||||||
@ -10760,7 +10772,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
entityPlayer.playerNaturallySpawnedEvent = new com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent(entityPlayer.getBukkitEntity(), (byte) chunkRange);
|
entityPlayer.playerNaturallySpawnedEvent = new com.destroystokyo.paper.event.entity.PlayerNaturallySpawnCreaturesEvent(entityPlayer.getBukkitEntity(), (byte) chunkRange);
|
||||||
entityPlayer.playerNaturallySpawnedEvent.callEvent();
|
entityPlayer.playerNaturallySpawnedEvent.callEvent();
|
||||||
}
|
}
|
||||||
@@ -604,14 +604,19 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -604,14 +609,19 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onLightUpdate(LightLayer type, SectionPos pos) {
|
public void onLightUpdate(LightLayer type, SectionPos pos) {
|
||||||
@ -10782,7 +10794,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
}
|
}
|
||||||
|
|
||||||
public <T> void addRegionTicket(TicketType<T> ticketType, ChunkPos pos, int radius, T argument) {
|
public <T> void addRegionTicket(TicketType<T> ticketType, ChunkPos pos, int radius, T argument) {
|
||||||
@@ -689,7 +694,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -689,7 +699,8 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
@Nullable
|
@Nullable
|
||||||
@VisibleForDebug
|
@VisibleForDebug
|
||||||
public NaturalSpawner.SpawnState getLastSpawnState() {
|
public NaturalSpawner.SpawnState getLastSpawnState() {
|
||||||
@ -10792,7 +10804,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeTicketsOnClosing() {
|
public void removeTicketsOnClosing() {
|
||||||
@@ -729,8 +735,43 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -729,8 +740,43 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
return ServerChunkCache.this.mainThread;
|
return ServerChunkCache.this.mainThread;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -10836,7 +10848,7 @@ index dcb5651d1d9b10b40430fb2f713beedf68336704..e13ccac27fa4f4c23185f12c776e8097
|
|||||||
ServerChunkCache.this.level.getProfiler().incrementCounter("runTask");
|
ServerChunkCache.this.level.getProfiler().incrementCounter("runTask");
|
||||||
super.doRunTask(task);
|
super.doRunTask(task);
|
||||||
}
|
}
|
||||||
@@ -738,12 +779,17 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -738,12 +784,17 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
@Override
|
@Override
|
||||||
// CraftBukkit start - process pending Chunk loadCallback() and unloadCallback() after each run task
|
// CraftBukkit start - process pending Chunk loadCallback() and unloadCallback() after each run task
|
||||||
public boolean pollTask() {
|
public boolean pollTask() {
|
||||||
|
@ -1375,7 +1375,7 @@ index fbc619a132c6ca6b1abab51ac230be29367e9c6e..97817400b70b2579f3a8750f7f33197a
|
|||||||
if (exception instanceof ReportedException) {
|
if (exception instanceof ReportedException) {
|
||||||
ReportedException reportedexception = (ReportedException) exception;
|
ReportedException reportedexception = (ReportedException) exception;
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 9e5c063d1371d766c9e34dc8a6758fb760c164bd..511992c31d70e806bba68737048ca760bef1def0 100644
|
index 84f1f7956065de039837ceeaeee30259a7df4118..4ed79a51c89d54a7b2ab65a99b5b09cc807f4d4e 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1654,6 +1654,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1654,6 +1654,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
@ -1513,10 +1513,10 @@ index 6f746f5ce9751dce4912f7633c126788eb684bd0..74524dcd4539a31e9d0037cd607ffbfc
|
|||||||
// Paper end - optimise entity tracker
|
// Paper end - optimise entity tracker
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerChunkCache.java b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a507b6981f9 100644
|
index b0e41b79d357f7e1b189985b4752accc78f05bbb..f7311d6efc2119b9dbe062a439850a890c9bf6b8 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
--- a/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerChunkCache.java
|
||||||
@@ -392,19 +392,26 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -397,19 +397,26 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
|
public void tick(BooleanSupplier shouldKeepTicking, boolean tickChunks) {
|
||||||
@ -1543,7 +1543,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
this.level.timings.chunks.stopTiming(); // Paper - timings
|
this.level.timings.chunks.stopTiming(); // Paper - timings
|
||||||
this.chunkMap.tick();
|
this.chunkMap.tick();
|
||||||
}
|
}
|
||||||
@@ -419,6 +426,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -424,6 +431,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
|
|
||||||
private void tickChunks() {
|
private void tickChunks() {
|
||||||
io.papermc.paper.threadedregions.RegionizedWorldData regionizedWorldData = this.level.getCurrentWorldData(); // Folia - region threading
|
io.papermc.paper.threadedregions.RegionizedWorldData regionizedWorldData = this.level.getCurrentWorldData(); // Folia - region threading
|
||||||
@ -1551,7 +1551,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
long chunksTicked = 0; // Paper - rewrite chunk system
|
long chunksTicked = 0; // Paper - rewrite chunk system
|
||||||
//long i = this.level.getGameTime(); // Folia - region threading
|
//long i = this.level.getGameTime(); // Folia - region threading
|
||||||
long j = 1L; // Folia - region threading
|
long j = 1L; // Folia - region threading
|
||||||
@@ -431,6 +439,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -436,6 +444,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
gameprofilerfiller.push("filteringLoadedChunks");
|
gameprofilerfiller.push("filteringLoadedChunks");
|
||||||
// Paper start - chunk tick iteration optimisations
|
// Paper start - chunk tick iteration optimisations
|
||||||
List<ServerChunkCache.ChunkAndHolder> list;
|
List<ServerChunkCache.ChunkAndHolder> list;
|
||||||
@ -1559,7 +1559,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
{
|
{
|
||||||
final ca.spottedleaf.moonrise.common.list.ReferenceList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> tickingChunks =
|
final ca.spottedleaf.moonrise.common.list.ReferenceList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> tickingChunks =
|
||||||
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel) this.level).moonrise$getTickingChunks();
|
((ca.spottedleaf.moonrise.patches.chunk_system.level.ChunkSystemServerLevel) this.level).moonrise$getTickingChunks();
|
||||||
@@ -447,6 +456,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -452,6 +461,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
regionizedWorldData.iterationCopy, size // Folia - region threading
|
regionizedWorldData.iterationCopy, size // Folia - region threading
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -1567,7 +1567,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
// Paper end - chunk tick iteration optimisations
|
// Paper end - chunk tick iteration optimisations
|
||||||
Iterator iterator = null; // Paper - chunk tick iteration optimisations
|
Iterator iterator = null; // Paper - chunk tick iteration optimisations
|
||||||
if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
|
if (this.level.getServer().tickRateManager().runsNormally()) this.level.timings.chunkTicks.startTiming(); // Paper
|
||||||
@@ -460,6 +470,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -465,6 +475,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
// Paper start - Optional per player mob spawns
|
// Paper start - Optional per player mob spawns
|
||||||
int naturalSpawnChunkCount = k;
|
int naturalSpawnChunkCount = k;
|
||||||
NaturalSpawner.SpawnState spawnercreature_d; // moved down
|
NaturalSpawner.SpawnState spawnercreature_d; // moved down
|
||||||
@ -1575,7 +1575,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
|
if ((this.spawnFriendlies || this.spawnEnemies) && this.level.paperConfig().entities.spawning.perPlayerMobSpawns) { // don't count mobs when animals and monsters are disabled
|
||||||
// re-set mob counts
|
// re-set mob counts
|
||||||
for (ServerPlayer player : this.level.getLocalPlayers()) { // Folia - region threading
|
for (ServerPlayer player : this.level.getLocalPlayers()) { // Folia - region threading
|
||||||
@@ -479,6 +490,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -484,6 +495,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
} else {
|
} else {
|
||||||
spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
|
spawnercreature_d = NaturalSpawner.createState(naturalSpawnChunkCount, regionizedWorldData.getLoadedEntities(), this::getFullChunk, !this.level.paperConfig().entities.spawning.perPlayerMobSpawns ? new LocalMobCapCalculator(this.chunkMap) : null, false); // Folia - region threading - note: function only cares about loaded entities, doesn't need all
|
||||||
}
|
}
|
||||||
@ -1583,7 +1583,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
// Paper end - Optional per player mob spawns
|
// Paper end - Optional per player mob spawns
|
||||||
this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
|
this.level.timings.countNaturalMobs.stopTiming(); // Paper - timings
|
||||||
|
|
||||||
@@ -500,6 +512,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -505,6 +517,9 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && this.level.getLevelData().getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
|
boolean flag1 = this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) != 0L && this.level.getLevelData().getGameTime() % this.level.ticksPerSpawnCategory.getLong(org.bukkit.entity.SpawnCategory.ANIMAL) == 0L; // CraftBukkit
|
||||||
Iterator iterator1 = list.iterator();
|
Iterator iterator1 = list.iterator();
|
||||||
|
|
||||||
@ -1593,7 +1593,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
while (iterator1.hasNext()) {
|
while (iterator1.hasNext()) {
|
||||||
ServerChunkCache.ChunkAndHolder chunkproviderserver_a = (ServerChunkCache.ChunkAndHolder) iterator1.next();
|
ServerChunkCache.ChunkAndHolder chunkproviderserver_a = (ServerChunkCache.ChunkAndHolder) iterator1.next();
|
||||||
LevelChunk chunk1 = chunkproviderserver_a.chunk;
|
LevelChunk chunk1 = chunkproviderserver_a.chunk;
|
||||||
@@ -508,10 +523,12 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -513,10 +528,12 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
if (true && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair)) { // Paper - rewrite chunk system
|
if (true && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair)) { // Paper - rewrite chunk system
|
||||||
chunk1.incrementInhabitedTime(j);
|
chunk1.incrementInhabitedTime(j);
|
||||||
if (flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot
|
if (flag && (this.spawnEnemies || this.spawnFriendlies) && this.level.getWorldBorder().isWithinBounds(chunkcoordintpair) && this.chunkMap.anyPlayerCloseEnoughForSpawning(chunkcoordintpair, true)) { // Spigot
|
||||||
@ -1606,7 +1606,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
this.level.tickChunk(chunk1, l);
|
this.level.tickChunk(chunk1, l);
|
||||||
// Paper start - rewrite chunk system
|
// Paper start - rewrite chunk system
|
||||||
if ((++chunksTicked & 7L) == 0L) {
|
if ((++chunksTicked & 7L) == 0L) {
|
||||||
@@ -521,19 +538,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -526,19 +543,25 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1632,7 +1632,7 @@ index e13ccac27fa4f4c23185f12c776e80970ab844e6..135fa024d81b962761f0edc6896a2a50
|
|||||||
{
|
{
|
||||||
final it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> chunks = (it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder>)list;
|
final it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder> chunks = (it.unimi.dsi.fastutil.objects.ObjectArrayList<net.minecraft.server.level.ServerChunkCache.ChunkAndHolder>)list;
|
||||||
final ServerChunkCache.ChunkAndHolder[] raw = chunks.elements();
|
final ServerChunkCache.ChunkAndHolder[] raw = chunks.elements();
|
||||||
@@ -547,6 +570,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
@@ -552,6 +575,7 @@ public class ServerChunkCache extends ChunkSource implements ca.spottedleaf.moon
|
||||||
holder.holder().broadcastChanges(holder.chunk());
|
holder.holder().broadcastChanges(holder.chunk());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user