From c1983f7a2dd4b74c59031ece90aa5296a1f73b8c Mon Sep 17 00:00:00 2001 From: AngelBottomless <35677394+aria1th@users.noreply.github.com> Date: Thu, 5 May 2022 18:15:45 +0900 Subject: [PATCH] Fix KIBE Entangled Bucket bug. Thanks to aria1th. Also, this fixes creative tank not being actually creative when its used without item slots. --- .../fluid/TankUnitBaseBlockEntity.java | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/src/main/java/techreborn/blockentity/storage/fluid/TankUnitBaseBlockEntity.java b/src/main/java/techreborn/blockentity/storage/fluid/TankUnitBaseBlockEntity.java index 190ec2a09..00f4e8be4 100644 --- a/src/main/java/techreborn/blockentity/storage/fluid/TankUnitBaseBlockEntity.java +++ b/src/main/java/techreborn/blockentity/storage/fluid/TankUnitBaseBlockEntity.java @@ -108,17 +108,27 @@ public class TankUnitBaseBlockEntity extends MachineBaseBlockEntity implements I return; } - if ((canDrainTransfer() && FluidUtils.drainContainers(tank, inventory, 0, 1)) - || FluidUtils.fillContainers(tank, inventory, 0, 1)) { - - if (type == TRContent.TankUnit.CREATIVE) { - if (!tank.isEmpty() && !tank.isFull()) { - tank.setFluidAmount(tank.getFluidValueCapacity()); - } + if (canDrainTransfer() && FluidUtils.isContainer(inventory.getStack(0))) { + boolean didSomething = false; + if(FluidUtils.drainContainers(tank, inventory, 0, 1)){ + didSomething = true; + } + if(!didSomething && FluidUtils.fillContainers(tank, inventory, 0, 1)){ + didSomething = true; + } + if(didSomething){ + if(inventory.getStack(1).isEmpty() && !inventory.getStack(0).isEmpty() && inventory.getStack(0).getCount() == 1){ + inventory.setStack(1, inventory.getStack(0)); + inventory.setStack(0, ItemStack.EMPTY); + } + syncWithAll(); + } + } + if (type == TRContent.TankUnit.CREATIVE) { + if (!tank.isEmpty() && !tank.isFull()) { + tank.setFluidAmount(tank.getFluidValueCapacity()); } - syncWithAll(); } - // Void excessive fluid in creative tank (#2205) if (type == TRContent.TankUnit.CREATIVE && tank.isFull()) { FluidUtils.drainContainers(tank, inventory, 0, 1, true);