From 1e51c493238f91608639b9fb04b67737ff5b93e5 Mon Sep 17 00:00:00 2001 From: MisterVector 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 23fc4d8e14..dbbd1f3341 100644 --- a/src/main/java/net/minecraft/server/PlayerInteractManager.java +++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java @@ -378,8 +378,13 @@ public class PlayerInteractManager { 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(); + // Paper start - fixes MC-136865 + ItemStack itemstack2 = itemstack1.cloneItemStack(true); + if (itemstack2.isEmpty()) { + itemstack2.add(1); + } + // Paper end iblockdata.getBlock().a(this.world, this.player, blockposition, iblockdata, tileentity, itemstack2); } // CraftBukkit end -- 2.19.1