diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ItemUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ItemUtils.java index 618bfc927..8a8672cf9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ItemUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ItemUtils.java @@ -25,10 +25,9 @@ public class ItemUtils { .get(nmsInventory$getInventory); Object nmsItemStack = Reflections.method$CraftItemStack$asNMSCopy .invoke(null, itemStack); - nmsInventory$items.getClass() - .getMethod("set", int.class, Object.class) + Reflections.method$NonNullList$set .invoke(nmsInventory$items, slot, nmsItemStack); - } catch (InvocationTargetException | IllegalAccessException | NoSuchMethodException e) { + } catch (InvocationTargetException | IllegalAccessException e) { CraftEngine.instance().logger().warn("Failed to set item", e); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index f2c9d0f46..6ada3bc2d 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -3916,4 +3916,19 @@ public class Reflections { INVENTORY$ITEMS ) ); + + public static final Class clazz$NonNullList = requireNonNull( + ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("core.NonNullList") + ) + ); + + public static final Method method$NonNullList$set = requireNonNull( + ReflectionUtils.getMethod( + clazz$NonNullList, + Object.class, + int.class, + Object.class + ) + ); }