package tonius.neiintegration.mods.harvestcraft; import java.util.Map; import java.util.Map.Entry; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import tonius.neiintegration.RecipeHandlerBase; import tonius.neiintegration.Utils; import codechicken.lib.gui.GuiDraw; import codechicken.nei.PositionedStack; import codechicken.nei.api.API; import com.pam.harvestcraft.GuiPamPresser; import com.pam.harvestcraft.PresserRecipes; public class RecipeHandlerPresser extends RecipeHandlerBase { @Override public void prepare() { API.setGuiOffset(GuiPamPresser.class, 7, -18); } public class CachedPresserRecipe extends CachedBaseRecipe { public PositionedStack input; public PositionedStack outputPrimary; public PositionedStack outputSecondary; public CachedPresserRecipe(ItemStack input, ItemStack outputPrimary, ItemStack outputSecondary) { this.input = new PositionedStack(input, 72, 9); this.outputPrimary = new PositionedStack(outputPrimary, 54, 40); if (outputSecondary != null) { this.outputSecondary = new PositionedStack(outputSecondary, 90, 40); } } @Override public PositionedStack getIngredient() { this.randomRenderPermutation(this.input, RecipeHandlerPresser.this.cycleticks / 40); return this.input; } @Override public PositionedStack getResult() { return this.outputPrimary; } @Override public PositionedStack getOtherStack() { return this.outputSecondary; } } @Override public String getRecipeID() { return "harvestcraft.presser"; } @Override public String getRecipeName() { return Utils.translate("tile.presser.name", false); } @Override public String getGuiTexture() { return "neiintegration:textures/harvestcraft/presser.png"; } @Override public void loadTransferRects() { this.addTransferRect(59, 27, 42, 11); } @Override public Class<? extends GuiContainer> getGuiClass() { return GuiPamPresser.class; } @Override public void drawBackground(int recipe) { this.changeToGuiTexture(); GuiDraw.drawTexturedModalRect(0, 0, 0, 0, 160, 65); } @Override public void drawExtras(int recipe) { this.drawProgressBar(59, 27, 160, 0, 42, 11, 40, 1); } @Override public void loadAllRecipes() { Map<ItemStack, ItemStack[]> recipes = PresserRecipes.pressing().getPressingList(); for (Entry<ItemStack, ItemStack[]> recipe : recipes.entrySet()) { ItemStack[] outputs = recipe.getValue(); if (outputs.length != 2) { continue; } this.arecipes.add(new CachedPresserRecipe(recipe.getKey(), outputs[0], outputs[1])); } } @Override public void loadCraftingRecipes(ItemStack result) { Map<ItemStack, ItemStack[]> recipes = PresserRecipes.pressing().getPressingList(); for (Entry<ItemStack, ItemStack[]> recipe : recipes.entrySet()) { ItemStack[] outputs = recipe.getValue(); if (outputs.length != 2) { continue; } if (Utils.areStacksSameTypeCraftingSafe(outputs[0], result) || Utils.areStacksSameTypeCraftingSafe(outputs[1], result)) { this.arecipes.add(new CachedPresserRecipe(recipe.getKey(), outputs[0], outputs[1])); } } } @Override public void loadUsageRecipes(ItemStack ingredient) { Map<ItemStack, ItemStack[]> recipes = PresserRecipes.pressing().getPressingList(); for (Entry<ItemStack, ItemStack[]> recipe : recipes.entrySet()) { if (Utils.areStacksSameTypeCraftingSafe(recipe.getKey(), ingredient)) { ItemStack[] outputs = recipe.getValue(); if (outputs.length != 2) { continue; } ingredient = ingredient.copy(); ingredient.stackSize = 1; this.arecipes.add(new CachedPresserRecipe(ingredient, outputs[0], outputs[1])); } } } }