if(FluidUtil.interactWithFluidHandler(playerIn, hand, fluidHandler)) { return true; // return true as we did something return FluidUtil.getFluidHandler(heldItem) != null;
@Override public void slotClicked( final ItemStack clickStack, int mouseButton ) { if( clickStack.isEmpty() || mouseButton == 1 ) { this.setFluidStack( null ); } else if( mouseButton == 0 ) { final FluidStack fluid = FluidUtil.getFluidContained( clickStack ); if( fluid != null ) { this.setFluidStack( AEFluidStack.fromFluidStack( fluid ) ); } } }
@Override public ItemStack[] getMatchingStacks() { if (cachedStacks == null) { cachedStacks = new ItemStack[]{FluidUtil.getFilledBucket(fluid)}; } return this.cachedStacks; }
public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer playerIn, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ) { IFluidHandler fluidHandler = FluidUtil.getFluidHandler(worldIn, pos, null); if(fluidHandler == null) { return false; FluidActionResult result = FluidUtil.tryEmptyContainerAndStow(heldItem, fluidHandler, playerInventory, Fluid.BUCKET_VOLUME, playerIn); if(result.isSuccess()) { playerIn.setHeldItem(hand, result.getResult()); return FluidUtil.getFluidHandler(heldItem) != null;
private boolean dumpFluidBelow() { if (!resourceTank.isEmpty()) { IFluidHandler fluidDestination = FluidUtil.getFluidHandler(world, pos.down(), EnumFacing.UP); if (fluidDestination != null) { return FluidUtil.tryFluidTransfer(fluidDestination, tankManager, Fluid.BUCKET_VOLUME / 20, true) != null; } } return false; }
@Override public ItemStack getResult(ItemStack cast, Fluid fluid) { ItemStack output = new ItemStack(bucket); IFluidHandlerItem fluidHandler = FluidUtil.getFluidHandler(output); assert fluidHandler != null; fluidHandler.fill(getFluid(cast, fluid), true); return fluidHandler.getContainer(); }
if(!itemStack.isEmpty()) { SimulatableTankWrapper tank = new SimulatableTankWrapper(tile.getTank()); IFluidHandler itemFluidHandler = FluidUtil.getFluidHandler(itemStack); if(!player.isSneaking() && !tank.isFull() && itemFluidHandler != null) { // Fill the tank. FluidActionResult result = FluidUtil.tryEmptyContainer(itemStack, tank, Fluid.BUCKET_VOLUME, player, true); if (result.isSuccess() && !player.capabilities.isCreativeMode) { InventoryHelpers.tryReAddToStack(player, itemStack, result.getResult(), hand); FluidActionResult result = FluidUtil.tryFillContainer(itemStack, tank, Fluid.BUCKET_VOLUME, player, true); if (result.isSuccess() && !player.capabilities.isCreativeMode) { InventoryHelpers.tryReAddToStack(player, itemStack, result.getResult(), hand);
/** * Tries to fill a container item in a player inventory. * @param toDrain The item handler to drain from. * @param toFill The container to try to fill. * @param tickFluid The fluid to fill with. * @param player The player that is the owner of toFill. * @return The filled container */ public static ItemStack tryFillContainerForPlayer(IFluidHandlerItem toDrain, ItemStack toFill, FluidStack tickFluid, EntityPlayer player) { int maxFill = MB_FILL_PERTICK; if (toFill.getItem() == Items.BUCKET) { maxFill = Fluid.BUCKET_VOLUME; } if(!toFill.isEmpty() && toFill != toDrain.getContainer() && FluidUtil.getFluidHandler(toFill) != null && player.getItemInUseCount() == 0 && FluidUtil.tryFillContainer(toFill, toDrain, Math.min(maxFill, tickFluid.amount), player, false).isSuccess()) { return FluidUtil.tryFillContainer(toFill, toDrain, Math.min(maxFill, tickFluid.amount), player, true).getResult(); } return ItemStack.EMPTY; }
public ItemStack fillTankWithBucket(ItemStack bucket) { if (tank.getFluidAmount() <= tank.getCapacity() - Fluid.BUCKET_VOLUME) if (FluidUtil.getFluidHandler(bucket) != null && FluidUtil.getFluidContained(bucket) != null && FluidUtil.getFluidContained(bucket).getFluid() == FluidRegistry.LAVA) if (bucket.getCount() == 1) { tank.fill(new FluidStack(FluidRegistry.LAVA, Fluid.BUCKET_VOLUME), true); IFluidHandlerItem cap = bucket.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); cap.drain(new FluidStack(FluidUtil.getFluidContained(bucket), Fluid.BUCKET_VOLUME), true); return FluidUtil.getFluidHandler(bucket).getContainer().copy(); } return bucket; }
@Nonnull private static ItemStack getStackFromLiquid(IBlockState state, IWailaDataAccessor accessor) { IFluidHandler fluidHandler = FluidUtil.getFluidHandler(accessor.getWorld(), accessor.getPosition(), accessor.getSide()); if (fluidHandler == null) return ItemStack.EMPTY; FluidStack stack = fluidHandler.drain(Fluid.BUCKET_VOLUME, false); if (stack == null) return ItemStack.EMPTY; ItemStack bucket = FluidUtil.getFilledBucket(stack); if (!bucket.isEmpty()) return bucket; FluidActionResult result = FluidUtil.tryFillContainer(new ItemStack(Items.BUCKET), fluidHandler, 1, null, false); return result.isSuccess() ? result.getResult() : ItemStack.EMPTY; }
@Override public ItemStack getCheatItemStack(FluidStack ingredient) { Fluid fluid = ingredient.getFluid(); if (fluid == FluidRegistry.WATER) { return new ItemStack(Items.WATER_BUCKET); } else if (fluid == FluidRegistry.LAVA) { return new ItemStack(Items.LAVA_BUCKET); } else if (fluid.getName().equals("milk")) { return new ItemStack(Items.MILK_BUCKET); } else if (FluidRegistry.isUniversalBucketEnabled()) { ItemStack filledBucket = FluidUtil.getFilledBucket(ingredient); FluidStack fluidContained = FluidUtil.getFluidContained(filledBucket); if (fluidContained != null && fluidContained.isFluidEqual(ingredient)) { return filledBucket; } } return ItemStack.EMPTY; }
@Override public boolean onBlockActivated(World world, BlockPos blockPos, IBlockState blockState, EntityPlayer player, EnumHand hand, EnumFacing side, float motionX, float motionY, float motionZ) { return FluidUtil.interactWithFluidHandler(player, hand, world, blockPos, EnumFacing.UP) || FluidUtil.interactWithFluidHandler(player, hand, world, blockPos, EnumFacing.DOWN) || super.onBlockActivated(world, blockPos, blockState, player, hand, side, motionX, motionY, motionZ); }
@Override public boolean processInteract(EntityPlayer player, EnumHand hand) { ItemStack stack = player.getHeldItem(hand); if (FluidUtil.getFluidHandler(stack) != null) { FluidStack fluidStack = getFluid(stack); if (fluidStack != null) return false; if (!stack.isEmpty() && stack.getItem() == Items.BUCKET && !player.capabilities.isCreativeMode) { stack.shrink(1); ItemStack newStack = FluidUtil.getFilledBucket(new FluidStack(FluidRegistry.getFluid("beetle_juice"), Fluid.BUCKET_VOLUME)); player.playSound(SoundEvents.ITEM_BUCKET_FILL, 1.0F, 1.0F); if (!player.inventory.addItemStackToInventory(newStack)) player.dropItem(newStack, false); return true; } } if (!stack.isEmpty() && stack.getItem() == ModItems.TURNIP && !shagging()) { stack.shrink(1); setTame(true); shagCount = 600; getEntityWorld().playSound((EntityPlayer)null, getPosition(), ModSounds.BEETLE_LARVA_MUNCH, SoundCategory.NEUTRAL, 1.0F, 0.75F); return true; } if (!stack.isEmpty() && stack.getItem() == ModItems.MATERIALS && stack.getItemDamage() == ItemMaterials.EnumErebusMaterialsType.BEETLE_TAMING_AMULET.ordinal()) { stack.shrink(1); setTame(true); return true; } return super.processInteract(player, hand); }
@Override public void onTick(T tile, ItemStack itemStack, int slot, int tick) { ItemStack containerStack = tile.getInventory().getStackInSlot(slot).copy(); IFluidHandler container = FluidUtil.getFluidHandler(containerStack); if(container != null && FluidHelpers.hasFluid(container)) { FluidActionResult result; if (FluidUtil.tryEmptyContainer(containerStack, tile.getTank(), MB_PER_TICK, null, false).isSuccess()) { result = FluidUtil.tryEmptyContainer(containerStack.splitStack(1), tile.getTank(), MB_PER_TICK, null, true); } else { result = FluidUtil.tryEmptyContainer(containerStack.splitStack(1), tile.getTank(), Fluid.BUCKET_VOLUME, null, true); } if (result.isSuccess()) { ItemStack resultStack = result.getResult(); if (resultStack.getCount() == 0) { resultStack = containerStack; if (resultStack.getCount() == 0) { resultStack = ItemStack.EMPTY; } } tile.getInventory().setInventorySlotContents(slot, resultStack); } } }
private static boolean bloodFluidHandler(TestInfo info) { info.world.setBlockState(info.pos, ModBlocks.blood_container.getDefaultState()); TileEntity t = info.world.getTileEntity(info.pos); IFluidHandler handler = t.getCapability(CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY, EnumFacing.random(info.world.rand)); handler.fill(new FluidStack(ModFluids.blood, 10000000), true); int blood = BloodHelper.getBlood(handler); assert blood > 0 : "Could not fill blood container"; ItemStack bloodBottle1 = new ItemStack(ModItems.blood_bottle); ItemStack bloodBottle2 = new ItemStack(ModItems.blood_bottle); FluidActionResult result1 = FluidUtil.tryFillContainer(bloodBottle1, handler, Integer.MAX_VALUE, null, true); assert result1.isSuccess() : "Transaction 1 failed"; bloodBottle1 = result1.getResult(); FluidActionResult result2 = FluidUtil.tryFillContainer(bloodBottle2, handler, Integer.MAX_VALUE, null, true); assert result2.isSuccess() : "Transaction 2 failed"; bloodBottle2 = result2.getResult(); assert BloodHelper.getBlood(handler) < blood : "Failed to drain from container into bottles"; FluidActionResult result3 = FluidUtil.tryEmptyContainer(bloodBottle1, handler, Integer.MAX_VALUE, null, true); assert result3.isSuccess() : "Transaction 3 failed"; bloodBottle1 = result3.getResult(); FluidActionResult result4 = FluidUtil.tryEmptyContainer(bloodBottle2, handler, Integer.MAX_VALUE, null, true); assert result4.isSuccess() : "Transaction 4 failed"; bloodBottle2 = result4.getResult(); log("%d %d", BloodHelper.getBlood(handler), blood); assert BloodHelper.getBlood(handler) == blood : "Lost blood somewhere"; return true; }
if (this.origin != null && doAdd) { IItemHandler itemHandler = new InvWrapper(this.origin); fluidActionResult = FluidUtil.tryEmptyContainerAndStow(singleCopy, fluidHandler, itemHandler, Fluid.BUCKET_VOLUME, player, doAdd); if (!fluidActionResult.isSuccess()) { fluidActionResult = FluidUtil.tryFillContainerAndStow(singleCopy, fluidHandler, itemHandler, Fluid.BUCKET_VOLUME, player, doAdd); fluidActionResult = FluidUtil.tryEmptyContainer(singleCopy, fluidHandler, Fluid.BUCKET_VOLUME, player, doAdd); if (!fluidActionResult.isSuccess()) { fluidActionResult = FluidUtil.tryFillContainer(singleCopy, fluidHandler, Fluid.BUCKET_VOLUME, player, doAdd);
@Override public boolean onBlockActivated(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player, EnumHand hand, @Nullable ItemStack heldItem, EnumFacing side, float hitX, float hitY, float hitZ) { if (SPRINKLER_DRAIN_RATE <= 0) return false; if (heldItem != null) { TileEntity tile = worldIn.getTileEntity(pos); if (tile instanceof TileSprinkler) { TileSprinkler sprinkler = ((TileSprinkler)tile); ItemStack result = FluidUtil.tryEmptyContainer(heldItem, sprinkler.getTank(), 1000, player, true); if (result != null) { if (result.stackSize > 0) { player.setHeldItem(hand, result); } sprinkler.saveAndRefresh(); return true; } return false; } } return false; }
public boolean fillContainerFromInternalTank(IItemHandlerModifiable importItems, IItemHandlerModifiable exportItems, int inputSlot, int outputSlot) { ItemStack emptyContainer = importItems.extractItem(inputSlot, 1, true); FluidActionResult result = FluidUtil.tryFillContainer(emptyContainer, exportFluids, Integer.MAX_VALUE, null, false); if(result.isSuccess()) { ItemStack remainingItem = result.getResult(); if(!remainingItem.isEmpty() && !exportItems.insertItem(outputSlot, remainingItem, true).isEmpty()) return false; FluidUtil.tryFillContainer(emptyContainer, exportFluids, Integer.MAX_VALUE, null, true); importItems.extractItem(inputSlot, 1, false); exportItems.insertItem(outputSlot, remainingItem, false); return true; } return false; }
@Override public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { if (slotIndex == SLOT_RESOURCE) { IFluidHandler fluidHandler = FluidUtil.getFluidHandler(itemStack); if (fluidHandler != null) { return fluidHandler.fill(new FluidStack(FluidRegistry.WATER, Integer.MAX_VALUE), false) > 0; } } return false; }
if (tile != null) { ItemStack itemStack = player.inventory.getCurrentItem(); IFluidHandler itemFluidHandler = FluidUtil.getFluidHandler(itemStack); SingleUseTank tank = tile.getTank(); ItemStack tileStack = tile.getStackInSlot(0); return true; } else if (itemFluidHandler != null && !tank.isFull() && FluidUtil.tryEmptyContainer(itemStack, tank, Integer.MAX_VALUE, player, false).isSuccess()) { ItemStack newItemStack = FluidUtil.tryEmptyContainer(itemStack, tank, Integer.MAX_VALUE, player, true).getResult(); InventoryHelpers.tryReAddToStack(player, itemStack, newItemStack); tile.sendUpdate(); return true; } else if (itemFluidHandler != null && !tank.isEmpty() && FluidUtil.tryFillContainer(itemStack, tank, Integer.MAX_VALUE, player, false).isSuccess()) { ItemStack newItemStack = FluidUtil.tryFillContainer(itemStack, tank, Integer.MAX_VALUE, player, true).getResult(); InventoryHelpers.tryReAddToStack(player, itemStack, newItemStack); return true;