diff options
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.patch | 31 |
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) { |