From 8b49039894af8cb2513426540e407fe960175cd4 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Wed, 2 Apr 2025 21:41:04 +0800 Subject: [PATCH] fix facing mirror --- .../bukkit/block/behavior/BukkitBlockBehavior.java | 8 ++++---- .../craftengine/bukkit/util/Reflections.java | 12 ++++++++++++ 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java index 93ad23eb6..86b481813 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/BukkitBlockBehavior.java @@ -61,14 +61,14 @@ public class BukkitBlockBehavior extends AbstractBlockBehavior { } }); HARD_CODED_PROPERTY_DATA.put("facing_clockwise", (behavior, property) -> { - if (property.valueClass() == Direction.class) { + if (property.valueClass() == HorizontalDirection.class) { @SuppressWarnings("unchecked") - Property directionProperty = (Property) property; + Property directionProperty = (Property) property; behavior.rotateFunction = (thisBlock, blockState, rotation) -> - blockState.with(directionProperty, rotation.rotate(blockState.get(directionProperty))) + blockState.with(directionProperty, rotation.rotate(blockState.get(directionProperty).toDirection()).toHorizontalDirection()) .customBlockState().handle(); behavior.mirrorFunction = (thisBlock, blockState, mirror) -> { - Rotation rotation = mirror.getRotation(blockState.get(directionProperty)); + Rotation rotation = mirror.getRotation(blockState.get(directionProperty).toDirection()); return behavior.rotateFunction.rotate(thisBlock, blockState, rotation); }; } 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 615964127..6932a75b8 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 @@ -6038,4 +6038,16 @@ public class Reflections { clazz$BlockBehaviour, clazz$BlockState, clazz$BlockState, clazz$Mirror ) ); + + public static final Method method$BlockStateBase$rotate = requireNonNull( + ReflectionUtils.getMethod( + clazz$BlockStateBase, clazz$BlockState, clazz$Rotation + ) + ); + + public static final Method method$BlockStateBase$mirror = requireNonNull( + ReflectionUtils.getMethod( + clazz$BlockStateBase, clazz$BlockState, clazz$Mirror + ) + ); }