9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-19 15:09:15 +00:00
This commit is contained in:
XiaoMoMi
2025-12-08 04:49:30 +08:00
6 changed files with 55 additions and 0 deletions

View File

@@ -217,6 +217,9 @@ fun registerPaperTask(
languageVersion = JavaLanguageVersion.of(javaVersion)
}
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("-Xlog:redefine+class*=info")
jvmArgs("-XX:+AllowEnhancedClassRedefinition")

View File

@@ -1,8 +1,16 @@
package net.momirealms.craftengine.bukkit.entity.data;
import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections;
public class ArmorStandData<T> extends LivingEntityData<T> {
public static final ArmorStandData<Byte> ArmorStandFlags = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$BYTE, (byte) 0);
// 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) {
super(clazz, serializer, defaultValue);

View File

@@ -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);
}
}
}

View File

@@ -168,6 +168,8 @@ public class BukkitServerPlayer extends Player {
private int lastHitFurnitureTick;
// 控制展示实体可见距离
private double displayEntityViewDistance;
// 是否是基岩版
private Tristate isBedrock = Tristate.UNDEFINED;
public BukkitServerPlayer(BukkitCraftEngine plugin, @Nullable Channel channel) {
this.channel = channel;
@@ -1517,6 +1519,14 @@ public class BukkitServerPlayer extends Player {
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
public void addTrackedFurniture(int entityId, Furniture 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 boolean isBedrock();
@Override
public void remove() {
}

View File

@@ -9,6 +9,7 @@ import java.util.Objects;
public class VersionHelper {
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 boolean COMPONENT_RELEASE;
private static final int version;