From eb0c525dd7579cddaf30909bb0e07c54d2a67ff4 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Wed, 12 Feb 2025 05:42:28 +0800 Subject: [PATCH] =?UTF-8?q?refactor(bukkit):=20=E4=BC=98=E5=8C=96=E7=89=A9?= =?UTF-8?q?=E5=93=81=E6=93=8D=E4=BD=9C=E5=8F=8D=E5=B0=84=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用 Reflections 类中已有的 method$NonNullList$set 方法替代动态获取的 set 方法 - 移除冗余的异常捕获 NoSuchMethodException- 新增 NonNullList 相关的类和方法引用 --- .../craftengine/bukkit/util/ItemUtils.java | 5 ++--- .../craftengine/bukkit/util/Reflections.java | 15 +++++++++++++++ 2 files changed, 17 insertions(+), 3 deletions(-) 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 + ) + ); }