aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch')
-rw-r--r--patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch32
1 files changed, 32 insertions, 0 deletions
diff --git a/patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch b/patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch
new file mode 100644
index 0000000000..7c943a7345
--- /dev/null
+++ b/patches/server/0262-Prevent-mob-spawning-from-loading-generating-chunks.patch
@@ -0,0 +1,32 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Aikar <[email protected]>
+Date: Wed, 12 Sep 2018 21:12:57 -0400
+Subject: [PATCH] Prevent mob spawning from loading/generating chunks
+
+also prevents if out of world border bounds
+
+diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+index ec6fcfc94b34d2b523c011b197e6484d13517c36..31b330e140d71d9b017e68eab531a59d4f2ed9a2 100644
+--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
++++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+@@ -169,9 +169,9 @@ public final class NaturalSpawner {
+ StructureManager structuremanager = world.structureManager();
+ ChunkGenerator chunkgenerator = world.getChunkSource().getGenerator();
+ int i = pos.getY();
+- BlockState iblockdata = chunk.getBlockState(pos);
++ BlockState iblockdata = world.getBlockStateIfLoadedAndInBounds(pos); // Paper - don't load chunks for mob spawn
+
+- if (!iblockdata.isRedstoneConductor(chunk, pos)) {
++ if (iblockdata != null && !iblockdata.isRedstoneConductor(chunk, pos)) { // Paper - don't load chunks for mob spawn
+ BlockPos.MutableBlockPos blockposition_mutableblockposition = new BlockPos.MutableBlockPos();
+ int j = 0;
+ int k = 0;
+@@ -200,7 +200,7 @@ public final class NaturalSpawner {
+ if (entityhuman != null) {
+ double d2 = entityhuman.distanceToSqr(d0, (double) i, d1);
+
+- if (NaturalSpawner.isRightDistanceToPlayerAndSpawnPoint(world, chunk, blockposition_mutableblockposition, d2)) {
++ if (world.isLoadedAndInBounds(blockposition_mutableblockposition) && NaturalSpawner.isRightDistanceToPlayerAndSpawnPoint(world, chunk, blockposition_mutableblockposition, d2)) { // Paper - don't load chunks for mob spawn
+ if (biomesettingsmobs_c == null) {
+ Optional<MobSpawnSettings.SpawnerData> optional = NaturalSpawner.getRandomSpawnMobAt(world, structuremanager, chunkgenerator, group, world.random, blockposition_mutableblockposition);
+