From 2e27d966ec12517bc3f0a16531787cb358de6bd5 Mon Sep 17 00:00:00 2001 From: StarWishsama Date: Wed, 17 Jul 2024 13:07:16 +0800 Subject: [PATCH] feat(mc): init 1.21 support Due to Paper ItemStack internal system change, we have wrap SlimefunItemStack. this may cause some problems. See also: https://github.com/PaperMC/Paper/pull/10852/ --- .../CSCoreLibPlugin/general/Inventory/ChestMenu.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/me/mrCookieSlime/CSCoreLibPlugin/general/Inventory/ChestMenu.java b/src/main/java/me/mrCookieSlime/CSCoreLibPlugin/general/Inventory/ChestMenu.java index 342cf3753b..c58a643b42 100644 --- a/src/main/java/me/mrCookieSlime/CSCoreLibPlugin/general/Inventory/ChestMenu.java +++ b/src/main/java/me/mrCookieSlime/CSCoreLibPlugin/general/Inventory/ChestMenu.java @@ -127,9 +127,17 @@ public ChestMenu addPlayerInventoryClickHandler(MenuClickHandler handler) { * @return The ChestMenu Instance */ public ChestMenu addItem(int slot, ItemStack item) { + // do shallow copy due to Paper ItemStack system change + // See also: https://github.com/PaperMC/Paper/pull/10852 + ItemStack clone = item == null ? null : new ItemStack(item.getType(), item.getAmount()); + + if (clone != null && item.hasItemMeta()) { + clone.setItemMeta(item.getItemMeta()); + } + setSize((int) (Math.max(getSize(), Math.ceil((slot + 1) / 9d) * 9))); - this.items.set(slot, item); - this.inventory.setItem(slot, item); + this.items.set(slot, clone); + this.inventory.setItem(slot, clone); return this; }