From 944ed7d223fc7a60dd1382467b6d7d71fee784e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Mon, 2 Aug 2021 23:25:30 +0200 Subject: [PATCH] Improve wrenching behavior for disk drive and computer. --- .../cil/oc2/common/block/ComputerBlock.java | 19 +++++++------- .../cil/oc2/common/block/DiskDriveBlock.java | 25 ++++++++++++------- 2 files changed, 26 insertions(+), 18 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java index 4104063b..a6d9e36b 100644 --- a/src/main/java/li/cil/oc2/common/block/ComputerBlock.java +++ b/src/main/java/li/cil/oc2/common/block/ComputerBlock.java @@ -25,10 +25,7 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.CompoundNBT; import net.minecraft.state.StateContainer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.ActionResultType; -import net.minecraft.util.Direction; -import net.minecraft.util.Hand; -import net.minecraft.util.NonNullList; +import net.minecraft.util.*; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockRayTraceResult; import net.minecraft.util.math.shapes.ISelectionContext; @@ -167,21 +164,25 @@ public final class ComputerBlock extends HorizontalBlock { final ComputerTileEntity computer = (ComputerTileEntity) tileEntity; final ItemStack heldItem = player.getItemInHand(hand); - if (!world.isClientSide) { - if (Wrenches.isWrench(heldItem)) { - if (player instanceof ServerPlayerEntity) { + if (Wrenches.isWrench(heldItem)) { + if (!player.isShiftKeyDown()) { + if (!world.isClientSide() && player instanceof ServerPlayerEntity) { computer.openInventoryScreen((ServerPlayerEntity) player); } - } else { + return ActionResultType.sidedSuccess(world.isClientSide()); + } + } else { + if (!world.isClientSide()) { if (player.isShiftKeyDown()) { computer.start(); } else if (player instanceof ServerPlayerEntity) { computer.openTerminalScreen((ServerPlayerEntity) player); } } + return ActionResultType.sidedSuccess(world.isClientSide()); } - return ActionResultType.sidedSuccess(world.isClientSide()); + return super.use(state, world, pos, player, hand, hit); } @Override diff --git a/src/main/java/li/cil/oc2/common/block/DiskDriveBlock.java b/src/main/java/li/cil/oc2/common/block/DiskDriveBlock.java index 9f08e0af..9bba5d50 100644 --- a/src/main/java/li/cil/oc2/common/block/DiskDriveBlock.java +++ b/src/main/java/li/cil/oc2/common/block/DiskDriveBlock.java @@ -54,18 +54,25 @@ public final class DiskDriveBlock extends HorizontalBlock { return super.use(state, world, pos, player, hand, hit); } - if (!world.isClientSide()) { - final DiskDriveTileEntity diskDrive = (DiskDriveTileEntity) tileEntity; - final ItemStack stack = player.getItemInHand(hand); - - if (player.isShiftKeyDown()) { - diskDrive.eject(); - } else { - player.setItemInHand(hand, diskDrive.insert(stack)); + final DiskDriveTileEntity diskDrive = (DiskDriveTileEntity) tileEntity; + final ItemStack heldStack = player.getItemInHand(hand); + if (player.isShiftKeyDown()) { + if (diskDrive.canEject()) { + if (!world.isClientSide()) { + diskDrive.eject(player); + } + return ActionResultType.sidedSuccess(world.isClientSide()); + } + } else { + if (diskDrive.canInsert(heldStack)) { + if (!world.isClientSide()) { + player.setItemInHand(hand, diskDrive.insert(heldStack, player)); + } + return ActionResultType.sidedSuccess(world.isClientSide()); } } - return ActionResultType.sidedSuccess(world.isClientSide()); + return super.use(state, world, pos, player, hand, hit); } ///////////////////////////////////////////////////////////////////