From 26de0a42b50e053ef4e2bdb4b5575dcdffa672c9 Mon Sep 17 00:00:00 2001 From: Bernhard Bonigl Date: Tue, 9 Sep 2014 23:54:54 +0200 Subject: [PATCH] Add armor modifiers rendering in books. --- resources/assets/tinker/manuals/firstday.xml | 17 ++-- .../assets/tinker/textures/gui/bookmodify.png | Bin 5507 -> 5842 bytes .../tconstruct/armor/ArmorProxyClient.java | 23 +++-- .../java/tconstruct/armor/TinkerArmor.java | 2 +- .../tconstruct/client/pages/ModifierPage.java | 83 ++++++++++++++++-- .../client/TConstructClientRegistry.java | 16 ++++ 6 files changed, 117 insertions(+), 24 deletions(-) diff --git a/resources/assets/tinker/manuals/firstday.xml b/resources/assets/tinker/manuals/firstday.xml index 013dc4c5..757360d6 100644 --- a/resources/assets/tinker/manuals/firstday.xml +++ b/resources/assets/tinker/manuals/firstday.xml @@ -291,9 +291,12 @@ Type: Single-use Stackable: yes - -travelwings -featherfall + +Tool Station + Forge + + featherfall + three + @@ -363,7 +366,7 @@ Stackable: yes travelglove -redstonemod +glovehaste @@ -373,6 +376,7 @@ Stackable: yes Effects: - The tool slowly repairs itself - Sunlight speeds up the process +- Can be applied to all travellers gear Type: Single-use Stackable: yes @@ -380,7 +384,7 @@ Stackable: yes travelmulti -mossmod +moss @@ -389,6 +393,7 @@ Stackable: yes Effects: - Jump during jumping to jump +- Can be applied to wings as well Type: Single-use Stackable: yes @@ -396,7 +401,7 @@ Stackable: yes travelmulti -mossmod +doublejump \ No newline at end of file diff --git a/resources/assets/tinker/textures/gui/bookmodify.png b/resources/assets/tinker/textures/gui/bookmodify.png index 7583f02043919589f9c48250d8f8bc801d2cdf22..ca84bb6c2402df5a7ac4612a98e55719200f668b 100644 GIT binary patch literal 5842 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 diff --git a/src/main/java/tconstruct/armor/ArmorProxyClient.java b/src/main/java/tconstruct/armor/ArmorProxyClient.java index 5d3da38d..aae4bdb6 100644 --- a/src/main/java/tconstruct/armor/ArmorProxyClient.java +++ b/src/main/java/tconstruct/armor/ArmorProxyClient.java @@ -33,6 +33,7 @@ import tconstruct.common.TProxyCommon; import tconstruct.library.accessory.IAccessoryModel; import tconstruct.library.client.TConstructClientRegistry; import tconstruct.library.crafting.ModifyBuilder; +import tconstruct.tools.TinkerTools; import tconstruct.world.TinkerWorld; public class ArmorProxyClient extends ArmorProxyCommon @@ -72,22 +73,19 @@ public class ArmorProxyClient extends ArmorProxyCommon ItemStack feather = new ItemStack(Items.feather); ItemStack redstone = new ItemStack(Items.redstone); ItemStack goggles = TinkerArmor.travelGoggles.getDefaultItem(); - //MantleClientRegistry.registerManualSmallRecipe("nightvision", goggles.copy(), new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.golden_carrot), null); - ItemStack g2 = goggles.copy(); - g2 = ModifyBuilder.instance.modifyItem(g2, new ItemStack[] { new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.golden_carrot)}); - MantleClientRegistry.registerManualSmallRecipe("nightvision", g2, new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198), new ItemStack(Items.golden_carrot), null); + TConstructClientRegistry.registerManualModifier("nightvision", goggles.copy(), new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198), new ItemStack(Items.golden_carrot), null); ItemStack vest = TinkerArmor.travelVest.getDefaultItem(); - MantleClientRegistry.registerManualSmallRecipe("dodge", vest.copy(), new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null); - MantleClientRegistry.registerManualSmallRecipe("stealth", vest.copy(), new ItemStack(Items.fermented_spider_eye), new ItemStack(Items.ender_eye), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.golden_carrot)); + TConstructClientRegistry.registerManualModifier("dodge", vest.copy(), new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null); + TConstructClientRegistry.registerManualModifier("stealth", vest.copy(), new ItemStack(Items.fermented_spider_eye), new ItemStack(Items.ender_eye), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.golden_carrot)); - ItemStack wings = new ItemStack(TinkerArmor.travelWings); - MantleClientRegistry.registerManualSmallRecipe("doublejump", wings.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Blocks.piston), null); + ItemStack wings = TinkerArmor.travelWings.getDefaultItem(); + TConstructClientRegistry.registerManualModifier("doublejumpwings", wings.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Blocks.piston), null); MantleClientRegistry.registerManualLargeRecipe("featherfall", wings.copy(), new ItemStack(TinkerWorld.slimeGel, 1, 0), feather, feather, feather, wings.copy(), feather, feather, new ItemStack(Items.ender_pearl), feather); ItemStack boots = TinkerArmor.travelBoots.getDefaultItem(); - MantleClientRegistry.registerManualSmallRecipe("doublejumpboots", boots.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Blocks.piston), null); + TConstructClientRegistry.registerManualModifier("doublejumpboots", boots.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Blocks.piston), null); TConstructClientRegistry.registerManualModifier("waterwalk", boots.copy(), new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily)); TConstructClientRegistry.registerManualModifier("leadboots", boots.copy(), new ItemStack(Blocks.iron_block)); TConstructClientRegistry.registerManualModifier("slimysoles", boots.copy(), new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0)); @@ -96,6 +94,13 @@ public class ArmorProxyClient extends ArmorProxyCommon TConstructClientRegistry.registerManualModifier("glovehaste", gloves.copy(), redstone, new ItemStack(Blocks.redstone_block)); //MantleClientRegistry.registerManualSmallRecipe("gloveclimb", gloves.copy(), new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25), null); TConstructClientRegistry.registerManualModifier("gloveknuckles", gloves.copy(), new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE)); + + // moss + ItemStack moss = new ItemStack(TinkerTools.materials, 1, 6); + TConstructClientRegistry.registerManualModifier("mossgoggles", goggles.copy(), moss.copy()); + TConstructClientRegistry.registerManualModifier("mossvest", vest.copy(), moss.copy()); + TConstructClientRegistry.registerManualModifier("mosswings", wings.copy(), moss.copy()); + TConstructClientRegistry.registerManualModifier("mossboots", boots.copy(), moss.copy()); } @Override diff --git a/src/main/java/tconstruct/armor/TinkerArmor.java b/src/main/java/tconstruct/armor/TinkerArmor.java index 81504286..36858766 100644 --- a/src/main/java/tconstruct/armor/TinkerArmor.java +++ b/src/main/java/tconstruct/armor/TinkerArmor.java @@ -226,7 +226,7 @@ public class TinkerArmor TConstructRegistry.registerActiveArmorMod(new ActiveTinkerArmor()); //Head - ModifyBuilder.registerModifier(new AModBoolean(0, "Night Vision", EnumSet.of(ArmorPart.Head), new ItemStack[] { new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 0), new ItemStack(Items.golden_carrot) }, "\u00a78", "Night Vision")); + ModifyBuilder.registerModifier(new AModBoolean(0, "Night Vision", EnumSet.of(ArmorPart.Head), new ItemStack[] { new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198), new ItemStack(Items.golden_carrot) }, "\u00a78", "Night Vision")); //Chest ModifyBuilder.registerModifier(new AModInteger(0, "Perfect Dodge", EnumSet.of(ArmorPart.Chest), new ItemStack[] { new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar) }, 1, "\u00a7d", "Perfect Dodge")); diff --git a/src/main/java/tconstruct/client/pages/ModifierPage.java b/src/main/java/tconstruct/client/pages/ModifierPage.java index 24b8f0ae..607cbbe3 100644 --- a/src/main/java/tconstruct/client/pages/ModifierPage.java +++ b/src/main/java/tconstruct/client/pages/ModifierPage.java @@ -8,10 +8,18 @@ import net.minecraft.util.*; import org.lwjgl.opengl.*; import org.w3c.dom.*; +import java.util.LinkedList; +import java.util.List; + public class ModifierPage extends BookPage { String type; ItemStack[] icons; + ItemStack[][] iconsMulti; + ItemStack[] toolMulti; + + long lastUpdate; + int counter; @Override public void readPageFromXML (Element element) @@ -21,14 +29,45 @@ public class ModifierPage extends BookPage type = nodes.item(0).getTextContent(); nodes = element.getElementsByTagName("recipe"); - if (nodes != null) - icons = MantleClientRegistry.getRecipeIcons(nodes.item(0).getTextContent()); + if (nodes != null) { + String recipe = nodes.item(0).getTextContent(); + icons = MantleClientRegistry.getRecipeIcons(recipe); + + if(type.equals("travelmulti")) + { + List stacks = new LinkedList(); + List tools = new LinkedList(); + String[] suffixes = new String[] { "goggles", "vest", "wings", "boots", "glove", "belt" }; + for(String suffix : suffixes) + { + ItemStack[] icons2 = MantleClientRegistry.getRecipeIcons(nodes.item(0).getTextContent() + suffix); + if(icons2 != null) { + stacks.add(icons2); + tools.add(suffix); + } + } + + iconsMulti = new ItemStack[stacks.size()][]; + toolMulti = new ItemStack[stacks.size()]; + for(int i = 0; i < stacks.size(); i++) { + iconsMulti[i] = stacks.get(i); + toolMulti[i] = MantleClientRegistry.getManualIcon("travel" + tools.get(i)); + } + + icons = iconsMulti[0]; + + lastUpdate = System.currentTimeMillis(); + counter = 0; + } + } } @Override public void renderContentLayer (int localWidth, int localHeight, boolean isTranslatable) { String tStation = new String("Tool Station"); + if(icons.length > 3) + tStation = new String("Tool Forge"); if (isTranslatable) tStation = StatCollector.translateToLocal(tStation); manual.fonts.drawString("\u00a7n" + tStation, localWidth + 60, localHeight + 4, 0); @@ -51,13 +90,38 @@ public class ModifierPage extends BookPage toolstack = MantleClientRegistry.getManualIcon("travelbelt"); if(type.equals("travelglove")) toolstack = MantleClientRegistry.getManualIcon("travelglove"); + if(type.equals("travelmulti")) + toolstack = toolMulti[counter]; + + // update displayed item + if(iconsMulti != null && iconsMulti.length > 0 && type.equals("travelmulti") && System.currentTimeMillis() - lastUpdate > 1000) + { + lastUpdate = System.currentTimeMillis(); + counter++; + if(counter >= iconsMulti.length) + counter = 0; + icons = iconsMulti[counter]; + toolstack = toolMulti[counter]; + } manual.renderitem.zLevel = 100; - manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, toolstack, (localWidth + 54) / 2, (localHeight + 54) / 2); - manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[0], (localWidth + 130) / 2, (localHeight + 54) / 2); - manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[1], (localWidth + 18) / 2, (localHeight + 36) / 2); - if (icons[2] != null) - manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[2], (localWidth + 18) / 2, (localHeight + 74) / 2); + if(icons.length < 4) { + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, toolstack, (localWidth + 54) / 2, (localHeight + 54) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[0], (localWidth + 130) / 2, (localHeight + 54) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[1], (localWidth + 18) / 2, (localHeight + 36) / 2); + if (icons[2] != null) + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[2], (localWidth + 18) / 2, (localHeight + 74) / 2); + } + else + { + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, toolstack, (localWidth + 74) / 2, (localHeight + 54) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[0], (localWidth + 140) / 2, (localHeight + 54) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[1], (localWidth - 2) / 2, (localHeight + 36) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[2], (localWidth - 2) / 2, (localHeight + 74) / 2); + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[3], (localWidth + 36) / 2, (localHeight + 36) / 2); + if(icons[4] != null) + manual.renderitem.renderItemAndEffectIntoGUI(manual.fonts, manual.getMC().renderEngine, icons[4], (localWidth + 36) / 2, (localHeight + 74) / 2); + } manual.renderitem.zLevel = 0; GL11.glScalef(0.5F, 0.5F, 0.5F); @@ -71,6 +135,9 @@ public class ModifierPage extends BookPage public void renderBackgroundLayer (int localWidth, int localHeight) { manual.getMC().getTextureManager().bindTexture(background); - manual.drawTexturedModalRect(localWidth + 12, localHeight + 32, 0, 0, 154, 78); + if(icons.length > 3) + manual.drawTexturedModalRect(localWidth - 7, localHeight + 32, 0, 80, 182, 78); + else + manual.drawTexturedModalRect(localWidth + 12, localHeight + 32, 0, 0, 154, 78); } } diff --git a/src/main/java/tconstruct/library/client/TConstructClientRegistry.java b/src/main/java/tconstruct/library/client/TConstructClientRegistry.java index 356534f5..f600b9a7 100644 --- a/src/main/java/tconstruct/library/client/TConstructClientRegistry.java +++ b/src/main/java/tconstruct/library/client/TConstructClientRegistry.java @@ -92,6 +92,22 @@ public class TConstructClientRegistry MantleClientRegistry.recipeIcons.put(name, recipe); } + public static void registerManualModifier (String name, ItemStack output, ItemStack input1, ItemStack input2, ItemStack input3) + { + registerManualModifier(name, output, input1, input2, input3, null); + } + + public static void registerManualModifier (String name, ItemStack output, ItemStack input1, ItemStack input2, ItemStack input3, ItemStack input4) + { + ItemStack[] recipe = new ItemStack[5]; + recipe[0] = ModifyBuilder.instance.modifyItem(output, new ItemStack[] { input1, input2, input3, input4 }); + recipe[1] = input1; + recipe[2] = input2; + recipe[3] = input3; + recipe[4] = input4; + MantleClientRegistry.recipeIcons.put(name, recipe); + } + public static void registerManualSmeltery (String name, ItemStack output, ItemStack liquid, ItemStack cast) { ItemStack[] recipe = new ItemStack[3];