mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
1. Wet the drys 2. Dry the wets 3. Wet the drys 4. Dry the wets 5. Wet the drys 6. Now dust the wets
55 lines
2.8 KiB
Diff
55 lines
2.8 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: froobynooby <froobynooby@froobworld.com>
|
|
Date: Wed, 17 Jul 2024 18:46:11 +0930
|
|
Subject: [PATCH] Paper PR: Throttle failed spawn attempts
|
|
|
|
Original license: GPLv3
|
|
Original project: https://github.com/PaperMC/Paper
|
|
Paper pull request: https://github.com/PaperMC/Paper/pull/11099
|
|
|
|
For example config in paper-world-defaults.yml
|
|
```
|
|
spawning-throttle:
|
|
failed-attempts-threshold: 1200
|
|
throttled-ticks-per-spawn:
|
|
ambient: 10 # default value in bukkit.yml tickers-per * 10
|
|
axolotls: 10
|
|
creature: 4000
|
|
monster: 10
|
|
underground_water_creature: 10
|
|
water_ambient: 10
|
|
water_creature: 10
|
|
```
|
|
|
|
This patch adds the option to use longer ticks-per-spawn for a given
|
|
mob type in chunks where spawn attempts are consecutively failing.
|
|
|
|
This behaviour is particularly useful on servers where players build
|
|
mob farms. Mob farm designs often require making surrounding chunks
|
|
spawnproof, which causes the server to waste CPU cycles trying to spawn mobs in
|
|
vain. Throttling spawn attempts in suspected spawnproof chunks improves
|
|
performance without noticeably advantaging or disadvantaging the mob farm.
|
|
|
|
diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
index 7bfa7aa30c1181587c7632f920f48348d2493ea4..d838c90f98c6593404c77d0aab8655c0d15905c4 100644
|
|
--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
+++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java
|
|
@@ -181,6 +181,17 @@ public class WorldConfiguration extends ConfigurationPart {
|
|
@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)));
|
|
|
|
+ // Paper start - throttle failed spawn attempts
|
|
+ public SpawningThrottle spawningThrottle;
|
|
+
|
|
+ public class SpawningThrottle extends ConfigurationPart {
|
|
+ public IntOr.Disabled failedAttemptsThreshold = IntOr.Disabled.DISABLED;
|
|
+
|
|
+ @MergeMap
|
|
+ public Reference2IntMap<MobCategory> throttledTicksPerSpawn = Util.make(new Reference2IntOpenHashMap<>(NaturalSpawner.SPAWNING_CATEGORIES.length), map -> Arrays.stream(NaturalSpawner.SPAWNING_CATEGORIES).forEach(mobCategory -> map.put(mobCategory, -1)));
|
|
+ }
|
|
+ // Paper end - throttle failed spawn attempts
|
|
+
|
|
@ConfigSerializable
|
|
public record DespawnRangePair(@Required DespawnRange hard, @Required DespawnRange soft) {
|
|
public static DespawnRangePair createDefault() {
|