From d78b50c9160dbe488a08c5efe02e76dd44741756 Mon Sep 17 00:00:00 2001 From: XiaoMoMi <972454774@qq.com> Date: Thu, 6 Nov 2025 13:46:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84entity-renderer=E9=80=89?= =?UTF-8?q?=E9=A1=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../BetterModelBlockEntityElement.java | 7 +++- .../BetterModelBlockEntityElementConfig.java | 40 ++++++++++++++++--- .../ItemDisplayBlockEntityElementConfig.java | 2 +- .../TextDisplayBlockEntityElementConfig.java | 2 +- .../core/block/properties/Property.java | 1 - 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElement.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElement.java index 1c9a0e5d3..e67ffdda1 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElement.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElement.java @@ -3,6 +3,7 @@ package net.momirealms.craftengine.bukkit.compatibility.model.bettermodel; import kr.toxicity.model.api.BetterModel; import kr.toxicity.model.api.data.renderer.ModelRenderer; import kr.toxicity.model.api.tracker.DummyTracker; +import kr.toxicity.model.api.tracker.TrackerModifier; import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityElement; import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.world.BlockPos; @@ -27,7 +28,11 @@ public class BetterModelBlockEntityElement implements BlockEntityElement { if (modelRenderer == null) { return null; } else { - return modelRenderer.create(this.location); + return modelRenderer.create(this.location, TrackerModifier.builder() + .viewRange(this.config.viewRange()) + .sightTrace(this.config.sightTrace()) + .shadow(this.config.shadow()) + .build()); } } diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElementConfig.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElementConfig.java index 7127e4966..b6fa362ad 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElementConfig.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/model/bettermodel/BetterModelBlockEntityElementConfig.java @@ -6,6 +6,7 @@ import net.momirealms.craftengine.core.block.entity.render.element.BlockEntityEl import net.momirealms.craftengine.core.util.ResourceConfigUtils; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.World; +import org.bukkit.Bukkit; import org.joml.Vector3f; import java.util.Map; @@ -15,28 +16,52 @@ public class BetterModelBlockEntityElementConfig implements BlockEntityElementCo private final float yaw; private final float pitch; private final String model; + private final float viewRange; + private final boolean sightTrace; + private final boolean shadow; - public BetterModelBlockEntityElementConfig(String model, Vector3f position, float yaw, float pitch) { + public BetterModelBlockEntityElementConfig(String model, + Vector3f position, + float yaw, + float pitch, + float viewRange, + boolean sightTrace, + boolean shadow) { this.pitch = pitch; this.position = position; this.yaw = yaw; this.model = model; + this.viewRange = viewRange; + this.sightTrace = sightTrace; + this.shadow = shadow; } public String model() { - return model; + return this.model; } public float pitch() { - return pitch; + return this.pitch; } public Vector3f position() { - return position; + return this.position; } public float yaw() { - return yaw; + return this.yaw; + } + + public float viewRange() { + return this.viewRange; + } + + public boolean sightTrace() { + return this.sightTrace; + } + + public boolean shadow() { + return this.shadow; } @Override @@ -59,7 +84,10 @@ public class BetterModelBlockEntityElementConfig implements BlockEntityElementCo model, ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", 0.5f), "position"), ResourceConfigUtils.getAsFloat(arguments.getOrDefault("yaw", 0f), "yaw"), - ResourceConfigUtils.getAsFloat(arguments.getOrDefault("pitch", 0f), "pitch") + ResourceConfigUtils.getAsFloat(arguments.getOrDefault("pitch", 0f), "pitch"), + ResourceConfigUtils.getAsFloat(arguments.getOrDefault("view-range", (float) Bukkit.getViewDistance() / 4.0F), "view-range"), + ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("sight-trace", true), "sight-trace"), + ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("shadow", true), "shadow") ); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java index ac9895063..d3a2d1dd8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/ItemDisplayBlockEntityElementConfig.java @@ -84,7 +84,7 @@ public class ItemDisplayBlockEntityElementConfig implements BlockEntityElementCo if (previousRotation.x != 0 || previousRotation.y != 0 || previousRotation.z != 0 || previousRotation.w != 1) { return null; } - return new ItemDisplayBlockEntityElement(this, pos, previous.entityId, previous.config.yRot != this.yRot || !previous.config.position.equals(this.position)); + return new ItemDisplayBlockEntityElement(this, pos, previous.entityId, previous.config.yRot != this.yRot || previous.config.xRot != this.xRot || !previous.config.position.equals(this.position)); } @Override diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/TextDisplayBlockEntityElementConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/TextDisplayBlockEntityElementConfig.java index 569b7583f..14f4a3210 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/TextDisplayBlockEntityElementConfig.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/entity/renderer/element/TextDisplayBlockEntityElementConfig.java @@ -72,7 +72,7 @@ public class TextDisplayBlockEntityElementConfig implements BlockEntityElementCo if (previousRotation.x != 0 || previousRotation.y != 0 || previousRotation.z != 0 || previousRotation.w != 1) { return null; } - return new TextDisplayBlockEntityElement(this, pos, previous.entityId, previous.config.yRot != this.yRot || !previous.config.position.equals(this.position)); + return new TextDisplayBlockEntityElement(this, pos, previous.entityId, previous.config.yRot != this.yRot || previous.config.xRot != this.xRot || !previous.config.position.equals(this.position)); } @Override diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/properties/Property.java b/core/src/main/java/net/momirealms/craftengine/core/block/properties/Property.java index e0bac9608..b0eb72d4b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/properties/Property.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/properties/Property.java @@ -4,7 +4,6 @@ import net.momirealms.craftengine.core.block.ImmutableBlockState; import net.momirealms.craftengine.core.item.context.BlockPlaceContext; import net.momirealms.craftengine.core.util.Direction; import net.momirealms.craftengine.core.util.HorizontalDirection; -import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.SegmentedAngle; import net.momirealms.sparrow.nbt.Tag; import org.jetbrains.annotations.NotNull;