Files
MiraiMC/patches/server/0066-PaperPR-Fix-mobs-spawning-outside-hard-despawn-range.patch
2022-02-19 13:54:03 +01:00

23 lines
1.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Gaider10 <>
Date: Mon, 30 Aug 2021 16:10:51 +0300
Subject: [PATCH] PaperPR Fix mobs spawning outside hard despawn range
diff --git a/src/main/java/net/minecraft/world/level/NaturalSpawner.java b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
index f71f8b5c95849a6fb0367d7b027300cb2559b9e8..11d478bcb645583902698e1cf62fcbe3dc3cf825 100644
--- a/src/main/java/net/minecraft/world/level/NaturalSpawner.java
+++ b/src/main/java/net/minecraft/world/level/NaturalSpawner.java
@@ -387,7 +387,10 @@ public final class NaturalSpawner {
}
private static boolean isValidPositionForMob(ServerLevel world, Mob entity, double squaredDistance) {
- return squaredDistance > (double) (entity.getType().getCategory().getDespawnDistance() * entity.getType().getCategory().getDespawnDistance()) && entity.removeWhenFarAway(squaredDistance) ? false : entity.checkSpawnRules(world, MobSpawnType.NATURAL) && entity.checkSpawnObstruction(world);
+ // Paper start - fix mobs spawning outside hard despawn range
+ int despawnDistance = entity.isPersistenceRequired() || entity.requiresCustomPersistence() ? entity.getType().getCategory().getDespawnDistance() : world.paperConfig.hardDespawnDistances.getInt(entity.getType().getCategory());
+ return squaredDistance > (double) (despawnDistance * despawnDistance) && entity.removeWhenFarAway(squaredDistance) ? false : entity.checkSpawnRules((LevelAccessor) world, MobSpawnType.NATURAL) && entity.checkSpawnObstruction((LevelReader) world);
+ // Paper end - fix mobs spawning outside hard despawn range
}
private static Optional<MobSpawnSettings.SpawnerData> getRandomSpawnMobAt(ServerLevel world, StructureFeatureManager structureAccessor, ChunkGenerator chunkGenerator, MobCategory spawnGroup, Random random, BlockPos pos) {