From a3c4b9f3ed7688bec2fdec9d209e5dd43c71bade Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 21 Jun 2017 15:25:18 +0100 Subject: [PATCH] Show the recipe in the autocrafting gui --- .../gui/autocrafting/GuiAutoCrafting.java | 63 +++++++++++++++++-- 1 file changed, 59 insertions(+), 4 deletions(-) diff --git a/src/main/java/techreborn/client/gui/autocrafting/GuiAutoCrafting.java b/src/main/java/techreborn/client/gui/autocrafting/GuiAutoCrafting.java index 9cf4a580d..6741e57c9 100644 --- a/src/main/java/techreborn/client/gui/autocrafting/GuiAutoCrafting.java +++ b/src/main/java/techreborn/client/gui/autocrafting/GuiAutoCrafting.java @@ -2,6 +2,7 @@ package techreborn.client.gui.autocrafting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiButtonImage; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.RenderHelper; import net.minecraft.client.renderer.RenderItem; import net.minecraft.entity.player.EntityPlayer; @@ -11,6 +12,10 @@ import net.minecraft.inventory.InventoryCrafting; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.item.crafting.IRecipe; +import net.minecraft.item.crafting.Ingredient; +import net.minecraft.item.crafting.ShapedRecipes; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.oredict.ShapedOreRecipe; import org.lwjgl.opengl.GL11; import reborncore.common.network.NetworkManager; import techreborn.client.gui.GuiBase; @@ -19,6 +24,7 @@ import techreborn.packets.PacketSetRecipe; import techreborn.tiles.TileAutoCraftingTable; import java.io.IOException; +import java.util.Iterator; import static net.minecraft.item.ItemStack.EMPTY; @@ -27,6 +33,7 @@ import static net.minecraft.item.ItemStack.EMPTY; */ public class GuiAutoCrafting extends GuiBase { + static final ResourceLocation RECIPE_BOOK_TEXTURE = new ResourceLocation("textures/gui/recipe_book.png"); GuiAutoCraftingRecipeSlector recipeSlector = new GuiAutoCraftingRecipeSlector(); private GuiButtonImage recipeButton; boolean showGui = true; @@ -61,25 +68,74 @@ public class GuiAutoCrafting extends GuiBase { protected void drawGuiContainerForegroundLayer(int mouseX, int mouseY) { super.drawGuiContainerForegroundLayer(mouseX, mouseY); IRecipe recipe = tileAutoCraftingTable.getIRecipe(); - if(recipe != null){ + if (recipe != null) { renderItemStack(recipe.getRecipeOutput(), 95, 42); + + int x = mouseX -= getGuiLeft(); + int y = mouseY -= getGuiTop(); + renderRecipe(recipe, 91, 66); } final Layer layer = Layer.FOREGROUND; this.builder.drawMultiEnergyBar(this, 9, 26, (int) this.tileAutoCraftingTable.getEnergy(), (int) this.tileAutoCraftingTable.getMaxPower(), mouseX, mouseY, 0, layer); this.builder.drawProgressBar(this, 50, 100, 120, 44, mouseX, mouseY, TRBuilder.ProgressDirection.RIGHT, layer); } + //Based of vanilla code + public void renderRecipe(IRecipe recipe, int x, int y) { + RenderHelper.enableGUIStandardItemLighting(); + GlStateManager.enableAlpha(); + mc.getTextureManager().bindTexture(RECIPE_BOOK_TEXTURE); + + this.drawTexturedModalRect(x, y, 152, 78, 24, 24); + + int recipeWidth = 3; + int recipeHeight = 3; + if (recipe instanceof ShapedRecipes) { + ShapedRecipes shapedrecipes = (ShapedRecipes) recipe; + recipeWidth = shapedrecipes.getWidth(); + recipeHeight = shapedrecipes.getHeight(); + } + if (recipe instanceof ShapedOreRecipe) { + ShapedOreRecipe shapedrecipes = (ShapedOreRecipe) recipe; + recipeWidth = shapedrecipes.getWidth(); + recipeHeight = shapedrecipes.getHeight(); + } + Iterator ingredients = recipe.getIngredients().iterator(); + for (int rHeight = 0; rHeight < recipeHeight; ++rHeight) { + int j1 = 3 + rHeight * 7; + for (int rWidth = 0; rWidth < recipeWidth; ++rWidth) { + if (ingredients.hasNext()) { + ItemStack[] aitemstack = ingredients.next().getMatchingStacks(); + if (aitemstack.length != 0) { + int l1 = 3 + rWidth * 7; + GlStateManager.pushMatrix(); + int i2 = (int) ((float) (x + l1) / 0.42F - 3.0F); + int j2 = (int) ((float) (y + j1) / 0.42F - 3.0F); + GlStateManager.scale(0.42F, 0.42F, 1.0F); + GlStateManager.enableLighting(); + mc.getRenderItem().renderItemAndEffectIntoGUI(aitemstack[0], i2, j2); + GlStateManager.disableLighting(); + GlStateManager.popMatrix(); + } + } + } + } + GlStateManager.disableAlpha(); + RenderHelper.disableStandardItemLighting(); + } + @Override protected void drawGuiContainerBackgroundLayer(final float f, final int mouseX, final int mouseY) { super.drawGuiContainerBackgroundLayer(f, mouseX, mouseY); final Layer layer = Layer.BACKGROUND; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { - drawSlot(28 + (i *18), 25 + (j * 18), layer); + drawSlot(28 + (i * 18), 25 + (j * 18), layer); } } drawOutputSlot(145, 42, layer); drawOutputSlot(95, 42, layer); + drawString("Inventory", 8, 82, 4210752, layer); } @Override @@ -136,10 +192,9 @@ public class GuiAutoCrafting extends GuiBase { super.onGuiClosed(); } - public void setRecipe(IRecipe recipe){ + public void setRecipe(IRecipe recipe) { tileAutoCraftingTable.setCurrentRecipe(recipe.getRegistryName()); NetworkManager.sendToServer(new PacketSetRecipe(tileAutoCraftingTable, recipe.getRegistryName())); } - }