diff --git a/paper-server/patches/sources/net/minecraft/server/level/ServerChunkCache.java.patch b/paper-server/patches/sources/net/minecraft/server/level/ServerChunkCache.java.patch index 1bd602d6fb39..0718800a70d5 100644 --- a/paper-server/patches/sources/net/minecraft/server/level/ServerChunkCache.java.patch +++ b/paper-server/patches/sources/net/minecraft/server/level/ServerChunkCache.java.patch @@ -188,6 +188,30 @@ } else { filteredSpawningCategories = List.of(); } +@@ -430,6 +_,23 @@ + this.level.tickThunder(chunk); + } + ++ // Paper start - disable mob spawning within configured radius around spawn chunk ++ int mobSpawningDisableRadiusAroundSpawnChunk = level.paperConfig().chunks.mobSpawningDisableRadiusAroundSpawnChunk; ++ ++ if (mobSpawningDisableRadiusAroundSpawnChunk >= 0) ++ { ++ ChunkPos spawnChunk = new net.minecraft.world.level.ChunkPos(level.getSharedSpawnPos()); ++ ++ if (pos.x <= spawnChunk.x + mobSpawningDisableRadiusAroundSpawnChunk && ++ pos.x >= spawnChunk.x - mobSpawningDisableRadiusAroundSpawnChunk && ++ pos.z <= spawnChunk.z + mobSpawningDisableRadiusAroundSpawnChunk && ++ pos.z >= spawnChunk.z - mobSpawningDisableRadiusAroundSpawnChunk) ++ { ++ return; ++ } ++ } ++ // Paper end - disable mob spawning within configured radius around spawn chunk ++ + if (!spawnCategories.isEmpty()) { + if (this.level.canSpawnEntitiesInChunk(pos)) { + NaturalSpawner.spawnForChunk(this.level, chunk, spawnState, spawnCategories); @@ -547,8 +_,13 @@ @Override diff --git a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java index bd1f0ba488ff..8a835b2f409b 100644 --- a/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/paper-server/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java @@ -515,6 +515,7 @@ public class Chunks extends ConfigurationPart { map.put(EntityType.SMALL_FIREBALL, -1); }); public boolean flushRegionsOnSave = false; + public int mobSpawningDisableRadiusAroundSpawnChunk = -1; @PostProcess private void postProcess() {