From 8a9fc0045b4e97c531353fcb207f672f99d58bcb Mon Sep 17 00:00:00 2001 From: Ghzdude <44148655+ghzdude@users.noreply.github.com> Date: Fri, 31 Jan 2025 22:19:20 -0700 Subject: [PATCH] greatly simplify bucket logic --- .../metaitem/stats/ItemFluidContainer.java | 49 ++++++------------- 1 file changed, 16 insertions(+), 33 deletions(-) diff --git a/src/main/java/gregtech/api/items/metaitem/stats/ItemFluidContainer.java b/src/main/java/gregtech/api/items/metaitem/stats/ItemFluidContainer.java index 32ced4dc5d0..8b39d2bef88 100644 --- a/src/main/java/gregtech/api/items/metaitem/stats/ItemFluidContainer.java +++ b/src/main/java/gregtech/api/items/metaitem/stats/ItemFluidContainer.java @@ -65,25 +65,11 @@ public ActionResult onItemRightClick(World world, EntityPlayer player var cellHandler = FluidUtil.getFluidHandler(cellStack); if (cellHandler == null) return pass(stack); - var cellFluid = cellHandler.drain(Fluid.BUCKET_VOLUME, false); - - var result = rayTrace(world, player, false); + var result = rayTrace(world, player, true); if (result == null || result.typeOfHit != RayTraceResult.Type.BLOCK) { return pass(stack); } - var blockHandler = FluidUtil.getFluidHandler(world, result.getBlockPos().offset(result.sideHit), - result.sideHit); - int freeSpace = cellHandler.getTankProperties()[0].getCapacity() - (cellFluid == null ? 0 : cellFluid.amount); - boolean pickup = blockHandler != null && blockHandler.drain(Fluid.BUCKET_VOLUME, false) != null && - freeSpace > 0; - if (pickup) { - result = rayTrace(world, player, true); - if (result == null || result.typeOfHit != RayTraceResult.Type.BLOCK) { - return pass(stack); - } - } - var pos = result.getBlockPos(); // can the player modify the clicked block @@ -96,27 +82,22 @@ public ActionResult onItemRightClick(World world, EntityPlayer player return fail(stack); } - FluidStack soundFluid; - if (blockHandler != null && cellFluid == null) { - soundFluid = blockHandler.drain(Fluid.BUCKET_VOLUME, false); - if (soundFluid == null) return pass(stack); - soundFluid = soundFluid.copy(); - } else if (cellFluid != null) { - soundFluid = cellFluid.copy(); - } else { - return pass(stack); - } - - // the defualt assumption is placing fluid, then picking up fluid - if (!pickup && tryPlace(cellHandler, world, pos.offset(result.sideHit), result.sideHit, player)) { - playSound(soundFluid, true, player); + // prioritize filling the cell if there's space, otherwise place fluid + if (fillCell(cellStack, world, pos, result.sideHit, player)) { addToPlayerInventory(stack, cellHandler.getContainer(), player, hand); return success(stack); - } else if (fillCell(cellStack, world, pos, result.sideHit, player)) { - playSound(soundFluid, false, player); - addToPlayerInventory(stack, cellHandler.getContainer(), player, hand); - return success(stack); + } else { + result = rayTrace(world, player, false); + if (result == null || result.typeOfHit != RayTraceResult.Type.BLOCK) { + return pass(stack); + } + pos = result.getBlockPos(); + + if (tryPlace(cellHandler, world, pos.offset(result.sideHit), result.sideHit, player)) { + addToPlayerInventory(stack, cellHandler.getContainer(), player, hand); + return success(stack); + } } return pass(stack); @@ -153,6 +134,7 @@ private static boolean tryPlace(IFluidHandlerItem cellHandler, World world, Bloc if (filled != Fluid.BUCKET_VOLUME) return false; + playSound(cellFluid, true, player); boolean consume = !player.isSpectator() && !player.isCreative(); blockHandler.fill(cellHandler.drain(Fluid.BUCKET_VOLUME, consume), true); return true; @@ -171,6 +153,7 @@ private static boolean fillCell(ItemStack cellStack, World world, BlockPos pos, if (filled != Fluid.BUCKET_VOLUME) return false; + playSound(stack, false, player); boolean consume = !player.isSpectator() && !player.isCreative(); cellHandler.fill(blockHandler.drain(Fluid.BUCKET_VOLUME, true), consume); return true;