From 52ae451a230cca4d818be7a87bffe117ca95b87e Mon Sep 17 00:00:00 2001 From: DBotThePony Date: Sun, 15 Aug 2021 00:03:07 +0700 Subject: [PATCH] Get rid of up and down facings --- .../mc/otm/block/BlockMatteryRotatable.java | 25 +++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/src/main/java/ru/dbotthepony/mc/otm/block/BlockMatteryRotatable.java b/src/main/java/ru/dbotthepony/mc/otm/block/BlockMatteryRotatable.java index ddb8cecf1..fd8350554 100644 --- a/src/main/java/ru/dbotthepony/mc/otm/block/BlockMatteryRotatable.java +++ b/src/main/java/ru/dbotthepony/mc/otm/block/BlockMatteryRotatable.java @@ -6,11 +6,20 @@ import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.properties.EnumProperty; +import org.apache.commons.lang3.ArrayUtils; +import ru.dbotthepony.mc.otm.OverdriveThatMatters; import javax.annotation.Nullable; +import java.util.Arrays; public abstract class BlockMatteryRotatable extends BlockMattery { - public static final EnumProperty FACING = EnumProperty.create("facing", Direction.class); + public static final EnumProperty FACING = EnumProperty.create( + "facing", + Direction.class, + Direction.SOUTH, + Direction.WEST, + Direction.NORTH, + Direction.EAST); public BlockMatteryRotatable() { super(); @@ -26,7 +35,19 @@ public abstract class BlockMatteryRotatable extends BlockMattery { @Nullable @Override public BlockState getStateForPlacement(BlockPlaceContext context) { - return this.defaultBlockState().setValue(FACING, faceToPlayer(context) ? context.getNearestLookingDirection().getOpposite() : context.getNearestLookingDirection()); + Direction find_first = null; + + for (Direction direction : context.getNearestLookingDirections()) { + if (FACING.getPossibleValues().contains(direction)) { + find_first = direction; + break; + } + } + + if (find_first == null) + return this.defaultBlockState(); + + return this.defaultBlockState().setValue(FACING, faceToPlayer(context) ? find_first.getOpposite() : find_first); } public boolean faceToPlayer(BlockPlaceContext context) {