From 301eb12f9f254a8d532dce89c12116401ca5537b Mon Sep 17 00:00:00 2001 From: mbax Date: Sat, 13 Jun 2026 12:51:52 -0400 Subject: [PATCH 1/2] Handle Paper 26.2 shift in NMS->CraftItemStack. Now also looks for the asCraftMirror method which does the same thing. --- .../org/incendo/cloud/bukkit/parser/ItemStackParser.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java b/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java index 9c530ae1..4a0683fe 100644 --- a/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java +++ b/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java @@ -161,8 +161,11 @@ private static final class ModernParser implements ArgumentParser.FutureArgum CraftBukkitReflection.findMethod(ITEM_INPUT_CLASS, "createItemStack", int.class, boolean.class), CraftBukkitReflection.findMethod(ITEM_INPUT_CLASS, "createItemStack", int.class) ); - private static final Method AS_BUKKIT_COPY_METHOD = CraftBukkitReflection - .needMethod(CRAFT_ITEM_STACK_CLASS, "asBukkitCopy", NMS_ITEM_STACK_CLASS); + private static final Method AS_BUKKIT_COPY_METHOD = CraftBukkitReflection.firstNonNullOrThrow( + () -> "Couldn't find asBukkitCopy or asCraftMirror method on CraftItemStack", + CraftBukkitReflection.findMethod(CRAFT_ITEM_STACK_CLASS, "asBukkitCopy", NMS_ITEM_STACK_CLASS), + CraftBukkitReflection.findMethod(CRAFT_ITEM_STACK_CLASS, "asCraftMirror", NMS_ITEM_STACK_CLASS) + ); private static final Field ITEM_FIELD = CraftBukkitReflection.firstNonNullOrThrow( () -> "Couldn't find item field on ItemInput", CraftBukkitReflection.findField(ITEM_INPUT_CLASS, "b"), From 60853e5a1587c39989076ebf0cba3aa2aec3f61a Mon Sep 17 00:00:00 2001 From: Jason Penilla <11360596+jpenilla@users.noreply.github.com> Date: Wed, 17 Jun 2026 15:21:08 -0700 Subject: [PATCH 2/2] Rename field --- .../java/org/incendo/cloud/bukkit/parser/ItemStackParser.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java b/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java index 4a0683fe..b857a29c 100644 --- a/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java +++ b/cloud-bukkit/src/main/java/org/incendo/cloud/bukkit/parser/ItemStackParser.java @@ -161,7 +161,7 @@ private static final class ModernParser implements ArgumentParser.FutureArgum CraftBukkitReflection.findMethod(ITEM_INPUT_CLASS, "createItemStack", int.class, boolean.class), CraftBukkitReflection.findMethod(ITEM_INPUT_CLASS, "createItemStack", int.class) ); - private static final Method AS_BUKKIT_COPY_METHOD = CraftBukkitReflection.firstNonNullOrThrow( + private static final Method AS_BUKKIT_STACK_METHOD = CraftBukkitReflection.firstNonNullOrThrow( () -> "Couldn't find asBukkitCopy or asCraftMirror method on CraftItemStack", CraftBukkitReflection.findMethod(CRAFT_ITEM_STACK_CLASS, "asBukkitCopy", NMS_ITEM_STACK_CLASS), CraftBukkitReflection.findMethod(CRAFT_ITEM_STACK_CLASS, "asCraftMirror", NMS_ITEM_STACK_CLASS) @@ -281,7 +281,7 @@ public boolean hasExtraData() { final Object nmsItemStack = CREATE_ITEM_STACK_METHOD.getParameterCount() == 1 ? CREATE_ITEM_STACK_METHOD.invoke(this.itemInput, stackSize) : CREATE_ITEM_STACK_METHOD.invoke(this.itemInput, stackSize, true); - return (ItemStack) AS_BUKKIT_COPY_METHOD.invoke( + return (ItemStack) AS_BUKKIT_STACK_METHOD.invoke( null, nmsItemStack );