From 1ac857b5317683f86c744e90b95d9394e8c4cabd Mon Sep 17 00:00:00 2001 From: Sudzzy Date: Wed, 2 Mar 2016 15:03:53 -0600 Subject: [PATCH] Configurable mob spawner tick rate --- .../world/level/BaseSpawner.java.patch | 31 +++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/paper-server/patches/sources/net/minecraft/world/level/BaseSpawner.java.patch b/paper-server/patches/sources/net/minecraft/world/level/BaseSpawner.java.patch index cfb9a18f60..bfaf70fd22 100644 --- a/paper-server/patches/sources/net/minecraft/world/level/BaseSpawner.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/level/BaseSpawner.java.patch @@ -1,6 +1,12 @@ --- a/net/minecraft/world/level/BaseSpawner.java +++ b/net/minecraft/world/level/BaseSpawner.java -@@ -54,10 +54,11 @@ +@@ -49,15 +49,17 @@ + public int maxNearbyEntities = 6; + public int requiredPlayerRange = 16; + public int spawnRange = 4; ++ private int tickDelay = 0; // Paper - Configurable mob spawner tick rate + + public BaseSpawner() {} public void setEntityId(EntityType type, @Nullable Level world, RandomSource random, BlockPos pos) { this.getOrCreateNextSpawnData(world, random, pos).getEntityToSpawn().putString("id", BuiltInRegistries.ENTITY_TYPE.getKey(type).toString()); @@ -13,7 +19,28 @@ } public void clientTick(Level world, BlockPos pos) { -@@ -157,13 +158,24 @@ +@@ -82,13 +84,18 @@ + } + + public void serverTick(ServerLevel world, BlockPos pos) { ++ // Paper start - Configurable mob spawner tick rate ++ if (spawnDelay > 0 && --tickDelay > 0) return; ++ tickDelay = world.paperConfig().tickRates.mobSpawner; ++ if (tickDelay == -1) { return; } // If disabled ++ // Paper end - Configurable mob spawner tick rate + if (this.isNearPlayer(world, pos)) { +- if (this.spawnDelay == -1) { ++ if (this.spawnDelay < -tickDelay) { // Paper - Configurable mob spawner tick rate + this.delay(world, pos); + } + + if (this.spawnDelay > 0) { +- --this.spawnDelay; ++ this.spawnDelay -= tickDelay; // Paper - Configurable mob spawner tick rate + } else { + boolean flag = false; + RandomSource randomsource = world.getRandom(); +@@ -157,13 +164,24 @@ ((Mob) entity).finalizeSpawn(world, world.getCurrentDifficultyAt(entity.blockPosition()), EntitySpawnReason.SPAWNER, (SpawnGroupData) null); }