From fae874646cd001537c05e6f81c561f68a4205e01 Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Sun, 7 Dec 2025 07:16:16 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E7=9B=94=E7=94=B2=E6=9E=B6?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/entity/data/ArmorStandData.java | 8 +++++ .../reflection/minecraft/CoreReflections.java | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java index b57c49046..6ebb93b9f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java @@ -1,8 +1,16 @@ package net.momirealms.craftengine.bukkit.entity.data; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; + public class ArmorStandData extends LivingEntityData { public static final ArmorStandData ArmorStandFlags = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$BYTE, (byte) 0); // rotations + public static final ArmorStandData HeadPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_HEAD_POSE); + public static final ArmorStandData BodyPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_BODY_POSE); + public static final ArmorStandData LeftArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_ARM_POSE); + public static final ArmorStandData RightArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE); + public static final ArmorStandData LeftLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_LEG_POSE); + public static final ArmorStandData RightLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE); public ArmorStandData(Class clazz, Object serializer, T defaultValue) { super(clazz, serializer, defaultValue); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index c1f11650e..06ea0d4a1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -4644,4 +4644,35 @@ public final class CoreReflections { "world.scores.PlayerTeam" ) ); + + public static final Class clazz$Rotations = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "core.Vector3f", + "core.Rotations" + ) + ); + + public static final Constructor constructor$Rotations = requireNonNull( + ReflectionUtils.getConstructor(clazz$Rotations, float.class, float.class, float.class) + ); + + public static final Object instance$ArmorStand$DEFAULT_HEAD_POSE; + public static final Object instance$ArmorStand$DEFAULT_BODY_POSE; + public static final Object instance$ArmorStand$DEFAULT_LEFT_ARM_POSE; + public static final Object instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE; + public static final Object instance$ArmorStand$DEFAULT_LEFT_LEG_POSE; + public static final Object instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE; + + static { + try { + instance$ArmorStand$DEFAULT_HEAD_POSE = constructor$Rotations.newInstance(0.0F, 0.0F, 0.0F); + instance$ArmorStand$DEFAULT_BODY_POSE = constructor$Rotations.newInstance(0.0F, 0.0F, 0.0F); + instance$ArmorStand$DEFAULT_LEFT_ARM_POSE = constructor$Rotations.newInstance(-10.0F, 0.0F, -10.0F); + instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE = constructor$Rotations.newInstance(-15.0F, 0.0F, 10.0F); + instance$ArmorStand$DEFAULT_LEFT_LEG_POSE = constructor$Rotations.newInstance(-1.0F, 0.0F, -1.0F); + instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE = constructor$Rotations.newInstance(1.0F, 0.0F, 1.0F); + } catch (ReflectiveOperationException e) { + throw new ReflectionInitException("Failed to init ArmorStand", e); + } + } }