From fd210660582289331cb13e7345a73582808d161e Mon Sep 17 00:00:00 2001 From: Ben Kerllenevich Date: Sat, 11 Jan 2025 17:29:39 -0800 Subject: [PATCH] Add config for villager trading --- ...0139-Add-config-for-villager-trading.patch | 69 ------------------- .../features/0001-Ridables.patch | 17 +++-- ...Villager-Clerics-to-farm-Nether-Wart.patch | 4 +- .../world/entity/npc/Villager.java.patch | 8 +++ .../entity/npc/WanderingTrader.java.patch | 11 +++ .../purpurmc/purpur/PurpurWorldConfig.java | 4 ++ 6 files changed, 33 insertions(+), 80 deletions(-) delete mode 100644 patches/server/0139-Add-config-for-villager-trading.patch diff --git a/patches/server/0139-Add-config-for-villager-trading.patch b/patches/server/0139-Add-config-for-villager-trading.patch deleted file mode 100644 index 8977f02f1..000000000 --- a/patches/server/0139-Add-config-for-villager-trading.patch +++ /dev/null @@ -1,69 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Ben Kerllenevich -Date: Thu, 18 Mar 2021 07:23:27 -0400 -Subject: [PATCH] Add config for villager trading - - -diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index e33a29c486d50c5f22888bcb1979830143c8b06d..0bca1eeaa0f35d702dad41758c72bb3c9ab35220 100644 ---- a/net/minecraft/world/entity/npc/Villager.java -+++ b/net/minecraft/world/entity/npc/Villager.java -@@ -377,6 +377,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler - } - - if (level().purpurConfig.villagerRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - Ridables -+ if (this.level().purpurConfig.villagerAllowTrading) // Purpur - Add config for villager trading - this.startTrading(player); - } - -diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 455390bd5350282d1a6c9b25e9cdbd4a620b136c..2cfd9c9194edda92185adecca80c5cd140e26c9f 100644 ---- a/net/minecraft/world/entity/npc/WanderingTrader.java -+++ b/net/minecraft/world/entity/npc/WanderingTrader.java -@@ -165,8 +165,10 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill - return tryRide(player, hand, InteractionResult.CONSUME); // Purpur - Ridables - } - if (level().purpurConfig.wanderingTraderRidable && itemstack.isEmpty()) return tryRide(player, hand); // Purpur - Ridables -+ if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading - this.setTradingPlayer(player); - this.openTradingScreen(player, this.getDisplayName(), 1); -+ } // Purpur - Add config for villager trading - } - - return InteractionResult.SUCCESS; -diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 59156b6d2b8107a2031bc56387f002a6ef404022..913c3e0c66d005380782af7e7a3358ed5ef45afc 100644 ---- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -@@ -2238,6 +2238,7 @@ public class PurpurWorldConfig { - public boolean villagerClericFarmersThrowWarts = true; - public boolean villagerBypassMobGriefing = false; - public boolean villagerTakeDamageFromWater = false; -+ public boolean villagerAllowTrading = true; - private void villagerSettings() { - villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); - villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); -@@ -2258,6 +2259,7 @@ public class PurpurWorldConfig { - villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); - villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); - villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); -+ villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); - } - - public boolean vindicatorRidable = false; -@@ -2291,6 +2293,7 @@ public class PurpurWorldConfig { - public double wanderingTraderTemptRange = 10.0D; - public boolean wanderingTraderCanBeLeashed = false; - public boolean wanderingTraderTakeDamageFromWater = false; -+ public boolean wanderingTraderAllowTrading = true; - private void wanderingTraderSettings() { - wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); - wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); -@@ -2306,6 +2309,7 @@ public class PurpurWorldConfig { - wanderingTraderTemptRange = getDouble("mobs.wandering_trader.attributes.tempt_range", wanderingTraderTemptRange); - wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); - wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); -+ wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); - } - - public boolean wardenRidable = false; diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 39dde407a..6c74dc927 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -30,7 +30,7 @@ index dbd5629ff0bc97177e872630bc39c608d009297f..5cba0608e24d2f5a687921e0c6b68827 /* Drop global time updates if (this.tickCount % 20 == 0) { diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java -index 7f136e044a243814372beef1400d3b6a148d2cbf..5e730cdde960603d5fa0fa7d1b70ec56c4fa8145 100644 +index 53a7c465e64920f46ee46d9c71fc595dbfb24021..4daa8dfa6d9e13ffb88ad0c5d4f18f24ee408225 100644 --- a/net/minecraft/server/level/ServerLevel.java +++ b/net/minecraft/server/level/ServerLevel.java @@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe @@ -3969,7 +3969,7 @@ index e855ebc5be2cef3b96e2c01a8c1d388e433c0d52..4e799981f04cd17a34f043dda82869ad this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true)); this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false)); diff --git a/net/minecraft/world/entity/monster/Ravager.java b/net/minecraft/world/entity/monster/Ravager.java -index 129479cedda20e77719f4f7237ec5b9acc5b00c8..a58a0d5d3872a57c8c5e464bd0f6d2fd7a054990 100644 +index 4a4d01abfbbdd4ab4bf89ce990ec287ca03dbc29..09910d526cdf3484474463ee4ea1ca8501280e45 100644 --- a/net/minecraft/world/entity/monster/Ravager.java +++ b/net/minecraft/world/entity/monster/Ravager.java @@ -66,14 +66,39 @@ public class Ravager extends Raider { @@ -4936,7 +4936,7 @@ index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54a && this.level() == entity.level() && EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity) diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index f292db5aa6df2c2039432a4f09e43bf2b8b11e87..2c195e6aabc10d6c8f06fdcb3d9b361d1feeecc2 100644 +index 7b514b40070946f93156599349311c654ad6c9c4..286ca9a05db4823a277c150d1b18592e64c70aca 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -200,6 +200,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -4996,11 +4996,11 @@ index f292db5aa6df2c2039432a4f09e43bf2b8b11e87..2c195e6aabc10d6c8f06fdcb3d9b361d + if (level().purpurConfig.villagerRidable && itemInHand.isEmpty()) return tryRide(player, hand); // Purpur - Ridables + + if (this.level().purpurConfig.villagerAllowTrading) // Purpur - Add config for villager trading this.startTrading(player); } - diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java -index 47c1ad2ef30d464abb3c804260f0fd7cde193ba5..c6b3894fe085c2b565651ab3ae2f1acbb6bacea4 100644 +index 99947e9877b79c0d419e1639c2b1379fc1504c6a..7e4d14d30eb3f06c0c7426e09084355ab4f3857d 100644 --- a/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/net/minecraft/world/entity/npc/WanderingTrader.java @@ -76,6 +76,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill @@ -5027,18 +5027,17 @@ index 47c1ad2ef30d464abb3c804260f0fd7cde193ba5..c6b3894fe085c2b565651ab3ae2f1acb @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); -@@ -137,9 +154,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill +@@ -137,8 +154,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill if (!this.level().isClientSide) { if (this.getOffers().isEmpty()) { - return InteractionResult.CONSUME; + return tryRide(player, hand, InteractionResult.CONSUME); // Purpur - Ridables } -- + if (level().purpurConfig.wanderingTraderRidable && itemInHand.isEmpty()) return tryRide(player, hand); // Purpur - Ridables + + if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading this.setTradingPlayer(player); - this.openTradingScreen(player, this.getDisplayName(), 1); - } diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java index 6e84f57c90c0747403c4679bc920f9a9aa83594f..fa258b6a1795d18a053843e93349dbf9aadf7e77 100644 --- a/net/minecraft/world/entity/player/Player.java diff --git a/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch b/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch index 6af6cbd45..8220886a2 100644 --- a/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch +++ b/purpur-server/minecraft-patches/features/0015-Option-for-Villager-Clerics-to-farm-Nether-Wart.patch @@ -135,7 +135,7 @@ index 6b99afb4f237b5d6def98f3e03492975b795bc95..234e9d4aca14bc2a2e138918be143051 brain.setMemory(MemoryModuleType.SECONDARY_JOB_SITE, list); } else { diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java -index 4b5b04a5e65c4ab5e00564f88df5a938f9ca1811..8f6e530d5ae170765440c451d82b113345de7c74 100644 +index 9f756a6505ab185f7dd1cb671891f2095251ce0e..09290db1fd3ca65b08862c6cfe3c9d21a77adc4f 100644 --- a/net/minecraft/world/entity/npc/Villager.java +++ b/net/minecraft/world/entity/npc/Villager.java @@ -265,7 +265,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler @@ -147,7 +147,7 @@ index 4b5b04a5e65c4ab5e00564f88df5a938f9ca1811..8f6e530d5ae170765440c451d82b1133 ImmutableSet.of(Pair.of(MemoryModuleType.JOB_SITE, MemoryStatus.VALUE_PRESENT)) ); } -@@ -917,7 +917,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -918,7 +918,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } public boolean hasFarmSeeds() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch index 5cc195d12..dcc668ddb 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/Villager.java.patch @@ -14,6 +14,14 @@ @Override public Brain getBrain() { return (Brain)super.getBrain(); +@@ -365,6 +_,7 @@ + return InteractionResult.CONSUME; + } + ++ if (this.level().purpurConfig.villagerAllowTrading) // Purpur - Add config for villager trading + this.startTrading(player); + } + @@ -707,7 +_,7 @@ @Override diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch index 92828b6c4..00596a3a6 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/npc/WanderingTrader.java.patch @@ -14,3 +14,14 @@ @Override protected void registerGoals() { this.goalSelector.addGoal(0, new FloatGoal(this)); +@@ -133,8 +_,10 @@ + return InteractionResult.CONSUME; + } + ++ if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading + this.setTradingPlayer(player); + this.openTradingScreen(player, this.getDisplayName(), 1); ++ } // Purpur - Add config for villager trading + } + + return InteractionResult.SUCCESS; diff --git a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java index 050477247..8aee040b8 100644 --- a/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/purpur-server/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -2230,6 +2230,7 @@ public class PurpurWorldConfig { public boolean villagerClericFarmersThrowWarts = true; public boolean villagerBypassMobGriefing = false; public boolean villagerTakeDamageFromWater = false; + public boolean villagerAllowTrading = true; private void villagerSettings() { villagerRidable = getBoolean("mobs.villager.ridable", villagerRidable); villagerRidableInWater = getBoolean("mobs.villager.ridable-in-water", villagerRidableInWater); @@ -2250,6 +2251,7 @@ public class PurpurWorldConfig { villagerClericFarmersThrowWarts = getBoolean("mobs.villager.cleric-wart-farmers-throw-warts-at-villagers", villagerClericFarmersThrowWarts); villagerBypassMobGriefing = getBoolean("mobs.villager.bypass-mob-griefing", villagerBypassMobGriefing); villagerTakeDamageFromWater = getBoolean("mobs.villager.takes-damage-from-water", villagerTakeDamageFromWater); + villagerAllowTrading = getBoolean("mobs.villager.allow-trading", villagerAllowTrading); } public boolean vindicatorRidable = false; @@ -2283,6 +2285,7 @@ public class PurpurWorldConfig { public double wanderingTraderTemptRange = 10.0D; public boolean wanderingTraderCanBeLeashed = false; public boolean wanderingTraderTakeDamageFromWater = false; + public boolean wanderingTraderAllowTrading = true; private void wanderingTraderSettings() { wanderingTraderRidable = getBoolean("mobs.wandering_trader.ridable", wanderingTraderRidable); wanderingTraderRidableInWater = getBoolean("mobs.wandering_trader.ridable-in-water", wanderingTraderRidableInWater); @@ -2298,6 +2301,7 @@ public class PurpurWorldConfig { wanderingTraderTemptRange = getDouble("mobs.wandering_trader.attributes.tempt_range", wanderingTraderTemptRange); wanderingTraderCanBeLeashed = getBoolean("mobs.wandering_trader.can-be-leashed", wanderingTraderCanBeLeashed); wanderingTraderTakeDamageFromWater = getBoolean("mobs.wandering_trader.takes-damage-from-water", wanderingTraderTakeDamageFromWater); + wanderingTraderAllowTrading = getBoolean("mobs.wandering_trader.allow-trading", wanderingTraderAllowTrading); } public boolean wardenRidable = false;