package tonius.neiintegration.mods.forestry36; import java.awt.Point; import java.awt.Rectangle; import java.util.ArrayList; import java.util.List; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import net.minecraftforge.fluids.FluidRegistry; import net.minecraftforge.fluids.FluidStack; import tonius.neiintegration.PositionedFluidTank; import tonius.neiintegration.RecipeHandlerBase; import tonius.neiintegration.Utils; import codechicken.nei.PositionedStack; import forestry.api.fuels.FuelManager; import forestry.api.fuels.MoistenerFuel; import forestry.factory.gadgets.MachineMoistener; public class RecipeHandlerMoistener extends RecipeHandlerBase { private static Class<? extends GuiContainer> guiClass; @Override public void prepare() { guiClass = Utils.getClass("forestry.factory.gui.GuiMoistener"); } public class CachedMoistenerRecipe extends CachedBaseRecipe { public PositionedFluidTank tank; public List<PositionedStack> fuels = new ArrayList<PositionedStack>(); public PositionedStack input; public PositionedStack output; public CachedMoistenerRecipe(MachineMoistener.Recipe recipe, MoistenerFuel fuel) { this.tank = new PositionedFluidTank(FluidRegistry.getFluidStack("water", 10000), 10000, new Rectangle(11, 5, 16, 58), RecipeHandlerMoistener.this.getGuiTexture(), new Point(176, 0)); this.tank.showAmount = false; if (fuel.item != null) { this.fuels.add(new PositionedStack(fuel.item, 34, 47)); } if (fuel.product != null) { this.fuels.add(new PositionedStack(fuel.product, 100, 26)); } if (recipe.resource != null) { this.input = new PositionedStack(recipe.resource, 138, 8); } if (recipe.product != null) { this.output = new PositionedStack(recipe.product, 138, 44); } } @Override public List<PositionedStack> getOtherStacks() { return this.fuels; } @Override public PositionedStack getIngredient() { return this.input; } @Override public PositionedStack getResult() { return this.output; } @Override public PositionedFluidTank getFluidTank() { return this.tank; } } @Override public String getRecipeID() { return "forestry.moistener"; } @Override public String getRecipeName() { return Utils.translate("tile.for.factory.4.name", false); } @Override public String getGuiTexture() { return "forestry:textures/gui/moistener.png"; } @Override public void loadTransferRects() { this.addTransferRect(138, 27, 16, 14); } @Override public Class<? extends GuiContainer> getGuiClass() { return guiClass; } @Override public void drawBackground(int recipe) { super.drawBackground(recipe); this.drawProgressBar(88, 6, 176, 91, 29, 55, 80, 3); } @Override public void drawExtras(int recipe) { this.drawProgressBar(119, 25, 176, 74, 16, 15, 160, 0); } @Override public void loadAllRecipes() { for (MachineMoistener.Recipe recipe : MachineMoistener.RecipeManager.recipes) { for (MoistenerFuel fuel : FuelManager.moistenerResource.values()) { this.arecipes.add(new CachedMoistenerRecipe(recipe, fuel)); } } } @Override public void loadCraftingRecipes(ItemStack result) { for (MachineMoistener.Recipe recipe : MachineMoistener.RecipeManager.recipes) { for (MoistenerFuel fuel : FuelManager.moistenerResource.values()) { if (Utils.areStacksSameTypeCraftingSafe(recipe.product, result) || Utils.areStacksSameTypeCraftingSafe(fuel.product, result)) { this.arecipes.add(new CachedMoistenerRecipe(recipe, fuel)); } } } } @Override public void loadUsageRecipes(ItemStack ingred) { super.loadUsageRecipes(ingred); for (MachineMoistener.Recipe recipe : MachineMoistener.RecipeManager.recipes) { for (MoistenerFuel fuel : FuelManager.moistenerResource.values()) { if (Utils.areStacksSameTypeCraftingSafe(recipe.resource, ingred) || Utils.areStacksSameTypeCraftingSafe(fuel.item, ingred)) { this.arecipes.add(new CachedMoistenerRecipe(recipe, fuel)); } } } } @Override public void loadUsageRecipes(FluidStack ingredient) { if (ingredient.getFluid() == FluidRegistry.WATER) { this.loadAllRecipes(); } } }