mirror of
https://github.com/PaperMC/Paper.git
synced 2024-10-29 23:09:33 +01:00
9147456fc9
Upstream has released updates that appear to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing CraftBukkit Changes: ab8ace685 SPIGOT-7236: Bone meal doesn't increase use statistic 7dcb59b8e Avoid switch on material in previous commit Spigot Changes: 19641c75 SPIGOT-7235: World.Spigot#strikeLightningEffect doesn't do anything
30 lines
1.7 KiB
Diff
30 lines
1.7 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <blake.galbreath@gmail.com>
|
|
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.
|
|
|
|
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 e3db573f10b7a3f8f605a11dc886859c68168467..105f8fcbbc5c7c384b77ca8eb768f1147d6ce4b2 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
@@ -980,6 +980,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 (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) {
|