aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJake Potrebic <[email protected]>2024-03-03 14:53:58 -0800
committerGitHub <[email protected]>2024-03-03 17:53:58 -0500
commit6ad63fba30e7ecd1b11bb8d77e8ed43f0a6e9ce9 (patch)
treedc043d2fff092f30cf7cec4919d8354fafd3439e
parent89d51d5f298cd25d6f44388970596c6780b5664b (diff)
downloadPaper-6ad63fba30e7ecd1b11bb8d77e8ed43f0a6e9ce9.tar.gz
Paper-6ad63fba30e7ecd1b11bb8d77e8ed43f0a6e9ce9.zip
Per world ticks per spawn settings (#6891)
-rw-r--r--patches/server/0005-Paper-config-files.patch6
-rw-r--r--patches/server/1053-Per-world-ticks-per-spawn-settings.patch35
2 files changed, 39 insertions, 2 deletions
diff --git a/patches/server/0005-Paper-config-files.patch b/patches/server/0005-Paper-config-files.patch
index 57e8a5c627..6a80fba3c9 100644
--- a/patches/server/0005-Paper-config-files.patch
+++ b/patches/server/0005-Paper-config-files.patch
@@ -1392,10 +1392,10 @@ index 0000000000000000000000000000000000000000..351fbbc577556ebbd62222615801a96b
+}
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
new file mode 100644
-index 0000000000000000000000000000000000000000..15bc01b59bb67f1f5d8590c08d13537fa81ca8e1
+index 0000000000000000000000000000000000000000..dc7950f9a52a718317e5f41de9d396cd7b846bf3
--- /dev/null
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
-@@ -0,0 +1,551 @@
+@@ -0,0 +1,553 @@
+package io.papermc.paper.configuration;
+
+import com.google.common.collect.HashBasedTable;
@@ -1581,6 +1581,8 @@ index 0000000000000000000000000000000000000000..15bc01b59bb67f1f5d8590c08d13537f
+ public Reference2IntMap<MobCategory> spawnLimits = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
+ @MergeMap
+ public Map<MobCategory, DespawnRange> despawnRanges = Arrays.stream(MobCategory.values()).collect(Collectors.toMap(Function.identity(), category -> new DespawnRange(category.getNoDespawnDistance(), category.getDespawnDistance())));
++ @MergeMap
++ public Reference2IntMap<MobCategory> ticksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
+
+ @ConfigSerializable
+ public record DespawnRange(@Required int soft, @Required int hard) {
diff --git a/patches/server/1053-Per-world-ticks-per-spawn-settings.patch b/patches/server/1053-Per-world-ticks-per-spawn-settings.patch
new file mode 100644
index 0000000000..7cb3e6d77c
--- /dev/null
+++ b/patches/server/1053-Per-world-ticks-per-spawn-settings.patch
@@ -0,0 +1,35 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Sat, 13 Nov 2021 12:36:26 -0800
+Subject: [PATCH] Per world ticks per spawn settings
+
+
+diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
+index f476ba6c97944bdffae5aacae2e285d17541f46e..bc89f9e90af3d69872a58c47a4c2545ba91b6ba5 100644
+--- a/src/main/java/net/minecraft/world/level/Level.java
++++ b/src/main/java/net/minecraft/world/level/Level.java
+@@ -204,6 +204,15 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+ return this.getChunkIfLoaded(chunkX, chunkZ) != null;
+ }
+ // Paper end - Use getChunkIfLoadedImmediately
++ // Paper start - per world ticks per spawn
++ private int getTicksPerSpawn(SpawnCategory spawnCategory) {
++ final int perWorld = this.paperConfig().entities.spawning.ticksPerSpawn.getInt(CraftSpawnCategory.toNMS(spawnCategory));
++ if (perWorld >= 0) {
++ return perWorld;
++ }
++ return this.getCraftServer().getTicksPerSpawns(spawnCategory);
++ }
++ // Paper end
+
+ public abstract ResourceKey<LevelStem> getTypeKey();
+
+@@ -216,7 +225,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
+ // CraftBukkit Ticks things
+ for (SpawnCategory spawnCategory : SpawnCategory.values()) {
+ if (CraftSpawnCategory.isValidForLimits(spawnCategory)) {
+- this.ticksPerSpawnCategory.put(spawnCategory, (long) this.getCraftServer().getTicksPerSpawns(spawnCategory));
++ this.ticksPerSpawnCategory.put(spawnCategory, this.getTicksPerSpawn(spawnCategory)); // Paper
+ }
+ }
+