List of usage examples for net.minecraftforge.fluids FluidStack isFluidEqual
public boolean isFluidEqual(@Nonnull ItemStack other)
From source file:blusunrize.immersiveengineering.api.crafting.RefineryRecipe.java
public static List<RefineryRecipe> findIncompleteRefineryRecipe(FluidStack input0, FluidStack input1) { if (input0 == null && input1 == null) return null; List<RefineryRecipe> list = Lists.newArrayList(); for (RefineryRecipe recipe : recipeList) { if (input0 != null && input1 == null) { if (input0.isFluidEqual(recipe.input0) || input0.isFluidEqual(recipe.input1)) { list.add(recipe);/*from w w w . j av a 2s . c o m*/ break; } } else if (input0 == null && input1 != null) { if (input1.isFluidEqual(recipe.input0) || input1.isFluidEqual(recipe.input1)) { list.add(recipe); break; } } else if ((input0.isFluidEqual(recipe.input0) && input1.isFluidEqual(recipe.input1)) || (input0.isFluidEqual(recipe.input1) && input1.isFluidEqual(recipe.input0))) { list.add(recipe); break; } } return list; }
From source file:blusunrize.immersiveengineering.common.crafting.RecipeJerrycan.java
@Override public boolean matches(@Nonnull InventoryCrafting inv, World world) { ItemStack jerrycan = ItemStack.EMPTY; ItemStack container = ItemStack.EMPTY; int[] slots = getRelevantSlots(inv); if (slots[0] >= 0) jerrycan = inv.getStackInSlot(slots[0]); if (slots[1] >= 0) container = inv.getStackInSlot(slots[1]); if (!jerrycan.isEmpty() && !container.isEmpty()) { IFluidHandler handler = FluidUtil.getFluidHandler(container); FluidStack fs = handler.drain(Integer.MAX_VALUE, false); return fs == null || (fs.amount < handler.getTankProperties()[0].getCapacity() && fs.isFluidEqual(FluidUtil.getFluidContained(jerrycan))); }//from w w w . jav a 2s .c o m return false; }
From source file:blusunrize.immersiveengineering.common.gui.ContainerRefinery.java
public ContainerRefinery(InventoryPlayer inventoryPlayer, TileEntityRefinery tile) { super(inventoryPlayer, tile); final TileEntityRefinery tileF = tile; this.addSlotToContainer(new IESlot.FluidContainer(this, this.inv, 0, 37, 15, 2) { @Override// w w w . j av a2 s .c o m public boolean isItemValid(ItemStack itemStack) { IFluidHandler h = itemStack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); if (h == null || h.getTankProperties().length == 0) return false; FluidStack fs = h.getTankProperties()[0].getContents(); if (fs == null) return false; if (RefineryRecipe.findIncompleteRefineryRecipe(fs, null) == null) return false; if (tileF.tanks[0].getFluidAmount() > 0 && !fs.isFluidEqual(tileF.tanks[0].getFluid())) return false; if (tileF.tanks[1].getFluidAmount() <= 0) return true; List<RefineryRecipe> incomplete = RefineryRecipe.findIncompleteRefineryRecipe(fs, tileF.tanks[1].getFluid()); return incomplete != null && !incomplete.isEmpty(); } }); this.addSlotToContainer(new IESlot.Output(this, this.inv, 1, 37, 54)); this.addSlotToContainer(new IESlot.FluidContainer(this, this.inv, 2, 85, 15, 2) { @Override public boolean isItemValid(ItemStack itemStack) { IFluidHandler h = itemStack.getCapability(CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, null); if (h == null || h.getTankProperties().length == 0) return false; FluidStack fs = h.getTankProperties()[0].getContents(); if (fs == null) return false; if (RefineryRecipe.findIncompleteRefineryRecipe(fs, null) == null) return false; if (tileF.tanks[1].getFluidAmount() > 0 && !fs.isFluidEqual(tileF.tanks[1].getFluid())) return false; if (tileF.tanks[0].getFluidAmount() <= 0) return true; List<RefineryRecipe> incomplete = RefineryRecipe.findIncompleteRefineryRecipe(fs, tileF.tanks[0].getFluid()); return incomplete != null && !incomplete.isEmpty(); } }); this.addSlotToContainer(new IESlot.Output(this, this.inv, 3, 85, 54)); this.addSlotToContainer(new IESlot.FluidContainer(this, this.inv, 4, 133, 15, 0)); this.addSlotToContainer(new IESlot.Output(this, this.inv, 5, 133, 54)); slotCount = 6; for (int i = 0; i < 3; i++) for (int j = 0; j < 9; j++) addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 85 + i * 18)); for (int i = 0; i < 9; i++) addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 143)); }
From source file:blusunrize.immersiveengineering.common.util.IEItemFluidHandler.java
@Override public int fill(FluidStack resource, boolean doFill) { if (container.getCount() != 1 || resource == null || resource.amount <= 0 || !canFillFluidType(resource)) return 0; FluidStack contained = getFluid(); if (contained == null) { int fillAmount = Math.min(getCapacity(), resource.amount); if (doFill) { FluidStack filled = resource.copy(); filled.amount = fillAmount;/*from w w w . j ava 2s . c om*/ setFluid(filled); } return fillAmount; } else { if (contained.isFluidEqual(resource)) { int fillAmount = Math.min(getCapacity() - contained.amount, resource.amount); if (doFill && fillAmount > 0) { contained.amount += fillAmount; setFluid(contained); } return fillAmount; } return 0; } }
From source file:blusunrize.immersiveengineering.common.util.inventory.MultiFluidTank.java
@Override public int fill(FluidStack resource, boolean doFill) { int space = this.capacity - getFluidAmount(); int toFill = Math.min(resource.amount, space); if (!doFill)/*w ww.ja v a 2 s . c o m*/ return toFill; for (FluidStack fs : this.fluids) if (fs.isFluidEqual(resource)) { fs.amount += toFill; return toFill; } this.fluids.add(Utils.copyFluidStackWithAmount(resource, toFill, true)); return toFill; }
From source file:blusunrize.immersiveengineering.common.util.inventory.MultiFluidTank.java
@Nullable @Override/*from w ww . j av a 2 s . c o m*/ public FluidStack drain(FluidStack resource, boolean doDrain) { if (this.fluids.isEmpty()) return null; Iterator<FluidStack> it = this.fluids.iterator(); while (it.hasNext()) { FluidStack fs = it.next(); if (fs.isFluidEqual(resource)) { int amount = Math.min(resource.amount, fs.amount); if (doDrain) { fs.amount -= amount; if (fs.amount <= 0) it.remove(); } return Utils.copyFluidStackWithAmount(resource, amount, true); } } return null; }
From source file:buildcraft.core.fluids.TankManager.java
License:Minecraft Mod Public
@Override public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) { if (resource == null) { return null; }/* w ww .ja v a2 s . c o m*/ for (Tank tank : tanks) { if (!resource.isFluidEqual(tank.getFluid())) { continue; } FluidStack drained = tank.drain(resource.amount, doDrain); if (drained != null && drained.amount > 0) { return drained; } } return null; }
From source file:buildcraft.core.recipes.FlexibleRecipe.java
License:Minecraft Mod Public
@Override public CraftingResult<T> craft(IFlexibleCrafter baseCrafter, boolean preview) { if (output == null) { return null; }/*w w w . ja v a2 s.c o m*/ IFlexibleCrafter crafter = baseCrafter; if (preview) { crafter = new FakeFlexibleCrafter(baseCrafter); } CraftingResult<T> result = new CraftingResult<T>(); result.recipe = this; result.energyCost = energyCost; result.craftingTime = craftingTime; for (ItemStack requirement : inputItems) { IStackFilter filter = new ArrayStackFilter(requirement); int amount = requirement.stackSize; if (consumeItems(crafter, result, filter, amount) != 0) { return null; } } // Item stacks with alternatives consumption for (List<ItemStack> requirements : inputItemsWithAlternatives) { IStackFilter filter = new ArrayStackFilter(requirements.toArray(new ItemStack[requirements.size()])); int amount = requirements.get(0).stackSize; if (consumeItems(crafter, result, filter, amount) != 0) { return null; } } // Fluid stacks consumption for (FluidStack requirement : inputFluids) { int amount = requirement.amount; for (int tankid = 0; tankid < crafter.getCraftingFluidStackSize(); tankid++) { FluidStack fluid = crafter.getCraftingFluidStack(tankid); if (fluid != null && fluid.isFluidEqual(requirement)) { int amountUsed; if (fluid.amount > amount) { amountUsed = amount; if (!preview) { crafter.decrCraftingFluidStack(tankid, amount); } amount = 0; } else { amountUsed = fluid.amount; if (!preview) { crafter.decrCraftingFluidStack(tankid, fluid.amount); } amount -= fluid.amount; } result.usedFluids.add(new FluidStack(requirement.getFluid(), amountUsed)); } if (amount == 0) { break; } } if (amount != 0) { return null; } } // Output generation result.crafted = output; return result; }
From source file:buildcraft.core.statements.TriggerFluidContainer.java
License:Minecraft Mod Public
@Override public boolean isTriggerActive(TileEntity tile, ForgeDirection side, IStatementContainer statementContainer, IStatementParameter[] parameters) { if (tile instanceof IFluidHandler) { IFluidHandler container = (IFluidHandler) tile; FluidStack searchedFluid = null; if (parameters != null && parameters.length >= 1 && parameters[0] != null && parameters[0].getItemStack() != null) { searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameters[0].getItemStack()); }//from w w w .j av a2s. c o m if (searchedFluid != null) { searchedFluid.amount = 1; } FluidTankInfo[] liquids = container.getTankInfo(side); if (liquids == null || liquids.length == 0) { return false; } switch (state) { case Empty: for (FluidTankInfo c : liquids) { if (c != null && c.fluid != null && c.fluid.amount > 0 && (searchedFluid == null || searchedFluid.isFluidEqual(c.fluid))) { return false; } } return true; case Contains: for (FluidTankInfo c : liquids) { if (c != null && c.fluid != null && c.fluid.amount > 0 && (searchedFluid == null || searchedFluid.isFluidEqual(c.fluid))) { return true; } } return false; case Space: if (searchedFluid == null) { for (FluidTankInfo c : liquids) { if (c != null && (c.fluid == null || c.fluid.amount < c.capacity)) { return true; } } return false; } return container.fill(side, searchedFluid, false) > 0; case Full: if (searchedFluid == null) { for (FluidTankInfo c : liquids) { if (c != null && (c.fluid == null || c.fluid.amount < c.capacity)) { return false; } } return true; } return container.fill(side, searchedFluid, false) <= 0; } } return false; }
From source file:buildcraft.core.statements.TriggerFluidContainerLevel.java
License:Minecraft Mod Public
@Override public boolean isTriggerActive(TileEntity tile, ForgeDirection side, IStatementContainer statementContainer, IStatementParameter[] parameters) { if (tile instanceof IFluidHandler) { IFluidHandler container = (IFluidHandler) tile; FluidStack searchedFluid = null; if (parameters != null && parameters.length >= 1 && parameters[0] != null && parameters[0].getItemStack() != null) { searchedFluid = FluidContainerRegistry.getFluidForFilledItem(parameters[0].getItemStack()); }//w w w .jav a 2 s . c o m if (searchedFluid != null) { searchedFluid.amount = 1; } FluidTankInfo[] liquids = container.getTankInfo(side); if (liquids == null || liquids.length == 0) { return false; } for (FluidTankInfo c : liquids) { if (c == null) { continue; } if (c.fluid == null) { if (searchedFluid == null) { return true; } return container.fill(side, searchedFluid, false) > 0; } if (searchedFluid == null || searchedFluid.isFluidEqual(c.fluid)) { float percentage = (float) c.fluid.amount / (float) c.capacity; return percentage < type.level; } } } return false; }