9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00

Merge pull request #495 from jhqwqmc/dev

补全盔甲架数据
This commit is contained in:
XiaoMoMi
2025-12-07 16:56:24 +08:00
committed by GitHub
6 changed files with 55 additions and 0 deletions

View File

@@ -217,6 +217,9 @@ fun registerPaperTask(
languageVersion = JavaLanguageVersion.of(javaVersion) languageVersion = JavaLanguageVersion.of(javaVersion)
} }
systemProperties["com.mojang.eula.agree"] = true systemProperties["com.mojang.eula.agree"] = true
systemProperties["net.momirealms.craftengine.dev"] = true
jvmArgs("-Dsun.stdout.encoding=UTF-8")
jvmArgs("-Dsun.stderr.encoding=UTF-8")
jvmArgs("-Ddisable.watchdog=true") jvmArgs("-Ddisable.watchdog=true")
jvmArgs("-Xlog:redefine+class*=info") jvmArgs("-Xlog:redefine+class*=info")
jvmArgs("-XX:+AllowEnhancedClassRedefinition") jvmArgs("-XX:+AllowEnhancedClassRedefinition")

View File

@@ -1,8 +1,16 @@
package net.momirealms.craftengine.bukkit.entity.data; package net.momirealms.craftengine.bukkit.entity.data;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
public class ArmorStandData<T> extends LivingEntityData<T> { public class ArmorStandData<T> extends LivingEntityData<T> {
public static final ArmorStandData<Byte> ArmorStandFlags = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$BYTE, (byte) 0); public static final ArmorStandData<Byte> ArmorStandFlags = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$BYTE, (byte) 0);
// rotations // rotations
public static final ArmorStandData<Object> HeadPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_HEAD_POSE);
public static final ArmorStandData<Object> BodyPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_BODY_POSE);
public static final ArmorStandData<Object> LeftArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_ARM_POSE);
public static final ArmorStandData<Object> RightArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE);
public static final ArmorStandData<Object> LeftLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_LEG_POSE);
public static final ArmorStandData<Object> RightLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE);
public ArmorStandData(Class<?> clazz, Object serializer, T defaultValue) { public ArmorStandData(Class<?> clazz, Object serializer, T defaultValue) {
super(clazz, serializer, defaultValue); super(clazz, serializer, defaultValue);

View File

@@ -4644,4 +4644,35 @@ public final class CoreReflections {
"world.scores.PlayerTeam" "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);
}
}
} }

View File

@@ -168,6 +168,8 @@ public class BukkitServerPlayer extends Player {
private int lastHitFurnitureTick; private int lastHitFurnitureTick;
// 控制展示实体可见距离 // 控制展示实体可见距离
private double displayEntityViewDistance; private double displayEntityViewDistance;
// 是否是基岩版
private Tristate isBedrock = Tristate.UNDEFINED;
public BukkitServerPlayer(BukkitCraftEngine plugin, @Nullable Channel channel) { public BukkitServerPlayer(BukkitCraftEngine plugin, @Nullable Channel channel) {
this.channel = channel; this.channel = channel;
@@ -1517,6 +1519,14 @@ public class BukkitServerPlayer extends Player {
return FastNMS.INSTANCE.method$Inventory$clearOrCountMatchingItems(inventory, predicate, count, craftSlots); return FastNMS.INSTANCE.method$Inventory$clearOrCountMatchingItems(inventory, predicate, count, craftSlots);
} }
@Override
public boolean isBedrock() {
if (this.isBedrock == Tristate.UNDEFINED) {
this.isBedrock = Tristate.of(this.plugin.compatibilityManager().isBedrockPlayer(this));
}
return this.isBedrock.asBoolean();
}
@Override @Override
public void addTrackedFurniture(int entityId, Furniture furniture) { public void addTrackedFurniture(int entityId, Furniture furniture) {
this.trackedFurniture.put(entityId, new VirtualCullableObject(furniture)); this.trackedFurniture.put(entityId, new VirtualCullableObject(furniture));

View File

@@ -232,6 +232,8 @@ public abstract class Player extends AbstractEntity implements NetWorkUser {
public abstract int clearOrCountMatchingInventoryItems(Key itemId, int count); public abstract int clearOrCountMatchingInventoryItems(Key itemId, int count);
public abstract boolean isBedrock();
@Override @Override
public void remove() { public void remove() {
} }

View File

@@ -9,6 +9,7 @@ import java.util.Objects;
public class VersionHelper { public class VersionHelper {
public static final boolean PREMIUM = true; public static final boolean PREMIUM = true;
public static final boolean IS_RUNNING_IN_DEV = Boolean.getBoolean("net.momirealms.craftengine.dev");
public static final MinecraftVersion MINECRAFT_VERSION; public static final MinecraftVersion MINECRAFT_VERSION;
public static final boolean COMPONENT_RELEASE; public static final boolean COMPONENT_RELEASE;
private static final int version; private static final int version;