From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Sat, 13 Aug 2022 17:27:18 +0800 Subject: [PATCH] Optimize mob spawning This patch is Powered by Pufferfish(https://github.com/pufferfish-gg/Pufferfish) diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java index 15d266fc97eb73338f4f6fb2cfe25d6861e79810..70773c525bcf33d4d4764ce4a16dedddc423b02b 100644 --- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java +++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java @@ -173,7 +173,7 @@ public final class NaturalSpawner { } difference = (minDiff == Integer.MAX_VALUE) ? 0 : minDiff; } - if ((spawnAnimals || !enumcreaturetype.isFriendly()) && (spawnMonsters || enumcreaturetype.isFriendly()) && (rareSpawn || !enumcreaturetype.isPersistent()) && difference > 0) { + if ((spawnAnimals || !enumcreaturetype.isFriendly()) && (spawnMonsters || enumcreaturetype.isFriendly()) && (rareSpawn || !enumcreaturetype.isPersistent()) && difference > 0 && (!world.paperConfig().entities.spawning.perPlayerMobSpawns || info.canSpawnForCategory(enumcreaturetype, chunk.getPos(), limit))) { // Leaves - be vanilla // Paper end // CraftBukkit end Objects.requireNonNull(info); diff --git a/src/main/java/top/leavesmc/leaves/LeavesConfig.java b/src/main/java/top/leavesmc/leaves/LeavesConfig.java index ce3c88c1cdb58f63aecc87b9900f8cf7c6144908..dfce8514d0ea36d24bd4168856d6f10f68f4e30c 100644 --- a/src/main/java/top/leavesmc/leaves/LeavesConfig.java +++ b/src/main/java/top/leavesmc/leaves/LeavesConfig.java @@ -228,7 +228,21 @@ public final class LeavesConfig { } noChatSign = getBoolean("settings.misc.no-chat-sign", noChatSign); } - + + public static boolean asyncMobSpawning = false; + private static boolean asyncMobSpawningLock = false; + private static void asyncMobSpawning() { + if (!asyncMobSpawningLock) { + asyncMobSpawning = getBoolean("settings.performance.async-mob-spawning", asyncMobSpawning); + asyncMobSpawningLock = true; + } + + if (asyncMobSpawning) { + asyncMobSpawning = false; + LeavesLogger.LOGGER.severe("Async MobSpawning is updating, it can't work"); + } + } + public static final class WorldConfig { public final String worldName;