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.FluidContainerRegistry; import net.minecraftforge.fluids.FluidContainerRegistry.FluidContainerData; import net.minecraftforge.fluids.FluidStack; import tonius.neiintegration.PositionedFluidTank; import tonius.neiintegration.RecipeHandlerBase; import tonius.neiintegration.Utils; import codechicken.lib.gui.GuiDraw; import codechicken.nei.PositionedStack; import forestry.factory.gadgets.MachineBottler; public class RecipeHandlerBottler extends RecipeHandlerBase { private static Class<? extends GuiContainer> guiClass; private static List<MachineBottler.Recipe> recipes = new ArrayList<MachineBottler.Recipe>(); @Override public void prepare() { guiClass = Utils.getClass("forestry.factory.gui.GuiBottler"); for (FluidContainerData container : FluidContainerRegistry.getRegisteredFluidContainerData()) { MachineBottler.Recipe recipe = MachineBottler.RecipeManager.findMatchingRecipe(container.fluid, container.emptyContainer); if (recipe != null) { recipes.add(recipe); } } } public class CachedBottlerRecipe extends CachedBaseRecipe { public PositionedFluidTank fluid; public PositionedStack input; public PositionedStack output; public CachedBottlerRecipe(MachineBottler.Recipe recipe) { if (recipe.input != null) { this.fluid = new PositionedFluidTank(recipe.input, 10000, new Rectangle(48, 6, 16, 58), RecipeHandlerBottler.this.getGuiTexture(), new Point(176, 0)); } if (recipe.can != null) { this.input = new PositionedStack(recipe.can, 111, 8); } if (recipe.bottled != null) { this.output = new PositionedStack(recipe.bottled, 111, 44); } } @Override public PositionedStack getIngredient() { return this.input; } @Override public PositionedStack getResult() { return this.output; } @Override public PositionedFluidTank getFluidTank() { return this.fluid; } } @Override public String getRecipeID() { return "forestry.bottler"; } @Override public String getRecipeName() { return Utils.translate("tile.for.factory.0.name", false); } @Override public String getGuiTexture() { return "forestry:textures/gui/bottler.png"; } @Override public void loadTransferRects() { this.addTransferRect(75, 27, 24, 17); } @Override public Class<? extends GuiContainer> getGuiClass() { return guiClass; } @Override public void drawBackground(int recipe) { this.changeToGuiTexture(); GuiDraw.drawTexturedModalRect(43, 0, 48, 11, 123, 65); } @Override public void drawExtras(int recipe) { this.drawProgressBar(75, 27, 176, 74, 24, 17, 40, 0); } @Override public void loadAllRecipes() { for (MachineBottler.Recipe recipe : recipes) { this.arecipes.add(new CachedBottlerRecipe(recipe)); } } @Override public void loadCraftingRecipes(ItemStack result) { for (MachineBottler.Recipe recipe : recipes) { if (Utils.areStacksSameTypeCraftingSafe(recipe.bottled, result)) { this.arecipes.add(new CachedBottlerRecipe(recipe)); } } } @Override public void loadUsageRecipes(ItemStack ingred) { super.loadUsageRecipes(ingred); for (MachineBottler.Recipe recipe : recipes) { if (Utils.areStacksSameTypeCraftingSafe(recipe.can, ingred)) { this.arecipes.add(new CachedBottlerRecipe(recipe)); } } } @Override public void loadUsageRecipes(FluidStack ingred) { for (MachineBottler.Recipe recipe : recipes) { if (Utils.areFluidsSameType(recipe.input, ingred)) { this.arecipes.add(new CachedBottlerRecipe(recipe)); } } } }