aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch')
-rw-r--r--patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch31
1 files changed, 31 insertions, 0 deletions
diff --git a/patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch b/patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch
new file mode 100644
index 0000000000..cabbab29ff
--- /dev/null
+++ b/patches/removed/0500-Fix-curing-zombie-villager-discount-exploit.patch
@@ -0,0 +1,31 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: BillyGalbreath <[email protected]>
+Date: Tue, 8 Dec 2020 20:14:20 -0600
+Subject: [PATCH] Fix curing zombie villager discount exploit
+
+This fixes the exploit used to gain absurd trading discounts with infecting
+and curing a villager on repeat by simply resetting the relevant part of
+the reputation when it is cured.
+
+This patch has been removed, as MC-181190 was fixed by mojang in 23w31a.
+
+diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+index f58be4e2529759cc64df2c70a69ef56eabbb762d..84cee8fb09f90424438de336f60d9388da1b39de 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
++++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
+@@ -1009,6 +1009,15 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
+ @Override
+ public void onReputationEventFrom(ReputationEventType interaction, Entity entity) {
+ if (interaction == ReputationEventType.ZOMBIE_VILLAGER_CURED) {
++ // Paper start - fix MC-181190
++ if (this.level().paperConfig().fixes.fixCuringZombieVillagerDiscountExploit) {
++ final GossipContainer.EntityGossips playerReputation = this.getGossips().gossips.get(entity.getUUID());
++ if (playerReputation != null) {
++ playerReputation.remove(GossipType.MAJOR_POSITIVE);
++ playerReputation.remove(GossipType.MINOR_POSITIVE);
++ }
++ }
++ // Paper end
+ this.gossips.add(entity.getUUID(), GossipType.MAJOR_POSITIVE, 20);
+ this.gossips.add(entity.getUUID(), GossipType.MINOR_POSITIVE, 25);
+ } else if (interaction == ReputationEventType.TRADE) {