aboutsummaryrefslogtreecommitdiffhomepage
path: root/Spigot-Server-Patches/0388-MC-136865-Use-valid-item-for-enchantment-checks-on-b.patch
blob: 2ad0b9b833ae9bb641260789543c65223b9bf569 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
From 72b8d6b567dac8a398b608e0fee3ba0b569b1de2 Mon Sep 17 00:00:00 2001
From: MisterVector <whizkid3000@hotmail.com>
Date: Thu, 1 Nov 2018 14:50:05 -0700
Subject: [PATCH] MC-136865: Use valid item for enchantment checks on block
 break

When an itemstack runs out of durability, the amount is reduced to
0 which then marks the item as invalid. This causes the last unit
of durability to not apply enchantments as the enchantment level
check sees the item as a dud.

keep the clone of the item used to a non empty value so it represents
the item used.

diff --git a/src/main/java/net/minecraft/server/PlayerInteractManager.java b/src/main/java/net/minecraft/server/PlayerInteractManager.java
index 22378b6bc8..5e595b62e5 100644
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
@@ -380,10 +380,11 @@ public class PlayerInteractManager {
                     ItemStack itemstack1 = this.player.getItemInMainHand();
                     boolean flag1 = this.player.hasBlock(iblockdata);
 
+                    ItemStack itemstack2 = flag && flag1 && event.isDropItems() && !itemstack1.isEmpty() ? itemstack1.cloneItemStack() : ItemStack.a; // Paper - MC-136865 - clone before use
                     itemstack1.a(this.world, iblockdata, blockposition, this.player);
                     // CraftBukkit start - Check if block should drop items
                     if (flag && flag1 && event.isDropItems()) {
-                        ItemStack itemstack2 = itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack();
+                        //ItemStack itemstack2 = itemstack1.isEmpty() ? ItemStack.a : itemstack1.cloneItemStack(); // Paper - MC-136865 - move up
 
                         iblockdata.getBlock().a(this.world, this.player, blockposition, iblockdata, tileentity, itemstack2);
                     }
-- 
2.21.0