if( !FluidUtil.tryPlaceFluid( null, w, pos, tank, fs ) )
ActionResult<ItemStack> doBucketEmpty(ItemStack stack, @Nonnull World world, @Nonnull EntityPlayer player, @Nonnull EnumHand hand) { if (getFluidAmount(stack) < Fluid.BUCKET_VOLUME) { return ActionResult.newResult(EnumActionResult.PASS, stack); } RayTraceResult traceResult = this.rayTrace(world, player, false); if (traceResult == null || traceResult.typeOfHit != RayTraceResult.Type.BLOCK) { return ActionResult.newResult(EnumActionResult.PASS, stack); } BlockPos pos = traceResult.getBlockPos(); if (world.isBlockModifiable(player, pos)) { BlockPos targetPos = pos.offset(traceResult.sideHit); if (player.canPlayerEdit(targetPos, traceResult.sideHit.getOpposite(), stack)) { FluidActionResult result = FluidUtil.tryPlaceFluid(player, world, targetPos, stack, new FluidStack(getFluid(stack), Fluid.BUCKET_VOLUME)); if (result.isSuccess() && !player.capabilities.isCreativeMode) { player.addStat(StatList.getObjectUseStats(this)); return ActionResult.newResult(EnumActionResult.SUCCESS, result.getResult()); } } } return ActionResult.newResult(EnumActionResult.FAIL, stack); }
/** * Drains a filled container and places the fluid. * * RETURN new item stack that has been drained after placing in world if it works null otherwise */ public static ItemStack dumpContainer(World world, BlockPos pos, ItemStack stackIn) { // BlockSourceImpl blocksourceimpl = new BlockSourceImpl(world, pos); ItemStack dispensedStack = stackIn.copy(); // dispensedStack.setCount(1); IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(dispensedStack); if (fluidHandler == null) { ModCyclic.logger.log("CONTAINER ret null"); return ItemStack.EMPTY; } FluidStack fluidStack = fluidHandler.drain(Fluid.BUCKET_VOLUME, false); if (fluidStack != null && fluidStack.amount >= Fluid.BUCKET_VOLUME) { // FluidActionResult placeResult = FluidUtil.tryPlaceFluid(null, world, pos, dispensedStack, fluidStack); if (FluidUtil.tryPlaceFluid(null, world, pos, dispensedStack, fluidStack).isSuccess()) { //http://www.minecraftforge.net/forum/topic/56265-1112-fluidhandler-capability-on-buckets/ fluidHandler.drain(Fluid.BUCKET_VOLUME, true); ItemStack returnMe = fluidHandler.getContainer(); // stackIn.deserializeNBT(returnMe.serializeNBT()); ModCyclic.logger.log("CONTAINER returNMe" + returnMe); return returnMe; } } return fluidHandler.getContainer(); }