Java tutorial
/** * Copyright (c) Lambda Innovation, 2013-2016 * This file is part of the AcademyCraft mod. * https://github.com/LambdaInnovation/AcademyCraft * Licensed under GPLv3, see project root for more information. */ package cn.academy.support.nei; import cn.academy.crafting.api.MetalFormerRecipes; import cn.academy.crafting.api.MetalFormerRecipes.RecipeObject; import cn.academy.crafting.block.TileMetalFormer.Mode; import net.minecraft.client.gui.inventory.GuiContainer; import cn.lambdalib.util.client.HudUtils; import cn.lambdalib.util.client.RenderUtils; import cn.lambdalib.util.client.shader.ShaderMono; import net.minecraft.client.gui.inventory.GuiContainer; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL20; /** * * @author KSkun * */ public class MetalFormerRecipeHandler extends ACMachineRecipeHandler { @Override public String getRecipeName() { return StatCollector.translateToLocal("tile.ac_metal_former.name"); } @Override public String getGuiTexture() { return "academy:textures/guis/nei_metalformer.png"; } @Override public Class<? extends GuiContainer> getGuiClass() { return GuiContainer.class; } @Override public int getInputX() { return 41; } @Override public int getInputY() { return 24; } @Override public int getOutputX() { return 107; } @Override public int getOutputY() { return 24; } @Override public void loadCraftingRecipes(ItemStack result) { for (RecipeObject r : MetalFormerRecipes.INSTANCE.getAllRecipes()) { if (r.output.getItem().equals(result.getItem())) { arecipes.add(new MFCachedRecipe(r.input, r.output, r.mode)); } } } @Override public void loadUsageRecipes(ItemStack ingredient) { for (RecipeObject r : MetalFormerRecipes.INSTANCE.getAllRecipes()) { if (r.input.getItem().equals(ingredient.getItem())) { arecipes.add(new MFCachedRecipe(r.input, r.output, r.mode)); } } } @Override public void drawBackground(int recipe) { ShaderMono.instance().useProgram(); RenderUtils.loadTexture(new ResourceLocation(getGuiTexture())); HudUtils.rect(35, 0, 0, 0, 94, 57, 94, 57); GL20.glUseProgram(0); } @Override public void drawExtras(int recipe) { if (tick >= 50) tick = 0; ShaderMono.instance().useProgram(); GL11.glEnable(GL11.GL_BLEND); GL11.glColor4f(55f / 151, 55f / 151, 55f / 151, 1); RenderUtils.loadTexture(((MFCachedRecipe) arecipes.get(recipe)).mode.texture); HudUtils.rect(73, 23, 0, 0, 18, 18, 48, 48); RenderUtils.loadTexture(new ResourceLocation("academy:textures/guis/progress/progress_metalformer.png")); HudUtils.rect(57, 41, 0, 0, 50d * (tick / 50d), 13, 114d * (tick / 50d), 30); GL20.glUseProgram(0); } private class MFCachedRecipe extends ACCachedRecipe { public final Mode mode; public MFCachedRecipe(ItemStack input, ItemStack output, Mode mode) { super(input, output); this.mode = mode; } } }