@Override public String getRecipeInfo() { return LogHelper.getStackDescription(recipe.getResource()); } }
public static Set<Fluid> getRecipeFluids() { if (recipeFluids.isEmpty()) { for (IFabricatorSmeltingRecipe recipe : recipes) { FluidStack fluidStack = recipe.getProduct(); if (fluidStack != null) { recipeFluids.add(fluidStack.getFluid()); } } } return Collections.unmodifiableSet(recipeFluids); } }
private void trySmelting() { IInventoryAdapter inventory = getInternalInventory(); ItemStack smeltResource = inventory.getStackInSlot(InventoryFabricator.SLOT_METAL); if (smeltResource.isEmpty()) { return; } IFabricatorSmeltingRecipe smelt = FabricatorSmeltingRecipeManager.findMatchingSmelting(smeltResource); if (smelt == null || smelt.getMeltingPoint() > heat) { return; } FluidStack smeltFluid = smelt.getProduct(); if (moltenTank.fillInternal(smeltFluid, false) == smeltFluid.amount) { this.decrStackSize(InventoryFabricator.SLOT_METAL, 1); moltenTank.fillInternal(smeltFluid, true); meltingPoint = smelt.getMeltingPoint(); } }
private int getMeltingPoint() { if (!this.getStackInSlot(InventoryFabricator.SLOT_METAL).isEmpty()) { IFabricatorSmeltingRecipe smelt = FabricatorSmeltingRecipeManager.findMatchingSmelting(this.getStackInSlot(InventoryFabricator.SLOT_METAL)); if (smelt != null) { return smelt.getMeltingPoint(); } } else if (moltenTank.getFluidAmount() > 0) { return meltingPoint; } return 0; }
@Nullable public static IFabricatorSmeltingRecipe findMatchingSmelting(ItemStack resource) { if (resource.isEmpty()) { return null; } for (IFabricatorSmeltingRecipe smelting : recipes) { if (ItemStackUtil.isCraftingEquivalent(smelting.getResource(), resource)) { return smelting; } } return null; }
private static Map<Fluid, List<IFabricatorSmeltingRecipe>> getSmeltingInputs() { Map<Fluid, List<IFabricatorSmeltingRecipe>> smeltingInputs = new HashMap<>(); for (IFabricatorSmeltingRecipe smelting : FabricatorSmeltingRecipeManager.recipes) { Fluid fluid = smelting.getProduct().getFluid(); if (!smeltingInputs.containsKey(fluid)) { smeltingInputs.put(fluid, new ArrayList<>()); } smeltingInputs.get(fluid).add(smelting); } return smeltingInputs; } }
@Override public boolean checkIsRecipe(IFabricatorSmeltingRecipe recipe) { return recipe != null && matches(itemInput, toIItemStack(recipe.getResource())); } }
private static Map<Fluid, List<IFabricatorSmeltingRecipe>> getSmeltingInputs() { Map<Fluid, List<IFabricatorSmeltingRecipe>> smeltingInputs = new HashMap<>(); for (IFabricatorSmeltingRecipe smelting : FabricatorSmeltingRecipeManager.recipes) { Fluid fluid = smelting.getProduct().getFluid(); if (!smeltingInputs.containsKey(fluid)) { smeltingInputs.put(fluid, new ArrayList<>()); } smeltingInputs.get(fluid).add(smelting); } return smeltingInputs; } }
Fluid recipeFluid = recipe.getLiquid().getFluid(); for (IFabricatorSmeltingRecipe s : getSmeltingInputs().get(recipeFluid)) { smeltingInput.add(s.getResource());
private static Map<Fluid, List<IFabricatorSmeltingRecipe>> getSmeltingInputs() { Map<Fluid, List<IFabricatorSmeltingRecipe>> smeltingInputs = new HashMap<>(); for (IFabricatorSmeltingRecipe smelting : FabricatorSmeltingRecipeManager.recipes) { Fluid fluid = smelting.getProduct().getFluid(); if (!smeltingInputs.containsKey(fluid)) { smeltingInputs.put(fluid, new ArrayList<>()); } smeltingInputs.get(fluid).add(smelting); } return smeltingInputs; }
@Override protected void onIndexUpdate(int index, IFabricatorRecipe recipe) { selectedElement.add(new TankElement(1, 33, null, () -> new FluidTankInfo(recipe.getLiquid(), 2000), FABRICATOR_TANK_OVERLAY, 16, 16)); NonNullList<NonNullList<ItemStack>> ingredients = recipe.getIngredients(); for (int x = 0; x < 3; x++) { for (int y = 0; y < 3; y++) { int ingredientIndex = y * 3 + x; if (ingredientIndex >= ingredients.size()) { continue; } NonNullList<ItemStack> items = ingredients.get(ingredientIndex); selectedElement.add(new IngredientElement(21 + x * 19, 1 + y * 19, Ingredient.fromStacks(items.toArray(new ItemStack[items.size()])))); } } ItemStack plan = recipe.getPlan(); if (!plan.isEmpty()) { selectedElement.item(91, 1, plan); } selectedElement.item(91, 39, recipe.getRecipeOutput()); NonNullList<ItemStack> smeltingInput = NonNullList.create(); Fluid recipeFluid = recipe.getLiquid().getFluid(); for (IFabricatorSmeltingRecipe s : getSmeltingInputs().get(recipeFluid)) { smeltingInput.add(s.getResource()); } if (!smeltingInput.isEmpty()) { selectedElement.add(new IngredientElement(1, 6, smeltingInput)); } }