Skip to content

Commit

Permalink
greatly simplify bucket logic
Browse files Browse the repository at this point in the history
  • Loading branch information
ghzdude committed Feb 1, 2025
1 parent fc3b437 commit 8a9fc00
Showing 1 changed file with 16 additions and 33 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -65,25 +65,11 @@ public ActionResult<ItemStack> 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
Expand All @@ -96,27 +82,22 @@ public ActionResult<ItemStack> 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);
Expand Down Expand Up @@ -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;
Expand All @@ -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;
Expand Down

0 comments on commit 8a9fc00

Please sign in to comment.