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(