aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch
diff options
context:
space:
mode:
authorSpottedleaf <[email protected]>2024-11-28 17:39:40 -0800
committerSpottedleaf <[email protected]>2024-11-28 18:27:59 -0800
commitda9d110d5bf8ffb090d63cd6a443b22ef1ab9d64 (patch)
tree9dbb88d122e6c21827c230041f0b7c93d5a03bf0 /patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch
parent0cc7bd485760dd0abd387f64d193ffef7aa019ee (diff)
downloadPaper-da9d110d5bf8ffb090d63cd6a443b22ef1ab9d64.tar.gz
Paper-da9d110d5bf8ffb090d63cd6a443b22ef1ab9d64.zip
Remove chunk save reattempt patch
This patch does not appear to be doing anything useful, and may hide errors. Currently, the save logic does not run through this path either so it did not do anything. Additionally, properly implement support for handling RegionFileSizeException in Moonrise.
Diffstat (limited to 'patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch')
-rw-r--r--patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch87
1 files changed, 87 insertions, 0 deletions
diff --git a/patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch b/patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch
new file mode 100644
index 0000000000..30e4e03f24
--- /dev/null
+++ b/patches/server/0426-Add-Wandering-Trader-spawn-rate-config-options.patch
@@ -0,0 +1,87 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Thu, 20 Aug 2020 11:20:12 -0700
+Subject: [PATCH] Add Wandering Trader spawn rate config options
+
+Adds config options for modifying the spawn rates of Wandering Traders.
+These values are all easy to understand and configure after a quick read of this
+page on the Minecraft wiki: https://minecraft.wiki/wiki/Wandering_Trader#Spawning
+Usages of the vanilla WanderingTraderSpawnDelay and WanderingTraderSpawnChance values
+in IWorldServerData are removed as they were only used in certain places, with hardcoded
+values used in other places.
+
+diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
+index cfa1787b955fd9b80bf9906b88d423cb59b12ff1..08a3c7140867f339dd99a95094ed0fd8ff344fca 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
++++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
+@@ -40,43 +40,53 @@ public class WanderingTraderSpawner implements CustomSpawner {
+
+ public WanderingTraderSpawner(ServerLevelData properties) {
+ this.serverLevelData = properties;
+- this.tickDelay = 1200;
+- this.spawnDelay = properties.getWanderingTraderSpawnDelay();
+- this.spawnChance = properties.getWanderingTraderSpawnChance();
+- if (this.spawnDelay == 0 && this.spawnChance == 0) {
+- this.spawnDelay = 24000;
+- properties.setWanderingTraderSpawnDelay(this.spawnDelay);
+- this.spawnChance = 25;
+- properties.setWanderingTraderSpawnChance(this.spawnChance);
+- }
++ // Paper start - Add Wandering Trader spawn rate config options
++ this.tickDelay = Integer.MIN_VALUE;
++ //this.spawnDelay = properties.getWanderingTraderSpawnDelay(); // Paper - This value is read from the world file only for the first spawn, after which vanilla uses a hardcoded value
++ //this.spawnChance = properties.getWanderingTraderSpawnChance(); // Paper - This value is read from the world file only for the first spawn, after which vanilla uses a hardcoded value
++ //if (this.spawnDelay == 0 && this.spawnChance == 0) {
++ // this.spawnDelay = 24000;
++ // properties.setWanderingTraderSpawnDelay(this.spawnDelay);
++ // this.spawnChance = 25;
++ // properties.setWanderingTraderSpawnChance(this.spawnChance);
++ //}
++ // Paper end - Add Wandering Trader spawn rate config options
+
+ }
+
+ @Override
+ public int tick(ServerLevel world, boolean spawnMonsters, boolean spawnAnimals) {
++ // Paper start - Add Wandering Trader spawn rate config options
++ if (this.tickDelay == Integer.MIN_VALUE) {
++ this.tickDelay = world.paperConfig().entities.spawning.wanderingTrader.spawnMinuteLength;
++ this.spawnDelay = world.paperConfig().entities.spawning.wanderingTrader.spawnDayLength;
++ this.spawnChance = world.paperConfig().entities.spawning.wanderingTrader.spawnChanceMin;
++ }
+ if (!world.getGameRules().getBoolean(GameRules.RULE_DO_TRADER_SPAWNING)) {
+ return 0;
+- } else if (--this.tickDelay > 0) {
++ } else if (this.tickDelay - 1 > 0) {
++ this.tickDelay = this.tickDelay - 1;
+ return 0;
+ } else {
+- this.tickDelay = 1200;
+- this.spawnDelay -= 1200;
+- this.serverLevelData.setWanderingTraderSpawnDelay(this.spawnDelay);
++ this.tickDelay = world.paperConfig().entities.spawning.wanderingTrader.spawnMinuteLength;
++ this.spawnDelay = this.spawnDelay - world.paperConfig().entities.spawning.wanderingTrader.spawnMinuteLength;
++ //this.serverLevelData.setWanderingTraderSpawnDelay(this.spawnDelay); // Paper - We don't need to save this value to disk if it gets set back to a hardcoded value anyways
+ if (this.spawnDelay > 0) {
+ return 0;
+ } else {
+- this.spawnDelay = 24000;
++ this.spawnDelay = world.paperConfig().entities.spawning.wanderingTrader.spawnDayLength;
+ if (!world.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING)) {
+ return 0;
+ } else {
+ int i = this.spawnChance;
+
+- this.spawnChance = Mth.clamp(this.spawnChance + 25, 25, 75);
+- this.serverLevelData.setWanderingTraderSpawnChance(this.spawnChance);
++ // this.serverLevelData.setWanderingTraderSpawnChance(this.spawnChance); // Paper - We don't need to save this value to disk if it gets set back to a hardcoded value anyways
++ this.spawnChance = Mth.clamp(i + world.paperConfig().entities.spawning.wanderingTrader.spawnChanceFailureIncrement, world.paperConfig().entities.spawning.wanderingTrader.spawnChanceMin, world.paperConfig().entities.spawning.wanderingTrader.spawnChanceMax);
+ if (this.random.nextInt(100) > i) {
+ return 0;
+ } else if (this.spawn(world)) {
+- this.spawnChance = 25;
++ this.spawnChance = world.paperConfig().entities.spawning.wanderingTrader.spawnChanceMin;
++ // Paper end - Add Wandering Trader spawn rate config options
+ return 1;
+ } else {
+ return 0;