diff --git a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java index ada3ed24c..db248009b 100644 --- a/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java +++ b/common/src/backend/java/dev/engine_room/flywheel/backend/engine/LightStorage.java @@ -250,10 +250,9 @@ public class LightStorage implements Effect { for (int x = -1; x < 17; x++) { blockPos.set(xMin + x, yMin + y, zMin + z); - boolean isFullBlock = level.getBlockState(blockPos) - .isCollisionShapeFullBlock(level, blockPos); + var blockState = level.getBlockState(blockPos); - if (isFullBlock) { + if (blockState.canOcclude() && blockState.isCollisionShapeFullBlock(level, blockPos)) { bitSet.set(index); } diff --git a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java index 56b8b7f6e..4ab93ab49 100644 --- a/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java +++ b/common/src/lib/java/dev/engine_room/flywheel/lib/transform/Rotate.java @@ -99,8 +99,16 @@ public interface Rotate> { }; } + default Self rotateTo(float fromX, float fromY, float fromZ, float toX, float toY, float toZ) { + return rotate(new Quaternionf().rotateTo(fromX, fromY, fromZ, toX, toY, toZ)); + } + default Self rotateTo(Vector3fc from, Vector3fc to) { - return rotate(new Quaternionf().rotateTo(from, to)); + return rotateTo(from.x(), from.y(), from.z(), to.x(), to.y(), to.z()); + } + + default Self rotateTo(Direction from, Direction to) { + return rotateTo(from.getStepX(), from.getStepY(), from.getStepZ(), to.getStepX(), to.getStepY(), to.getStepZ()); } @SuppressWarnings("unchecked")