aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0043-Configurable-mob-spawner-tick-rate.patch
blob: a34fa86ce5a541a7c588e60206fc35d3bfb1a0b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Sudzzy <originmc@outlook.com>
Date: Wed, 2 Mar 2016 15:03:53 -0600
Subject: [PATCH] Configurable mob spawner tick rate


diff --git a/src/main/java/net/minecraft/world/level/BaseSpawner.java b/src/main/java/net/minecraft/world/level/BaseSpawner.java
index e888cf862662ae6baa6d0de8188aa74a9c6a8e00..a46293dafeb73f9206b92a2850df18a6a5f688b4 100644
--- a/src/main/java/net/minecraft/world/level/BaseSpawner.java
+++ b/src/main/java/net/minecraft/world/level/BaseSpawner.java
@@ -47,6 +47,7 @@ public abstract class BaseSpawner {
     public int maxNearbyEntities = 6;
     public int requiredPlayerRange = 16;
     public int spawnRange = 4;
+    private int tickDelay = 0; // Paper - Configurable mob spawner tick rate
 
     public BaseSpawner() {}
 
@@ -81,13 +82,18 @@ public abstract class BaseSpawner {
     }
 
     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();