PaperMC/Spigot-Server-Patches/0397-Prevent-consuming-the-wrong-itemstack.patch
Aikar 57dd397155
Updated Upstream (Bukkit/CraftBukkit)
Upstream has released updates that appears to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing

Bukkit Changes:
b999860d SPIGOT-2304: Add LootGenerateEvent

CraftBukkit Changes:
77fd87e4 SPIGOT-2304: Implement LootGenerateEvent
a1a705ee SPIGOT-5566: Doused campfires & fires should call EntityChangeBlockEvent
41712edd SPIGOT-5707: PersistentDataHolder not Persistent on API dropped Item
2020-05-01 18:03:57 -04:00

48 lines
2.3 KiB
Diff

From d34d69baed9c9e1ed4e99560e1c9c2f9d513a6e1 Mon Sep 17 00:00:00 2001
From: kickash32 <kickash32@gmail.com>
Date: Mon, 19 Aug 2019 19:42:35 +0500
Subject: [PATCH] Prevent consuming the wrong itemstack
diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java
index aecd5011cb..24594aa0e9 100644
--- a/src/main/java/net/minecraft/server/EntityLiving.java
+++ b/src/main/java/net/minecraft/server/EntityLiving.java
@@ -2896,10 +2896,13 @@ public abstract class EntityLiving extends Entity {
this.datawatcher.set(EntityLiving.ao, (byte) j);
}
- public void c(EnumHand enumhand) {
+ // Paper start -- OBFHELPER and forwarder to method with forceUpdate parameter
+ public void c(EnumHand enumhand) { this.updateActiveItem(enumhand, false); }
+ public void updateActiveItem(EnumHand enumhand, boolean forceUpdate) {
+ // Paper end
ItemStack itemstack = this.b(enumhand);
- if (!itemstack.isEmpty() && !this.isHandRaised()) {
+ if (!itemstack.isEmpty() && !this.isHandRaised() || forceUpdate) { // Paper use override flag
this.activeItem = itemstack;
this.bl = itemstack.k();
if (!this.world.isClientSide) {
@@ -2975,6 +2978,7 @@ public abstract class EntityLiving extends Entity {
this.clearActiveItem();
} else {
if (!this.activeItem.isEmpty() && this.isHandRaised()) {
+ this.updateActiveItem(this.getRaisedHand(), true); // Paper
this.b(this.activeItem, 16);
// CraftBukkit start - fire PlayerItemConsumeEvent
ItemStack itemstack;
@@ -3005,8 +3009,8 @@ public abstract class EntityLiving extends Entity {
this.a(this.getRaisedHand(), itemstack);
// CraftBukkit end
this.dH();
- // Paper start - if the replacement is anything but the default, update the client inventory
- if (this instanceof EntityPlayer && !com.google.common.base.Objects.equal(defaultReplacement, itemstack)) {
+ // Paper start
+ if (this instanceof EntityPlayer) {
((EntityPlayer) this).getBukkitEntity().updateInventory();
}
// Paper end
--
2.26.2