mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 08:27:43 +01:00
Configurable minimum demand for trades
Addresses MC-163962 where villager demand decreases indefinitely. Paper adds a patch to fix this by preventing demand from going below zero. This patch adds a config option to allow the minimum demand to instead be configurable.
This commit is contained in:
@@ -1,61 +0,0 @@
|
|||||||
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Totorewa <76272501+totorewa@users.noreply.github.com>
|
|
||||||
Date: Fri, 7 Jan 2022 21:34:57 +1300
|
|
||||||
Subject: [PATCH] Configurable minimum demand for trades
|
|
||||||
|
|
||||||
Addresses MC-163962 where villager demand decreases indefinitely. Paper
|
|
||||||
adds a patch to fix this by preventing demand from going below zero.
|
|
||||||
This patch adds a config option to allow the minimum demand to instead
|
|
||||||
be configurable.
|
|
||||||
|
|
||||||
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
index fcaf3db893d14b8359bddc1cc69da82e533ebc87..e03066a9e336fb67f729a84404ef8b37208fa77d 100644
|
|
||||||
--- a/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
+++ b/net/minecraft/world/entity/npc/Villager.java
|
|
||||||
@@ -548,7 +548,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
|
||||||
while (iterator.hasNext()) {
|
|
||||||
MerchantOffer merchantrecipe = (MerchantOffer) iterator.next();
|
|
||||||
|
|
||||||
- merchantrecipe.updateDemand();
|
|
||||||
+ merchantrecipe.updateDemand(this.level().purpurConfig.villagerMinimumDemand); // Purpur
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
diff --git a/net/minecraft/world/item/trading/MerchantOffer.java b/net/minecraft/world/item/trading/MerchantOffer.java
|
|
||||||
index 0efc8d997b34302c3e0a5d7ec73a11a940dbeefe..af157881d440b34cfe79fbc9b03cc9ef28515eb8 100644
|
|
||||||
--- a/net/minecraft/world/item/trading/MerchantOffer.java
|
|
||||||
+++ b/net/minecraft/world/item/trading/MerchantOffer.java
|
|
||||||
@@ -131,7 +131,12 @@ public class MerchantOffer {
|
|
||||||
}
|
|
||||||
|
|
||||||
public void updateDemand() {
|
|
||||||
- this.demand = Math.max(0, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962
|
|
||||||
+ // Purpur start
|
|
||||||
+ this.updateDemand(0);
|
|
||||||
+ }
|
|
||||||
+ public void updateDemand(int minimumDemand) {
|
|
||||||
+ this.demand = Math.max(minimumDemand, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962
|
|
||||||
+ // Purpur end
|
|
||||||
}
|
|
||||||
|
|
||||||
public ItemStack assemble() {
|
|
||||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
index fc11b643c938cf7d7bd088825dfd89afef15401d..fa09bd0e91d3c71d960e316f792323b763569b6e 100644
|
|
||||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
|
||||||
@@ -2914,6 +2914,7 @@ public class PurpurWorldConfig {
|
|
||||||
public boolean villagerTakeDamageFromWater = false;
|
|
||||||
public boolean villagerAllowTrading = true;
|
|
||||||
public boolean villagerAlwaysDropExp = false;
|
|
||||||
+ public int villagerMinimumDemand = 0;
|
|
||||||
private void villagerSettings() {
|
|
||||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
|
||||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
|
||||||
@@ -2936,6 +2937,7 @@ public class PurpurWorldConfig {
|
|
||||||
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
|
|
||||||
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
|
|
||||||
villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp);
|
|
||||||
+ villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean vindicatorRidable = false;
|
|
||||||
@@ -22,6 +22,15 @@
|
|||||||
this.startTrading(player);
|
this.startTrading(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -503,7 +_,7 @@
|
||||||
|
|
||||||
|
private void updateDemand() {
|
||||||
|
for (MerchantOffer merchantOffer : this.getOffers()) {
|
||||||
|
- merchantOffer.updateDemand();
|
||||||
|
+ merchantOffer.updateDemand(this.level().purpurConfig.villagerMinimumDemand); // Purpur - Configurable minimum demand for trades
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@@ -707,7 +_,7 @@
|
@@ -707,7 +_,7 @@
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
--- a/net/minecraft/world/item/trading/MerchantOffer.java
|
||||||
|
+++ b/net/minecraft/world/item/trading/MerchantOffer.java
|
||||||
|
@@ -143,7 +_,12 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateDemand() {
|
||||||
|
- this.demand = Math.max(0, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962
|
||||||
|
+ // Purpur start - Configurable minimum demand for trades
|
||||||
|
+ this.updateDemand(0);
|
||||||
|
+ }
|
||||||
|
+ public void updateDemand(int minimumDemand) {
|
||||||
|
+ this.demand = Math.max(minimumDemand, this.demand + this.uses - (this.maxUses - this.uses)); // Paper - Fix MC-163962
|
||||||
|
+ // Purpur end - Configurable minimum demand for trades
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack assemble() {
|
||||||
@@ -2913,6 +2913,7 @@ public class PurpurWorldConfig {
|
|||||||
public boolean villagerTakeDamageFromWater = false;
|
public boolean villagerTakeDamageFromWater = false;
|
||||||
public boolean villagerAllowTrading = true;
|
public boolean villagerAllowTrading = true;
|
||||||
public boolean villagerAlwaysDropExp = false;
|
public boolean villagerAlwaysDropExp = false;
|
||||||
|
public int villagerMinimumDemand = 0;
|
||||||
private void villagerSettings() {
|
private void villagerSettings() {
|
||||||
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable);
|
||||||
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater);
|
||||||
@@ -2935,6 +2936,7 @@ public class PurpurWorldConfig {
|
|||||||
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
|
villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater);
|
||||||
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
|
villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading);
|
||||||
villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp);
|
villagerAlwaysDropExp = getBoolean("mobs.villager.always-drop-exp", villagerAlwaysDropExp);
|
||||||
|
villagerMinimumDemand = getInt("mobs.villager.minimum-demand", villagerMinimumDemand);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean vindicatorRidable = false;
|
public boolean vindicatorRidable = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user