mirror of
https://github.com/PaperMC/Paper.git
synced 2025-08-18 13:53:49 -07:00
Fix keep spawn loaded patch
Needs to be in blocks
This commit is contained in:
@@ -363,7 +363,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ worldData.addProperty("name", world.getWorld().getName());
|
+ worldData.addProperty("name", world.getWorld().getName());
|
||||||
+ worldData.addProperty("view-distance", world.spigotConfig.viewDistance);
|
+ worldData.addProperty("view-distance", world.spigotConfig.viewDistance);
|
||||||
+ worldData.addProperty("keep-spawn-loaded", world.keepSpawnInMemory);
|
+ worldData.addProperty("keep-spawn-loaded", world.keepSpawnInMemory);
|
||||||
+ worldData.addProperty("keep-spawn-loaded-range", world.paperConfig().spawn.keepSpawnLoadedRange);
|
+ worldData.addProperty("keep-spawn-loaded-range", world.paperConfig().spawn.keepSpawnLoadedRange * 16);
|
||||||
+ worldData.addProperty("visible-chunk-count", visibleChunks.size());
|
+ worldData.addProperty("visible-chunk-count", visibleChunks.size());
|
||||||
+ worldData.addProperty("loaded-chunk-count", chunkMap.entitiesInLevel.size());
|
+ worldData.addProperty("loaded-chunk-count", chunkMap.entitiesInLevel.size());
|
||||||
+ worldData.addProperty("verified-fully-loaded-chunks", fullLoadedChunks);
|
+ worldData.addProperty("verified-fully-loaded-chunks", fullLoadedChunks);
|
||||||
|
@@ -38,7 +38,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- }
|
- }
|
||||||
- }
|
- }
|
||||||
+ // Paper start - configurable spawn reason
|
+ // Paper start - configurable spawn reason
|
||||||
+ int radiusBlocks = worldserver.paperConfig().spawn.keepSpawnLoadedRange;
|
+ int radiusBlocks = worldserver.paperConfig().spawn.keepSpawnLoadedRange * 16;
|
||||||
+ int radiusChunks = radiusBlocks / 16 + ((radiusBlocks & 15) != 0 ? 1 : 0);
|
+ int radiusChunks = radiusBlocks / 16 + ((radiusBlocks & 15) != 0 ? 1 : 0);
|
||||||
+ int totalChunks = ((radiusChunks) * 2 + 1);
|
+ int totalChunks = ((radiusChunks) * 2 + 1);
|
||||||
+ totalChunks *= totalChunks;
|
+ totalChunks *= totalChunks;
|
||||||
@@ -157,8 +157,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
- this.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(pos), 11, Unit.INSTANCE);
|
- this.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(pos), 11, Unit.INSTANCE);
|
||||||
+ if (this.keepSpawnInMemory) {
|
+ if (this.keepSpawnInMemory) {
|
||||||
+ // if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
|
+ // if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
|
||||||
+ this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange, prevSpawn);
|
+ this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, prevSpawn);
|
||||||
+ this.addTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange, pos);
|
+ this.addTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, pos);
|
||||||
+ }
|
+ }
|
||||||
this.getServer().getPlayerList().broadcastAll(new ClientboundSetDefaultSpawnPositionPacket(pos, angle));
|
this.getServer().getPlayerList().broadcastAll(new ClientboundSetDefaultSpawnPositionPacket(pos, angle));
|
||||||
}
|
}
|
||||||
@@ -218,12 +218,12 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
BlockPos chunkcoordinates = this.world.getSharedSpawnPos();
|
BlockPos chunkcoordinates = this.world.getSharedSpawnPos();
|
||||||
if (keepLoaded) {
|
if (keepLoaded) {
|
||||||
- this.world.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
|
- this.world.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
|
||||||
+ this.world.addTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange, chunkcoordinates);
|
+ this.world.addTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange * 16, chunkcoordinates);
|
||||||
} else {
|
} else {
|
||||||
- // TODO: doesn't work well if spawn changed....
|
- // TODO: doesn't work well if spawn changed....
|
||||||
- this.world.getChunkSource().removeRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
|
- this.world.getChunkSource().removeRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
|
||||||
+ // TODO: doesn't work well if spawn changed.... // Paper - resolved
|
+ // TODO: doesn't work well if spawn changed.... // Paper - resolved
|
||||||
+ this.world.removeTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange, chunkcoordinates);
|
+ this.world.removeTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange * 16, chunkcoordinates);
|
||||||
}
|
}
|
||||||
+ // Paper end
|
+ // Paper end
|
||||||
}
|
}
|
||||||
|
@@ -15,7 +15,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ new org.bukkit.event.world.SpawnChangeEvent(getWorld(), MCUtil.toLocation(this, prevSpawn)).callEvent(); // Paper
|
+ new org.bukkit.event.world.SpawnChangeEvent(getWorld(), MCUtil.toLocation(this, prevSpawn)).callEvent(); // Paper
|
||||||
if (this.keepSpawnInMemory) {
|
if (this.keepSpawnInMemory) {
|
||||||
// if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
|
// if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
|
||||||
this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange, prevSpawn);
|
this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, prevSpawn);
|
||||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||||
|
@@ -1283,7 +1283,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
|
|||||||
+ worldData.addProperty("view-distance", world.getChunkSource().chunkMap.playerChunkManager.getTargetNoTickViewDistance()); // Paper - replace chunk loader system
|
+ worldData.addProperty("view-distance", world.getChunkSource().chunkMap.playerChunkManager.getTargetNoTickViewDistance()); // Paper - replace chunk loader system
|
||||||
+ worldData.addProperty("tick-view-distance", world.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance()); // Paper - replace chunk loader system
|
+ worldData.addProperty("tick-view-distance", world.getChunkSource().chunkMap.playerChunkManager.getTargetTickViewDistance()); // Paper - replace chunk loader system
|
||||||
worldData.addProperty("keep-spawn-loaded", world.keepSpawnInMemory);
|
worldData.addProperty("keep-spawn-loaded", world.keepSpawnInMemory);
|
||||||
worldData.addProperty("keep-spawn-loaded-range", world.paperConfig().spawn.keepSpawnLoadedRange);
|
worldData.addProperty("keep-spawn-loaded-range", world.paperConfig().spawn.keepSpawnLoadedRange * 16);
|
||||||
worldData.addProperty("visible-chunk-count", visibleChunks.size());
|
worldData.addProperty("visible-chunk-count", visibleChunks.size());
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkHolder.java b/src/main/java/net/minecraft/server/level/ChunkHolder.java
|
||||||
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644
|
||||||
|
Reference in New Issue
Block a user