aboutsummaryrefslogtreecommitdiffhomepage
path: root/removed-patches-1-20-5
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-04-27 15:50:33 -0700
committerJake Potrebic <[email protected]>2024-04-27 15:50:38 -0700
commitd02bb811de6f9d7e42001137b93d6a6f88359ab6 (patch)
treea396cbb1f0ada45b98703f8125f06f17334dc080 /removed-patches-1-20-5
parentdd571d89f2202bda719a40fd15f92cc754b6ade1 (diff)
downloadPaper-d02bb811de6f9d7e42001137b93d6a6f88359ab6.tar.gz
Paper-d02bb811de6f9d7e42001137b93d6a6f88359ab6.zip
proper migration to gamerules for keep spawn loaded distance
Diffstat (limited to 'removed-patches-1-20-5')
-rw-r--r--removed-patches-1-20-5/0310-Configurable-Keep-Spawn-Loaded-range-per-world.patch220
1 files changed, 0 insertions, 220 deletions
diff --git a/removed-patches-1-20-5/0310-Configurable-Keep-Spawn-Loaded-range-per-world.patch b/removed-patches-1-20-5/0310-Configurable-Keep-Spawn-Loaded-range-per-world.patch
deleted file mode 100644
index 4d9cba2dd0..0000000000
--- a/removed-patches-1-20-5/0310-Configurable-Keep-Spawn-Loaded-range-per-world.patch
+++ /dev/null
@@ -1,220 +0,0 @@
-From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
-From: Aikar <[email protected]>
-Date: Sat, 13 Sep 2014 23:14:43 -0400
-Subject: [PATCH] Configurable Keep Spawn Loaded range per world
-
-This lets you disable it for some worlds and lower it for others.
-
-diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
-index 176378ddbf21d758694e8e624cc6c555c78e0fab..6342b7a3c4ccad528f026384da64e973e630f030 100644
---- a/src/main/java/net/minecraft/server/MinecraftServer.java
-+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
-@@ -768,30 +768,33 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
-
- // CraftBukkit start
- public void prepareLevels(ChunkProgressListener worldloadlistener, ServerLevel worldserver) {
-+ ServerChunkCache chunkproviderserver = worldserver.getChunkSource(); // Paper - Configurable Keep Spawn Loaded range per world
- // WorldServer worldserver = this.overworld();
- this.forceTicks = true;
- // CraftBukkit end
-+ if (worldserver.getWorld().getKeepSpawnInMemory()) { // Paper - Configurable Keep Spawn Loaded range per world
-
- MinecraftServer.LOGGER.info("Preparing start region for dimension {}", worldserver.dimension().location());
- BlockPos blockposition = worldserver.getSharedSpawnPos();
-
- worldloadlistener.updateSpawnPos(new ChunkPos(blockposition));
-- ServerChunkCache chunkproviderserver = worldserver.getChunkSource();
-+ //ChunkProviderServer chunkproviderserver = worldserver.getChunkProvider(); // Paper - Configurable Keep Spawn Loaded range per world; move up
-
- this.nextTickTimeNanos = Util.getNanos();
-- // CraftBukkit start
-- if (worldserver.getWorld().getKeepSpawnInMemory()) {
-- chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(blockposition), 11, Unit.INSTANCE);
-+ // Paper start - Configurable Keep Spawn Loaded range per world
-+ int radiusBlocks = worldserver.paperConfig().spawn.keepSpawnLoadedRange * 16;
-+ int radiusChunks = radiusBlocks / 16 + ((radiusBlocks & 15) != 0 ? 1 : 0);
-+ int totalChunks = ((radiusChunks) * 2 + 1);
-+ totalChunks *= totalChunks;
-+ worldloadlistener.setChunkRadius(radiusBlocks / 16);
-
-- while (chunkproviderserver.getTickingGenerated() != 441) {
-- // this.nextTickTimeNanos = SystemUtils.getNanos() + MinecraftServer.PREPARE_LEVELS_DEFAULT_DELAY_NANOS;
-- this.executeModerately();
-- }
-- }
-+ worldserver.addTicketsForSpawn(radiusBlocks, blockposition);
-+ // Paper end - Configurable Keep Spawn Loaded range per world
-
- // this.nextTickTimeNanos = SystemUtils.getNanos() + MinecraftServer.PREPARE_LEVELS_DEFAULT_DELAY_NANOS;
- this.executeModerately();
- // Iterator iterator = this.levels.values().iterator();
-+ } // Paper - Configurable Keep Spawn Loaded range per world
-
- if (true) {
- ServerLevel worldserver1 = worldserver;
-@@ -814,7 +817,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
- // this.nextTickTimeNanos = SystemUtils.getNanos() + MinecraftServer.PREPARE_LEVELS_DEFAULT_DELAY_NANOS;
- this.executeModerately();
- // CraftBukkit end
-- worldloadlistener.stop();
-+ if (worldserver.getWorld().getKeepSpawnInMemory()) worldloadlistener.stop(); // Paper - Configurable Keep Spawn Loaded range per world
- // CraftBukkit start
- // this.updateMobSpawningFlags();
- worldserver.setSpawnSettings(this.isSpawningMonsters(), this.isSpawningAnimals());
-diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
-index 57f129651778d6c20c695bf7b3a8b4d40c402a20..20de3be232ccc7ec7bbc3c6aee9acf66fd396af1 100644
---- a/src/main/java/net/minecraft/server/level/ServerLevel.java
-+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
-@@ -1640,12 +1640,84 @@ public class ServerLevel extends Level implements WorldGenLevel {
- return ((MapIndex) this.getServer().overworld().getDataStorage().computeIfAbsent(MapIndex.factory(), "idcounts")).getFreeAuxValueForMap();
- }
-
-+ // Paper start - Configurable Keep Spawn Loaded range per world
-+ public void addTicketsForSpawn(int radiusInBlocks, BlockPos spawn) {
-+ // In order to respect vanilla behavior, which is ensuring everything but the spawn border can tick, we add tickets
-+ // with level 31 for the non-border spawn chunks
-+ ServerChunkCache chunkproviderserver = this.getChunkSource();
-+ int tickRadius = radiusInBlocks - 16;
-+
-+ // add ticking chunks
-+ for (int x = -tickRadius; x <= tickRadius; x += 16) {
-+ for (int z = -tickRadius; z <= tickRadius; z += 16) {
-+ // radius of 2 will have the current chunk be level 31
-+ chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, z)), 2, Unit.INSTANCE);
-+ }
-+ }
-+
-+ // add border chunks
-+
-+ // add border along x axis (including corner chunks)
-+ for (int x = -radiusInBlocks; x <= radiusInBlocks; x += 16) {
-+ // top
-+ chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, radiusInBlocks)), 1, Unit.INSTANCE); // level 32
-+ // bottom
-+ chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, -radiusInBlocks)), 1, Unit.INSTANCE); // level 32
-+ }
-+
-+ // add border along z axis (excluding corner chunks)
-+ for (int z = -radiusInBlocks + 16; z < radiusInBlocks; z += 16) {
-+ // right
-+ chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(spawn.offset(radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32
-+ // left
-+ chunkproviderserver.addRegionTicket(TicketType.START, new ChunkPos(spawn.offset(-radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32
-+ }
-+ }
-+ public void removeTicketsForSpawn(int radiusInBlocks, BlockPos spawn) {
-+ // In order to respect vanilla behavior, which is ensuring everything but the spawn border can tick, we added tickets
-+ // with level 31 for the non-border spawn chunks
-+ ServerChunkCache chunkproviderserver = this.getChunkSource();
-+ int tickRadius = radiusInBlocks - 16;
-+
-+ // remove ticking chunks
-+ for (int x = -tickRadius; x <= tickRadius; x += 16) {
-+ for (int z = -tickRadius; z <= tickRadius; z += 16) {
-+ // radius of 2 will have the current chunk be level 31
-+ chunkproviderserver.removeRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, z)), 2, Unit.INSTANCE);
-+ }
-+ }
-+
-+ // remove border chunks
-+
-+ // remove border along x axis (including corner chunks)
-+ for (int x = -radiusInBlocks; x <= radiusInBlocks; x += 16) {
-+ // top
-+ chunkproviderserver.removeRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, radiusInBlocks)), 1, Unit.INSTANCE); // level 32
-+ // bottom
-+ chunkproviderserver.removeRegionTicket(TicketType.START, new ChunkPos(spawn.offset(x, 0, -radiusInBlocks)), 1, Unit.INSTANCE); // level 32
-+ }
-+
-+ // remove border along z axis (excluding corner chunks)
-+ for (int z = -radiusInBlocks + 16; z < radiusInBlocks; z += 16) {
-+ // right
-+ chunkproviderserver.removeRegionTicket(TicketType.START, new ChunkPos(spawn.offset(radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32
-+ // left
-+ chunkproviderserver.removeRegionTicket(TicketType.START, new ChunkPos(spawn.offset(-radiusInBlocks, 0, z)), 1, Unit.INSTANCE); // level 32
-+ }
-+ }
-+ // Paper end - Configurable Keep Spawn Loaded range per world
-+
- public void setDefaultSpawnPos(BlockPos pos, float angle) {
-- ChunkPos chunkcoordintpair = new ChunkPos(new BlockPos(this.levelData.getXSpawn(), 0, this.levelData.getZSpawn()));
-+ // Paper start - Configurable Keep Spawn Loaded range per world
-+ BlockPos prevSpawn = this.getSharedSpawnPos();
-+ //ChunkCoordIntPair chunkcoordintpair = new ChunkCoordIntPair(new BlockPosition(this.worldData.a(), 0, this.worldData.c()));
-
- this.levelData.setSpawn(pos, angle);
-- this.getChunkSource().removeRegionTicket(TicketType.START, chunkcoordintpair, 11, Unit.INSTANCE);
-- this.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(pos), 11, Unit.INSTANCE);
-+ if (this.keepSpawnInMemory) {
-+ // if this keepSpawnInMemory is false a plugin has already removed our tickets, do not re-add
-+ this.removeTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, prevSpawn);
-+ this.addTicketsForSpawn(this.paperConfig().spawn.keepSpawnLoadedRange * 16, pos);
-+ }
- this.getServer().getPlayerList().broadcastAll(new ClientboundSetDefaultSpawnPositionPacket(pos, angle));
- }
-
-diff --git a/src/main/java/net/minecraft/server/level/progress/ChunkProgressListener.java b/src/main/java/net/minecraft/server/level/progress/ChunkProgressListener.java
-index 1b565b2809c2d367e21971c5154f35c9763995e6..4792eaa30464f4c4ca7f2d6cf20f734beed81f23 100644
---- a/src/main/java/net/minecraft/server/level/progress/ChunkProgressListener.java
-+++ b/src/main/java/net/minecraft/server/level/progress/ChunkProgressListener.java
-@@ -12,4 +12,6 @@ public interface ChunkProgressListener {
- void start();
-
- void stop();
-+
-+ void setChunkRadius(int radius); // Paper - Configurable Keep Spawn Loaded range per world
- }
-diff --git a/src/main/java/net/minecraft/server/level/progress/LoggerChunkProgressListener.java b/src/main/java/net/minecraft/server/level/progress/LoggerChunkProgressListener.java
-index c9667df492e5681bf933a7f8878b0fdb324afed3..09d0c702132d4cc52ce36712aed11d30efe89f54 100644
---- a/src/main/java/net/minecraft/server/level/progress/LoggerChunkProgressListener.java
-+++ b/src/main/java/net/minecraft/server/level/progress/LoggerChunkProgressListener.java
-@@ -11,12 +11,19 @@ import org.slf4j.Logger;
-
- public class LoggerChunkProgressListener implements ChunkProgressListener {
- private static final Logger LOGGER = LogUtils.getLogger();
-- private final int maxCount;
-+ private int maxCount; // Paper - remove final
- private int count;
- private long startTime;
- private long nextTickTime = Long.MAX_VALUE;
-
- public LoggerChunkProgressListener(int radius) {
-+ // Paper start - Configurable Keep Spawn Loaded range per world
-+ this.setChunkRadius(radius); // Move to method
-+ }
-+
-+ @Override
-+ public void setChunkRadius(int radius) {
-+ // Paper end - Configurable Keep Spawn Loaded range per world
- int i = radius * 2 + 1;
- this.maxCount = i * i;
- }
-diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-index 4001a8c13ceed6037174bb81fd06d9758fa0336c..b39721208f8b66c1478e89553a592070cf90fb97 100644
---- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
-@@ -1411,15 +1411,21 @@ public class CraftWorld extends CraftRegionAccessor implements World {
-
- @Override
- public void setKeepSpawnInMemory(boolean keepLoaded) {
-+ // Paper start - Configurable spawn radius
-+ if (keepLoaded == this.world.keepSpawnInMemory) {
-+ // do nothing, nothing has changed
-+ return;
-+ }
- this.world.keepSpawnInMemory = keepLoaded;
- // Grab the worlds spawn chunk
- BlockPos chunkcoordinates = this.world.getSharedSpawnPos();
- if (keepLoaded) {
-- this.world.getChunkSource().addRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
-+ this.world.addTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange * 16, chunkcoordinates);
- } else {
-- // TODO: doesn't work well if spawn changed....
-- this.world.getChunkSource().removeRegionTicket(TicketType.START, new ChunkPos(chunkcoordinates), 11, Unit.INSTANCE);
-+ // TODO: doesn't work well if spawn changed.... // Paper - resolved
-+ this.world.removeTicketsForSpawn(this.world.paperConfig().spawn.keepSpawnLoadedRange * 16, chunkcoordinates);
- }
-+ // Paper end
- }
-
- @Override