From ab3b4db541aba327fc8c83be06c55522bde11335 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Mon, 31 Mar 2025 17:16:40 +0800 Subject: [PATCH] =?UTF-8?q?refactor(bukkit):=20=E9=87=8D=E6=9E=84=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E7=9B=B8=E5=85=B3=E5=8F=8D=E5=B0=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/furniture/ShulkerHitBox.java | 2 +- .../craftengine/bukkit/util/Reflections.java | 24 ++++++------------- 2 files changed, 8 insertions(+), 18 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/ShulkerHitBox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/ShulkerHitBox.java index b2266a5c3..37261b4ea 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/ShulkerHitBox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/ShulkerHitBox.java @@ -63,7 +63,7 @@ public class ShulkerHitBox extends AbstractHitBox { Reflections.method$FriendlyByteBuf$writeVarIntArray.invoke(friendlyByteBuf, (Object) new int[] {entityIds[1]}); packets.accept(Reflections.constructor$ClientboundSetPassengersPacket.newInstance(friendlyByteBuf)); if (VersionHelper.isVersionNewerThan1_20_5()) { - Object attributeInstance = Reflections.constructor$AttributeInstance.newInstance(Reflections.instance$Attributes$SCALE, (Consumer) (o) -> {}); + Object attributeInstance = Reflections.constructor$AttributeInstance.newInstance(Reflections.instance$Holder$Attribute$scale, (Consumer) (o) -> {}); Reflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, scale); packets.accept(Reflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityIds[1], Collections.singletonList(attributeInstance))); } 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 59fda7a65..f86339c9a 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 @@ -2808,6 +2808,7 @@ public class Reflections { public static final Object instance$Holder$Attribute$block_break_speed; public static final Object instance$Holder$Attribute$block_interaction_range; + public static final Object instance$Holder$Attribute$scale; static { try { @@ -2821,9 +2822,15 @@ public class Reflections { @SuppressWarnings("unchecked") Optional blockInteractionRangeHolder = (Optional) method$Registry$getHolder0.invoke(instance$BuiltInRegistries$ATTRIBUTE, block_interaction_range); instance$Holder$Attribute$block_interaction_range = blockInteractionRangeHolder.orElse(null); + + Object scale = method$ResourceLocation$fromNamespaceAndPath.invoke(null, "minecraft", VersionHelper.isVersionNewerThan1_21_2() ? "scale" : "generic.scale"); + @SuppressWarnings("unchecked") + Optional scaleHolder = (Optional) method$Registry$getHolder0.invoke(instance$BuiltInRegistries$ATTRIBUTE, scale); + instance$Holder$Attribute$scale = scaleHolder.orElse(null); } else { instance$Holder$Attribute$block_break_speed = null; instance$Holder$Attribute$block_interaction_range = null; + instance$Holder$Attribute$scale = null; } } catch (ReflectiveOperationException e) { throw new RuntimeException(e); @@ -5862,23 +5869,6 @@ public class Reflections { ) ); - // 1.20.5+ - public static final Field field$Attributes$SCALE = - ReflectionUtils.getDeclaredField( - clazz$Attributes, "SCALE" - ); - - // 1.20.5+ - public static final Object instance$Attributes$SCALE = Optional.ofNullable(field$Attributes$SCALE) - .map(it -> { - try { - return it.get(null); - } catch (IllegalAccessException e) { - throw new RuntimeException(e); - } - }) - .orElse(null); - // 1.20.5+ public static final Constructor constructor$AttributeInstance = ReflectionUtils.getConstructor(