From 8190eefc02421ce06322a1a670517576f7bbc21c Mon Sep 17 00:00:00 2001 From: kickash32 Date: Wed, 12 Jun 2019 21:54:16 -0400 Subject: [PATCH 1/5] Create 0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch --- ...al-Spawned-mobs-towards-natural-spaw.patch | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch diff --git a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch new file mode 100644 index 000000000000..b12332d86b77 --- /dev/null +++ b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch @@ -0,0 +1,60 @@ +From 13cdbbfbad353171b8f8b20f1d9785f24246de96 Mon Sep 17 00:00:00 2001 +From: kickash32 +Date: Wed, 12 Jun 2019 21:47:44 -0400 +Subject: [PATCH] Only count Natural Spawned mobs towards natural spawn mob + limit + +Comments below are from original patch by Aikar. + +This resolves the super common complaint about mobs not spawning. + +This was ultimately a flaw in the vanilla count algorithim that allows +spawners and other misc mobs to count against the mob limit, which are +not bounded, and can prevent the entire world from spawning new. + +I believe Bukkits changes around persistence may of actually made it +worse than vanilla. + +This should fully solve all of the issues around it so that only natural +influences natural spawns. + +diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +index 58109e13..92d66b1d 100644 +--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java ++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +@@ -509,4 +509,14 @@ public class PaperWorldConfig { + private void maxAutoSaveChunksPerTick() { + maxAutoSaveChunksPerTick = getInt("max-auto-save-chunks-per-tick", 24); + } ++ ++ public boolean countAllMobsForSpawning = false; ++ private void countAllMobsForSpawning() { ++ countAllMobsForSpawning = getBoolean("count-all-mobs-for-spawning", false); ++ if (countAllMobsForSpawning) { ++ log("Counting all mobs for spawning. Mob farms may reduce natural spawns elsewhere in world."); ++ } else { ++ log("Using improved mob spawn limits (Only Natural Spawns impact spawn limits for more natural spawns)"); ++ } ++ } + } +diff --git a/src/main/java/net/minecraft/server/WorldServer.java b/src/main/java/net/minecraft/server/WorldServer.java +index 1c3815a9..8376ae48 100644 +--- a/src/main/java/net/minecraft/server/WorldServer.java ++++ b/src/main/java/net/minecraft/server/WorldServer.java +@@ -854,6 +854,13 @@ public class WorldServer extends World { + EnumCreatureType enumcreaturetype = entity.getEntityType().d(); + + if (enumcreaturetype != EnumCreatureType.MISC && this.getChunkProvider().a(entity)) { ++ // Paper start - Only count natural spawns so that mob ++ if (!this.paperConfig.countAllMobsForSpawning && ++ !(entity.spawnReason == CreatureSpawnEvent.SpawnReason.NATURAL || ++ entity.spawnReason == CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) { ++ continue; ++ } ++ // Paper end + object2intmap.computeInt(enumcreaturetype, (enumcreaturetype1, integer) -> { + return 1 + (integer == null ? 0 : integer); + }); +-- +2.19.0 + From 19e5236cce333b3ada782cd69c5e8c32a8b0e6b2 Mon Sep 17 00:00:00 2001 From: kickash32 Date: Wed, 12 Jun 2019 21:56:09 -0400 Subject: [PATCH 2/5] delete old patch --- ...al-Spawned-mobs-towards-natural-spaw.patch | 66 ------------------- 1 file changed, 66 deletions(-) delete mode 100644 removed/1.14/0423-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch diff --git a/removed/1.14/0423-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/removed/1.14/0423-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch deleted file mode 100644 index c96473b00831..000000000000 --- a/removed/1.14/0423-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch +++ /dev/null @@ -1,66 +0,0 @@ -From 07bc019d7485fc75328f148ca9498a5216a3f657 Mon Sep 17 00:00:00 2001 -From: Aikar -Date: Sun, 24 Mar 2019 01:01:32 -0400 -Subject: [PATCH] Only count Natural Spawned mobs towards natural spawn mob - limit - -This resolves the super common complaint about mobs not spawning. - -This was ultimately a flaw in the vanilla count algorithim that allows -spawners and other misc mobs to count against the mob limit, which are -not bounded, and can prevent the entire world from spawning new. - -I believe Bukkits changes around persistence may of actually made it -worse than vanilla. - -This should fully solve all of the issues around it so that only natural -influences natural spawns. - -diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index a70a64070e..bfd690eccd 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -598,4 +598,14 @@ public class PaperWorldConfig { - log("Using vanilla redstone algorithm."); - } - } -+ -+ public boolean countAllMobsForSpawning = false; -+ private void countAllMobsForSpawning() { -+ countAllMobsForSpawning = getBoolean("count-all-mobs-for-spawning", false); -+ if (countAllMobsForSpawning) { -+ log("Counting all mobs for spawning. Mob farms may reduce natural spawns elsewhere in world."); -+ } else { -+ log("Using improved mob spawn limits (Only Natural Spawns impact spawn limits for more natural spawns)"); -+ } -+ } - } -diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldEntityList.java b/src/main/java/com/destroystokyo/paper/PaperWorldEntityList.java -index a10a5bc138..a5a63f8004 100644 ---- a/src/main/java/com/destroystokyo/paper/PaperWorldEntityList.java -+++ b/src/main/java/com/destroystokyo/paper/PaperWorldEntityList.java -@@ -7,6 +7,7 @@ import net.minecraft.server.IAnimal; - import net.minecraft.server.MinecraftServer; - import net.minecraft.server.World; - import net.minecraft.server.WorldServer; -+import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; - - import java.util.ArrayList; - import java.util.Collection; -@@ -90,7 +91,12 @@ public class PaperWorldEntityList extends ArrayList { - } - - public void updateEntityCount(Entity entity, int amt) { -- if (!(entity instanceof IAnimal)) return; -+ // Only count natural spawns so that mob -+ if (!(entity instanceof IAnimal) || ( -+ !world.paperConfig.countAllMobsForSpawning && -+ entity.spawnReason != SpawnReason.NATURAL && -+ entity.spawnReason != SpawnReason.CHUNK_GEN -+ )) return; - - if (entity instanceof EntityInsentient) { - EntityInsentient entityinsentient = (EntityInsentient) entity; --- -2.21.0 - From 75ddcd07c8178c42aaded1fe6840cf37e697eca6 Mon Sep 17 00:00:00 2001 From: Omer Uddin Date: Wed, 12 Jun 2019 22:05:05 -0400 Subject: [PATCH 3/5] Comment didn't make sense --- ...2-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch index b12332d86b77..82911aa25af0 100644 --- a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch +++ b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch @@ -45,7 +45,7 @@ index 1c3815a9..8376ae48 100644 EnumCreatureType enumcreaturetype = entity.getEntityType().d(); if (enumcreaturetype != EnumCreatureType.MISC && this.getChunkProvider().a(entity)) { -+ // Paper start - Only count natural spawns so that mob ++ // Paper start - Only count natural spawns + if (!this.paperConfig.countAllMobsForSpawning && + !(entity.spawnReason == CreatureSpawnEvent.SpawnReason.NATURAL || + entity.spawnReason == CreatureSpawnEvent.SpawnReason.CHUNK_GEN)) { From 53e913eb708c0985d43ec83e1e11a2c09093094e Mon Sep 17 00:00:00 2001 From: Omer Uddin Date: Thu, 13 Jun 2019 11:15:20 -0400 Subject: [PATCH 4/5] Use original header --- ...ly-count-Natural-Spawned-mobs-towards-natural-spaw.patch | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch index 82911aa25af0..39dec2c959bc 100644 --- a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch +++ b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch @@ -1,11 +1,9 @@ -From 13cdbbfbad353171b8f8b20f1d9785f24246de96 Mon Sep 17 00:00:00 2001 -From: kickash32 +From 07bc019d7485fc75328f148ca9498a5216a3f657 Mon Sep 17 00:00:00 2001 +From: Aikar Date: Wed, 12 Jun 2019 21:47:44 -0400 Subject: [PATCH] Only count Natural Spawned mobs towards natural spawn mob limit -Comments below are from original patch by Aikar. - This resolves the super common complaint about mobs not spawning. This was ultimately a flaw in the vanilla count algorithim that allows From bde57b5345838d508d9b822f6156942c23c37079 Mon Sep 17 00:00:00 2001 From: Omer Uddin Date: Sat, 13 Jul 2019 09:14:37 -0400 Subject: [PATCH 5/5] use original date in header --- ...2-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch index 39dec2c959bc..e7846efc4f71 100644 --- a/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch +++ b/Spigot-Server-Patches/0402-Only-count-Natural-Spawned-mobs-towards-natural-spaw.patch @@ -1,6 +1,6 @@ From 07bc019d7485fc75328f148ca9498a5216a3f657 Mon Sep 17 00:00:00 2001 From: Aikar -Date: Wed, 12 Jun 2019 21:47:44 -0400 +Date: Sun, 24 Mar 2019 01:01:32 -0400 Subject: [PATCH] Only count Natural Spawned mobs towards natural spawn mob limit