From 2bef432ee080bf36ab055ef3b115ec864f8d20ff Mon Sep 17 00:00:00 2001 From: Vasco Lavos Date: Tue, 17 Jun 2014 20:18:18 +0100 Subject: [PATCH] Added the Elven Trade page. --- .../vazkii/botania/client/gui/GuiLexicon.java | 10 +- .../botania/client/lib/LibResources.java | 1 + .../botania/common/lexicon/LexiconData.java | 4 +- .../common/lexicon/page/PageElvenRecipe.java | 115 ++++++++++++++++++ resources/assets/botania/lang/en_US.lang | 1 + .../textures/gui/elvenTradeOverlay.png | Bin 0 -> 7321 bytes 6 files changed, 121 insertions(+), 10 deletions(-) create mode 100644 MODSRC/vazkii/botania/common/lexicon/page/PageElvenRecipe.java create mode 100644 resources/assets/botania/textures/gui/elvenTradeOverlay.png diff --git a/MODSRC/vazkii/botania/client/gui/GuiLexicon.java b/MODSRC/vazkii/botania/client/gui/GuiLexicon.java index 15483a875..abaa099b2 100644 --- a/MODSRC/vazkii/botania/client/gui/GuiLexicon.java +++ b/MODSRC/vazkii/botania/client/gui/GuiLexicon.java @@ -105,15 +105,8 @@ public class GuiLexicon extends GuiScreen { x += l / 2; fontOff = 2; } - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - GL11.glColor4f(0F, 0F, 0F, 0.25F); + Minecraft.getMinecraft().renderEngine.bindTexture(texture); - drawTexturedModalRect(x + l / 2 + 4, y, 54, 180, 6, 11); - if(drawLeft) - drawTexturedModalRect(x - l / 2 - 9, y, 61, 180, 6, 11); - for(int i = 0; i < l + 6; i++) - drawTexturedModalRect(x - l / 2 - 3 + i, y, 60, 180, 1, 11); GL11.glColor4f(1F, 1F, 1F, 1F); drawTexturedModalRect(x + l / 2 + 3, y - 1, 54, 180, 6, 11); @@ -121,7 +114,6 @@ public class GuiLexicon extends GuiScreen { drawTexturedModalRect(x - l / 2 - 9, y - 1, 61, 180, 6, 11); for(int i = 0; i < l + 6; i++) drawTexturedModalRect(x - l / 2 - 3 + i, y - 1, 60, 180, 1, 11); - GL11.glDisable(GL11.GL_BLEND); font.drawString(s, x - l / 2 + fontOff, y, 0x111111, false); font.setUnicodeFlag(unicode); diff --git a/MODSRC/vazkii/botania/client/lib/LibResources.java b/MODSRC/vazkii/botania/client/lib/LibResources.java index 513217784..93e857cdc 100644 --- a/MODSRC/vazkii/botania/client/lib/LibResources.java +++ b/MODSRC/vazkii/botania/client/lib/LibResources.java @@ -32,6 +32,7 @@ public final class LibResources { public static final String GUI_MANA_INFUSION_OVERLAY = PREFIX_GUI + "manaInfusionOverlay.png"; public static final String GUI_PETAL_OVERLAY = PREFIX_GUI + "petalOverlay.png"; public static final String GUI_TERRASTEEL_OVERLAY = PREFIX_GUI + "terrasteelOverlay.png"; + public static final String GUI_ELVEN_TRADE_OVERLAY = PREFIX_GUI + "elvenTradeOverlay.png"; public static final String ENTRY_FLOWERS = PREFIX_ENTRIES + "flowers.png"; public static final String ENTRY_APOTHECARY = PREFIX_ENTRIES + "apothecary.png"; diff --git a/MODSRC/vazkii/botania/common/lexicon/LexiconData.java b/MODSRC/vazkii/botania/common/lexicon/LexiconData.java index 36473c2f3..d9c0703d0 100644 --- a/MODSRC/vazkii/botania/common/lexicon/LexiconData.java +++ b/MODSRC/vazkii/botania/common/lexicon/LexiconData.java @@ -20,11 +20,13 @@ import vazkii.botania.client.lib.LibResources; import vazkii.botania.common.block.ModBlocks; import vazkii.botania.common.core.handler.ConfigHandler; import vazkii.botania.common.crafting.ModCrafingRecipes; +import vazkii.botania.common.crafting.ModElvenTradeRecipes; import vazkii.botania.common.crafting.ModManaAlchemyRecipes; import vazkii.botania.common.crafting.ModManaInfusionRecipes; import vazkii.botania.common.crafting.ModPetalRecipes; import vazkii.botania.common.crafting.ModRuneRecipes; import vazkii.botania.common.lexicon.page.PageCraftingRecipe; +import vazkii.botania.common.lexicon.page.PageElvenRecipe; import vazkii.botania.common.lexicon.page.PageImage; import vazkii.botania.common.lexicon.page.PageManaInfusionRecipe; import vazkii.botania.common.lexicon.page.PagePetalRecipe; @@ -462,7 +464,7 @@ public final class LexiconData { elvenMessage.setPriority().setLexiconPages(new PageImage("0", LibResources.ENTRY_ELVEN_GARDE), new PageText("1")); elvenResources = new ALexiconEntry(LibLexicon.ALF_RESOURCES, categoryAlfhomancy); - elvenResources.setPriority().setLexiconPages(new PageText("0")); + elvenResources.setPriority().setLexiconPages(new PageText("0"), new PageElvenRecipe("1", ModElvenTradeRecipes.elementiumRecipe)); // MISCLENAEOUS ENTRIES unstableBlocks = new BLexiconEntry(LibLexicon.MISC_UNSTABLE_BLOCKS, categoryMisc); diff --git a/MODSRC/vazkii/botania/common/lexicon/page/PageElvenRecipe.java b/MODSRC/vazkii/botania/common/lexicon/page/PageElvenRecipe.java new file mode 100644 index 000000000..ed41c30a7 --- /dev/null +++ b/MODSRC/vazkii/botania/common/lexicon/page/PageElvenRecipe.java @@ -0,0 +1,115 @@ +package vazkii.botania.common.lexicon.page; + +import java.util.Arrays; +import java.util.List; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.oredict.OreDictionary; + +import org.lwjgl.opengl.GL11; + +import vazkii.botania.api.internal.IGuiLexiconEntry; +import vazkii.botania.api.lexicon.LexiconEntry; +import vazkii.botania.api.lexicon.LexiconRecipeMappings; +import vazkii.botania.api.recipe.RecipeElvenTrade; +import vazkii.botania.client.lib.LibResources; +import vazkii.botania.common.block.BlockAlfPortal; +import vazkii.botania.common.crafting.ModElvenTradeRecipes; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class PageElvenRecipe extends PageRecipe { + + private static final ResourceLocation elvenTradeOverlay = new ResourceLocation(LibResources.GUI_ELVEN_TRADE_OVERLAY); + + List recipes; + int ticksElapsed = 0; + int recipeAt = 0; + + public PageElvenRecipe(String unlocalizedName, List recipes) { + super(unlocalizedName); + this.recipes = recipes; + } + + public PageElvenRecipe(String unlocalizedName, RecipeElvenTrade recipe) { + this(unlocalizedName, Arrays.asList(recipe)); + } + + @Override + public void onPageAdded(LexiconEntry entry, int index) { + for(RecipeElvenTrade recipe : recipes) + LexiconRecipeMappings.map(recipe.getOutput(), entry, index); + } + + @Override + @SideOnly(Side.CLIENT) + public void renderRecipe(IGuiLexiconEntry gui, int mx, int my) { + RecipeElvenTrade recipe = recipes.get(recipeAt); + TextureManager render = Minecraft.getMinecraft().renderEngine; + FontRenderer font = Minecraft.getMinecraft().fontRenderer; + + render.bindTexture(elvenTradeOverlay); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(1F, 1F, 1F, 1F); + ((GuiScreen) gui).drawTexturedModalRect(gui.getLeft(), gui.getTop(), 0, 0, gui.getWidth(), gui.getHeight()); + GL11.glDisable(GL11.GL_BLEND); + + renderItemAtGridPos(gui, 3, 1, recipe.getOutput(), false); + + List inputs = recipe.getInputs(); + int i = 0; + for(Object obj : inputs) { + Object input = obj; + if(input instanceof String) + input = OreDictionary.getOres((String) input).get(0); + + renderItemAtInputPos(gui, i, (ItemStack) input); + i++; + } + + IIcon portalIcon = BlockAlfPortal.portalTex; + Minecraft.getMinecraft().renderEngine.bindTexture(TextureMap.locationBlocksTexture); + RenderItem.getInstance().renderIcon(gui.getLeft() + 22, gui.getTop() + 36, portalIcon, 48, 48); + } + + @SideOnly(Side.CLIENT) + public void renderItemAtInputPos(IGuiLexiconEntry gui, int x, ItemStack stack) { + if(stack == null || stack.getItem() == null) + return; + stack = stack.copy(); + + if(stack.getItemDamage() == Short.MAX_VALUE) + stack.setItemDamage(0); + + int xPos = gui.getLeft() + x * 20 + 45; + int yPos = gui.getTop() + 14; + ItemStack stack1 = stack.copy(); + if(stack1.getItemDamage() == -1) + stack1.setItemDamage(0); + + renderItem(gui, xPos, yPos, stack1, false); + } + + + @Override + @SideOnly(Side.CLIENT) + public void updateScreen() { + if(ticksElapsed % 20 == 0) { + recipeAt++; + + if(recipeAt == recipes.size()) + recipeAt = 0; + } + ++ticksElapsed; + } + +} diff --git a/resources/assets/botania/lang/en_US.lang b/resources/assets/botania/lang/en_US.lang index df74f18ac..a91c26376 100644 --- a/resources/assets/botania/lang/en_US.lang +++ b/resources/assets/botania/lang/en_US.lang @@ -1078,6 +1078,7 @@ botania.page.elfMessage1=WIP # -- THE RESOURCES OF ALFHEIM botania.entry.elfResources=The Resources of Alfheim botania.page.elfResources0=WIP +botania.page.elfResources1=Trading for &1Elementium&0 # - MISCLANEOUS # -- UNSTABLE CUBE diff --git a/resources/assets/botania/textures/gui/elvenTradeOverlay.png b/resources/assets/botania/textures/gui/elvenTradeOverlay.png new file mode 100644 index 0000000000000000000000000000000000000000..c7479f17a63c873bd4bc2e640a77bcb83671fc1f GIT binary patch literal 7321 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 G_5T2rB#bKn literal 0 HcmV?d00001