geforkt von Mirrors/Paper
4104545b11
"It was from a different time before books were as jank as they are now. As time has gone on they've only proven to be worse and worse."
55 Zeilen
2.6 KiB
Diff
55 Zeilen
2.6 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: BillyGalbreath <blake.galbreath@gmail.com>
|
|
Date: Tue, 1 Jun 2021 22:05:08 -0500
|
|
Subject: [PATCH] Reset villager inventory on cancelled pickup event
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/SimpleContainer.java b/src/main/java/net/minecraft/world/SimpleContainer.java
|
|
index 502e29644504aabe3834351d3b479e21bd8f4be7..4e47ea7359ae56efeb2b74161dc9e7387589415b 100644
|
|
--- a/src/main/java/net/minecraft/world/SimpleContainer.java
|
|
+++ b/src/main/java/net/minecraft/world/SimpleContainer.java
|
|
@@ -34,6 +34,16 @@ public class SimpleContainer implements Container, StackedContentsCompatible {
|
|
return this.items;
|
|
}
|
|
|
|
+ // Paper start
|
|
+ public void setContents(List<ItemStack> items) {
|
|
+ this.items.clear();
|
|
+ for(int i = 0; i < items.size(); i++) {
|
|
+ this.items.set(i, items.get(i));
|
|
+ }
|
|
+ this.setChanged();
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
public void onOpen(CraftHumanEntity who) {
|
|
this.transaction.add(who);
|
|
}
|
|
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 18b35c8d2160d24c31483edef13cc5e8d93ed09b..27530389690ec329bd92a722e4faf87e367bce91 100644
|
|
--- a/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
+++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java
|
|
@@ -888,15 +888,19 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
|
|
}
|
|
|
|
// CraftBukkit start
|
|
- ItemStack remaining = new SimpleContainer(inventorysubcontainer).addItem(itemstack);
|
|
- if (CraftEventFactory.callEntityPickupItemEvent(this, item, remaining.getCount(), false).isCancelled()) {
|
|
+ // Paper start
|
|
+ List<ItemStack> contentsSnapshot = new java.util.ArrayList<>(inventorysubcontainer.getContents());
|
|
+ ItemStack itemstack1 = inventorysubcontainer.addItem(itemstack);
|
|
+ if (CraftEventFactory.callEntityPickupItemEvent(this, item, itemstack1.getCount(), false).isCancelled()) {
|
|
+ inventorysubcontainer.setContents(contentsSnapshot);
|
|
+ // Paper end
|
|
return;
|
|
}
|
|
// CraftBukkit end
|
|
|
|
this.onItemPickup(item);
|
|
this.take(item, itemstack.getCount());
|
|
- ItemStack itemstack1 = inventorysubcontainer.addItem(itemstack);
|
|
+ // ItemStack itemstack1 = inventorysubcontainer.a(itemstack); // Paper - moved up
|
|
|
|
if (itemstack1.isEmpty()) {
|
|
item.discard();
|