diff --git a/src/main/java/li/cil/oc2/common/item/WrenchItem.java b/src/main/java/li/cil/oc2/common/item/WrenchItem.java index eb9083d1..7a05281d 100644 --- a/src/main/java/li/cil/oc2/common/item/WrenchItem.java +++ b/src/main/java/li/cil/oc2/common/item/WrenchItem.java @@ -8,11 +8,32 @@ import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemUseContext; import net.minecraft.util.ActionResultType; +import net.minecraft.util.Direction; +import net.minecraft.util.Rotation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IWorldReader; import net.minecraft.world.World; +import java.util.Objects; + public final class WrenchItem extends ModItem { + @Override + public ActionResultType onItemUseFirst(final ItemStack stack, final ItemUseContext context) { + final World level = context.getLevel(); + final BlockPos pos = context.getClickedPos(); + final Direction face = context.getClickedFace(); + if (face == Direction.UP || face == Direction.DOWN) { + final BlockState blockState = level.getBlockState(pos); + final BlockState rotatedState = blockState.rotate(level, pos, face == Direction.UP ? Rotation.CLOCKWISE_90 : Rotation.COUNTERCLOCKWISE_90); + if (!Objects.equals(blockState, rotatedState)) { + level.setBlockAndUpdate(pos, rotatedState); + return ActionResultType.sidedSuccess(level.isClientSide()); + } + } + + return super.onItemUseFirst(stack, context); + } + @Override public ActionResultType useOn(final ItemUseContext context) { final PlayerEntity player = context.getPlayer();