mirror of
https://github.com/PaperMC/Paper.git
synced 2024-12-30 16:19:03 +01:00
MC-136865: Pass original itemstack 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.
This commit is contained in:
parent
aee814c4b3
commit
ecc751796d
1 changed files with 34 additions and 0 deletions
|
@ -0,0 +1,34 @@
|
|||
From 0000000000000000000000000000000000000000 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 23fc4d8e..dbbd1f33 100644
|
||||
--- a/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
||||
+++ b/src/main/java/net/minecraft/server/PlayerInteractManager.java
|
||||
@@ -0,0 +0,0 @@ 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
|
||||
--
|
Loading…
Reference in a new issue