summaryrefslogtreecommitdiff
path: root/src/main/java/lance5057/tDefense/armor
diff options
context:
space:
mode:
authorLance5057 <Lance5057@gmail.com>2017-06-30 00:31:52 -0500
committerLance5057 <Lance5057@gmail.com>2017-06-30 00:31:52 -0500
commit18e5d45b4d530cc60e59d78cc436877a152b567c (patch)
tree7c81ead0d846063f6f66599854b4078ca6932358 /src/main/java/lance5057/tDefense/armor
parentc757aeb7db1ff0c08ae7f3277ccb2620d5b55600 (diff)
Added new metal fluids.
Added special interaction for: Vile Fluid - Changes various mobs to alternative forms. Vibrant Fluid - Grows grass on dirt blocks.
Diffstat (limited to 'src/main/java/lance5057/tDefense/armor')
-rw-r--r--src/main/java/lance5057/tDefense/armor/ArmorBase.java504
-rw-r--r--src/main/java/lance5057/tDefense/armor/ArmorCore.java7
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/cloth/TinkersHood.java14
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/cloth/TinkersRobe.java190
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShawl.java192
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShoes.java189
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/straps/ItemStraps.java44
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/straps/ItemStrapsInv.java206
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/straps/StrapsContainer.java206
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/straps/StrapsGui.java111
10 files changed, 903 insertions, 760 deletions
diff --git a/src/main/java/lance5057/tDefense/armor/ArmorBase.java b/src/main/java/lance5057/tDefense/armor/ArmorBase.java
index f89a96a..2066f59 100644
--- a/src/main/java/lance5057/tDefense/armor/ArmorBase.java
+++ b/src/main/java/lance5057/tDefense/armor/ArmorBase.java
@@ -1,298 +1,206 @@
-package lance5057.tDefense.armor;
-
-import java.util.List;
-import java.util.Locale;
-
-import com.google.common.collect.Lists;
-import org.apache.commons.lang3.tuple.Pair;
-
-import lance5057.tDefense.Reference;
-import lance5057.tDefense.armor.items.cloth.TinkersHood;
-import lance5057.tDefense.armor.materials.MaterialArmor;
-import lance5057.tDefense.armor.materials.MaterialCloth;
-import lance5057.tDefense.core.materials.ShieldMaterialStats;
-import lance5057.tDefense.util.Color16Util;
-import lance5057.tDefense.util.ModuleBase;
-import net.minecraft.block.Block;
-import net.minecraft.creativetab.CreativeTabs;
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.util.ResourceLocation;
-import net.minecraftforge.fml.common.event.FMLInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
-import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
-import net.minecraftforge.fml.common.registry.GameRegistry;
-import slimeknights.tconstruct.library.TinkerRegistry;
-import slimeknights.tconstruct.library.materials.Material;
-import slimeknights.tconstruct.library.modifiers.IModifier;
-import slimeknights.tconstruct.library.tinkering.PartMaterialType;
-import slimeknights.tconstruct.library.tools.IPattern;
-import slimeknights.tconstruct.library.tools.Pattern;
-import slimeknights.tconstruct.library.tools.ToolCore;
-import slimeknights.tconstruct.library.tools.ToolPart;
-import slimeknights.tconstruct.tools.TinkerMaterials;
-import slimeknights.tconstruct.tools.TinkerTools;
-
-public class ArmorBase extends ModuleBase {
- public static CreativeTabs tabName;
-
- private static List<Item> tools = Lists.newLinkedList();
- private static List<ToolPart> toolParts = Lists.newLinkedList();
- private static List<IModifier> modifiers = Lists.newLinkedList();
- private static List<Pair<Item, ToolPart>> toolPartPatterns = Lists.newLinkedList();
-
- public static ToolPart armorPlate;
- public static ToolPart chainmail;
- public static ToolPart cloth;
- public static ToolPart rivets;
- public static ToolPart clasp;
-
- public static Material black;
- public static Material red;
- public static Material green;
- public static Material brown;
- public static Material blue;
- public static Material purple;
- public static Material cyan;
- public static Material lightgray;
- public static Material gray;
- public static Material pink;
- public static Material lime;
- public static Material yellow;
- public static Material lightblue;
- public static Material magenta;
- public static Material orange;
- public static Material white;
-
- public static ArmorCore armor_TinkerHood;
- public static ToolCore armor_TinkerShawl;
- public static ToolCore armor_TinkerRobe;
- public static ToolCore armor_TinkerShoes;
-
- public static ToolCore armor_TinkerCoif;
- public static ToolCore armor_TinkerHauberk;
- public static ToolCore armor_TinkerChausses;
- public static ToolCore armor_TinkerBoots;
-
- public static ToolCore armor_TinkerHelm;
- public static ToolCore armor_TinkerBreastplate;
- public static ToolCore armor_TinkerGrieves;
- public static ToolCore armor_TinkerSabatons;
-
- public static Block block_Unstable;
- public static Block block_GlowCrumbs;
-
- // private static Material mat(String name, int color) {
- // Material mat = new Material(name, color);
- // materials.add(mat);
- // return mat;
- // }
-
- @Override
- public void preInit(FMLPreInitializationEvent e) {
- armorPlate = registerToolPart(new ToolPart(Material.VALUE_Ingot * 4), "armor_plate");
- chainmail = registerToolPart(new ToolPart(Material.VALUE_Ingot * 3), "chainmail");
- cloth = registerToolPart(new ToolPart(Material.VALUE_Ingot * 3), "cloth");
- rivets = registerToolPart(new ToolPart(Material.VALUE_Ingot * 1), "rivets");
- clasp = registerToolPart(new ToolPart(Material.VALUE_Ingot * 1), "clasp");
-
- registerMaterials();
- registerClothMaterials();
-
- for (Pair<Item, ToolPart> toolPartPattern : toolPartPatterns) {
- registerStencil(toolPartPattern.getLeft(), toolPartPattern.getRight());
- }
-
- //regTool(armor_TinkerHood, "tinkerhood");
- registerTools();
- }
-
- @Override
- public void init(FMLInitializationEvent e) {
- regToolBuilding();
- }
-
- @Override
- public void postInit(FMLPostInitializationEvent e) {
- // TODO Auto-generated method stub
-
- }
-
- private void regTool(ToolCore tool, String name) {
- tool.setRegistryName(new ResourceLocation("tinkersdefense:" + name));
- TinkerRegistry.registerTool(tool);
- GameRegistry.register(tool);
- }
-
- private void registerMaterials() {
- Material.UNKNOWN.addStats(new MaterialArmor(35, 1F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.wood, new MaterialArmor(35, 0.5f));
- // TinkerMaterials.wood.addTrait(axelover, SHIELD);
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.stone, new MaterialArmor(120, 0.6F));
- // TinkerRegistry.addMaterialTrait(TinkerMaterials.stone, dulling,
- // SHIELD);
- // TinkerMaterials.stone.addTrait(dulling, SHIELD);
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.flint, new MaterialArmor(150, 0.5F));
- // TinkerRegistry.addMaterialTrait(TinkerMaterials.flint, firestarter,
- // SHIELD);
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.cactus, new MaterialArmor(210, 0.3F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.bone, new MaterialArmor(200, 0.75F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.obsidian, new MaterialArmor(139, 0.6F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.prismarine, new MaterialArmor(430, 0.6F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.endstone, new MaterialArmor(420, 0.8F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.paper, new MaterialArmor(12, 0.1F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.sponge, new MaterialArmor(550, 0.2F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.firewood, new MaterialArmor(550, 1F));
-
- // Slime
- TinkerRegistry.addMaterialStats(TinkerMaterials.slime, new MaterialArmor(1000, 0.9F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.blueslime, new MaterialArmor(780, 0.9F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.knightslime, new MaterialArmor(850, 1.1F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.magmaslime, new MaterialArmor(600, 0.9F));
-
- // Nether
- TinkerRegistry.addMaterialStats(TinkerMaterials.netherrack, new MaterialArmor(270, 0.5F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.cobalt, new MaterialArmor(780, 1.4F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.ardite, new MaterialArmor(990, 1.3F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.manyullyn, new MaterialArmor(820, 1.5F));
-
- // Metals
- TinkerRegistry.addMaterialStats(TinkerMaterials.iron, new MaterialArmor(204, 1F));
- TinkerRegistry.addMaterialStats(TinkerMaterials.pigiron, new MaterialArmor(380, 1.1F));
-
- // Mod Integration
- TinkerRegistry.addMaterialStats(TinkerMaterials.copper, new MaterialArmor(210, 0.9F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.bronze, new MaterialArmor(430, 1F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.lead, new MaterialArmor(334, 1F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.silver, new MaterialArmor(250, 0.8F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.electrum, new MaterialArmor(50, 0.8F));
-
- TinkerRegistry.addMaterialStats(TinkerMaterials.steel, new MaterialArmor(540, 1.3F));
- }
-
- private void registerClothMaterials() {
- black = new Material("blackCloth", 0xDDDDDD);
- red = new Material("redCloth", 0xDB7D3E);
- green = new Material("greeCloth", 0xB350BC);
- brown = new Material("brownCloth", 0x6B8AC9);
- blue = new Material("blueCloth", 0xB1A627);
- purple = new Material("purpleCloth", 0x41AE38);
- cyan = new Material("cyanCloth", 0xD08499);
- lightgray = new Material("lightgrayCloth", 0x404040);
- gray = new Material("grayCloth", 0x9AA1A1);
- pink = new Material("pinkCloth", 0x2E6E89);
- lime = new Material("limeCloth", 0x7E3DB5);
- yellow = new Material("yellowCloth", 0x2E388D);
- lightblue = new Material("lightblueCloth", 0x4F321F);
- magenta = new Material("magentaCloth", 0x35461B);
- orange = new Material("orangeCloth", 0x963430);
- white = new Material("whiteCloth", 0x191616);
-
- Material.UNKNOWN.addStats(new MaterialCloth(100));
-
- TinkerRegistry.addMaterial(black);
- TinkerRegistry.addMaterial(red);
- TinkerRegistry.addMaterial(green);
- TinkerRegistry.addMaterial(brown);
- TinkerRegistry.addMaterial(blue);
- TinkerRegistry.addMaterial(purple);
- TinkerRegistry.addMaterial(cyan);
- TinkerRegistry.addMaterial(lightgray);
- TinkerRegistry.addMaterial(gray);
- TinkerRegistry.addMaterial(pink);
- TinkerRegistry.addMaterial(lime);
- TinkerRegistry.addMaterial(yellow);
- TinkerRegistry.addMaterial(lightblue);
- TinkerRegistry.addMaterial(magenta);
- TinkerRegistry.addMaterial(orange);
- TinkerRegistry.addMaterial(white);
-
- TinkerRegistry.addMaterialStats(black, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(red, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(green, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(brown, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(blue, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(purple, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(cyan, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(lightgray, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(gray, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(pink, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(lime, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(yellow, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(lightblue, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(magenta, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(orange, new MaterialCloth(100));
- TinkerRegistry.addMaterialStats(white, new MaterialCloth(100));
- }
-
- private void registerTools()
- {
- armor_TinkerHood = new TinkersHood();
- regTool(armor_TinkerHood, "tinkerhood");
- //TinkerRegistry.registerToolCrafting(armor_TinkerHood);
- }
-
- private void regToolBuilding() {
- TinkerRegistry.registerToolCrafting(armor_TinkerHood);
- }
-
- private static <T extends Item> T registerTool(T item, String name) {
- tools.add(item);
- return registerItem(item, name);
- }
-
- private static ToolPart registerToolPart(ToolPart part, String name) {
- return registerToolPart(part, name, TinkerTools.pattern);
- }
-
- private static <T extends Item & IPattern> ToolPart registerToolPart(ToolPart part, String name, T pattern) {
- ToolPart ret = registerItem(part, name);
-
- if (pattern != null) {
- toolPartPatterns.add(Pair.of(pattern, ret));
- }
-
- toolParts.add(ret);
-
- return ret;
- }
-
- private static void registerStencil(Item pattern, ToolPart toolPart) {
- for (ToolCore toolCore : TinkerRegistry.getTools()) {
- for (PartMaterialType partMaterialType : toolCore.getRequiredComponents()) {
- if (partMaterialType.getPossibleParts().contains(toolPart)) {
- ItemStack stencil = new ItemStack(pattern);
- Pattern.setTagForPart(stencil, toolPart);
- TinkerRegistry.registerStencilTableCrafting(stencil);
- return;
- }
- }
- }
- }
-
- private static <T extends Item> T registerItem(T item, String name) {
- if (!name.equals(name.toLowerCase(Locale.US))) {
- throw new IllegalArgumentException(
- String.format("Unlocalized names need to be all lowercase! Item: %s", name));
- }
-
- item.setUnlocalizedName(name);
- item.setRegistryName(new ResourceLocation(Reference.MOD_ID, name));
- GameRegistry.register(item);
- return item;
- }
-
- private static <T extends IModifier> T registerModifier(T modifier) {
- TinkerRegistry.registerModifier(modifier);
- modifiers.add(modifier);
- return modifier;
- }
-}
+//package lance5057.tDefense.armor;
+//
+//import java.util.List;
+//import java.util.Locale;
+//
+//import com.google.common.collect.Lists;
+//import org.apache.commons.lang3.tuple.Pair;
+//
+//import lance5057.tDefense.Reference;
+//import lance5057.tDefense.armor.items.cloth.TinkersHood;
+//import lance5057.tDefense.armor.materials.MaterialArmor;
+//import lance5057.tDefense.armor.materials.MaterialCloth;
+//import lance5057.tDefense.core.materials.ShieldMaterialStats;
+//import lance5057.tDefense.util.Color16Util;
+//import lance5057.tDefense.util.ModuleBase;
+//import net.minecraft.block.Block;
+//import net.minecraft.creativetab.CreativeTabs;
+//import net.minecraft.item.Item;
+//import net.minecraft.item.ItemStack;
+//import net.minecraft.util.ResourceLocation;
+//import net.minecraftforge.fml.common.event.FMLInitializationEvent;
+//import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
+//import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
+//import net.minecraftforge.fml.common.registry.GameRegistry;
+//import slimeknights.tconstruct.library.TinkerRegistry;
+//import slimeknights.tconstruct.library.materials.Material;
+//import slimeknights.tconstruct.library.modifiers.IModifier;
+//import slimeknights.tconstruct.library.tinkering.PartMaterialType;
+//import slimeknights.tconstruct.library.tools.IPattern;
+//import slimeknights.tconstruct.library.tools.Pattern;
+//import slimeknights.tconstruct.library.tools.ToolCore;
+//import slimeknights.tconstruct.library.tools.ToolPart;
+//import slimeknights.tconstruct.tools.TinkerMaterials;
+//import slimeknights.tconstruct.tools.TinkerTools;
+//
+//public class ArmorBase extends ModuleBase
+//{
+// public static CreativeTabs tabName;
+//
+// private static List<Item> tools = Lists.newLinkedList();
+// private static List<ToolPart> toolParts = Lists.newLinkedList();
+// private static List<IModifier> modifiers = Lists.newLinkedList();
+// private static List<Pair<Item, ToolPart>> toolPartPatterns = Lists.newLinkedList();
+//
+//
+//
+// public static Block block_Unstable;
+// public static Block block_GlowCrumbs;
+//
+// // private static Material mat(String name, int color) {
+// // Material mat = new Material(name, color);
+// // materials.add(mat);
+// // return mat;
+// // }
+//
+// @Override
+// public void preInit(FMLPreInitializationEvent e) {
+//
+//
+// registerMaterials();
+//
+//
+// for (Pair<Item, ToolPart> toolPartPattern : toolPartPatterns) {
+// registerStencil(toolPartPattern.getLeft(), toolPartPattern.getRight());
+// }
+//
+// //regTool(armor_TinkerHood, "tinkerhood");
+// registerTools();
+// }
+//
+// @Override
+// public void init(FMLInitializationEvent e) {
+// regToolBuilding();
+// }
+//
+// @Override
+// public void postInit(FMLPostInitializationEvent e) {
+// // TODO Auto-generated method stub
+//
+// }
+//
+// private void regTool(ToolCore tool, String name) {
+// tool.setRegistryName(new ResourceLocation("tinkersdefense:" + name));
+// TinkerRegistry.registerTool(tool);
+// GameRegistry.register(tool);
+// }
+//
+// private void registerMaterials() {
+// Material.UNKNOWN.addStats(new MaterialArmor(35, 1F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.wood, new MaterialArmor(35, 0.5f));
+// // TinkerMaterials.wood.addTrait(axelover, SHIELD);
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.stone, new MaterialArmor(120, 0.6F));
+// // TinkerRegistry.addMaterialTrait(TinkerMaterials.stone, dulling,
+// // SHIELD);
+// // TinkerMaterials.stone.addTrait(dulling, SHIELD);
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.flint, new MaterialArmor(150, 0.5F));
+// // TinkerRegistry.addMaterialTrait(TinkerMaterials.flint, firestarter,
+// // SHIELD);
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.cactus, new MaterialArmor(210, 0.3F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.bone, new MaterialArmor(200, 0.75F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.obsidian, new MaterialArmor(139, 0.6F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.prismarine, new MaterialArmor(430, 0.6F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.endstone, new MaterialArmor(420, 0.8F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.paper, new MaterialArmor(12, 0.1F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.sponge, new MaterialArmor(550, 0.2F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.firewood, new MaterialArmor(550, 1F));
+//
+// // Slime
+// TinkerRegistry.addMaterialStats(TinkerMaterials.slime, new MaterialArmor(1000, 0.9F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.blueslime, new MaterialArmor(780, 0.9F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.knightslime, new MaterialArmor(850, 1.1F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.magmaslime, new MaterialArmor(600, 0.9F));
+//
+// // Nether
+// TinkerRegistry.addMaterialStats(TinkerMaterials.netherrack, new MaterialArmor(270, 0.5F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.cobalt, new MaterialArmor(780, 1.4F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.ardite, new MaterialArmor(990, 1.3F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.manyullyn, new MaterialArmor(820, 1.5F));
+//
+// // Metals
+// TinkerRegistry.addMaterialStats(TinkerMaterials.iron, new MaterialArmor(204, 1F));
+// TinkerRegistry.addMaterialStats(TinkerMaterials.pigiron, new MaterialArmor(380, 1.1F));
+//
+// // Mod Integration
+// TinkerRegistry.addMaterialStats(TinkerMaterials.copper, new MaterialArmor(210, 0.9F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.bronze, new MaterialArmor(430, 1F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.lead, new MaterialArmor(334, 1F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.silver, new MaterialArmor(250, 0.8F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.electrum, new MaterialArmor(50, 0.8F));
+//
+// TinkerRegistry.addMaterialStats(TinkerMaterials.steel, new MaterialArmor(540, 1.3F));
+// }
+//
+//
+//
+// private void registerTools()
+// {
+// armor_TinkerHood = new TinkersHood();
+// regTool(armor_TinkerHood, "tinkerhood");
+// //TinkerRegistry.registerToolCrafting(armor_TinkerHood);
+// }
+//
+// private void regToolBuilding() {
+// TinkerRegistry.registerToolCrafting(armor_TinkerHood);
+// }
+//
+// private static <T extends Item> T registerTool(T item, String name) {
+// tools.add(item);
+// return registerItem(item, name);
+// }
+//
+// private static ToolPart registerToolPart(ToolPart part, String name) {
+// return registerToolPart(part, name, TinkerTools.pattern);
+// }
+//
+// private static <T extends Item & IPattern> ToolPart registerToolPart(ToolPart part, String name, T pattern) {
+// ToolPart ret = registerItem(part, name);
+//
+// if (pattern != null) {
+// toolPartPatterns.add(Pair.of(pattern, ret));
+// }
+//
+// toolParts.add(ret);
+//
+// return ret;
+// }
+//
+// private static void registerStencil(Item pattern, ToolPart toolPart) {
+// for (ToolCore toolCore : TinkerRegistry.getTools()) {
+// for (PartMaterialType partMaterialType : toolCore.getRequiredComponents()) {
+// if (partMaterialType.getPossibleParts().contains(toolPart)) {
+// ItemStack stencil = new ItemStack(pattern);
+// Pattern.setTagForPart(stencil, toolPart);
+// TinkerRegistry.registerStencilTableCrafting(stencil);
+// return;
+// }
+// }
+// }
+// }
+//
+// private static <T extends Item> T registerItem(T item, String name) {
+// if (!name.equals(name.toLowerCase(Locale.US))) {
+// throw new IllegalArgumentException(
+// String.format("Unlocalized names need to be all lowercase! Item: %s", name));
+// }
+//
+// item.setUnlocalizedName(name);
+// item.setRegistryName(new ResourceLocation(Reference.MOD_ID, name));
+// GameRegistry.register(item);
+// return item;
+// }
+//
+// private static <T extends IModifier> T registerModifier(T modifier) {
+// TinkerRegistry.registerModifier(modifier);
+// modifiers.add(modifier);
+// return modifier;
+// }
+//}
diff --git a/src/main/java/lance5057/tDefense/armor/ArmorCore.java b/src/main/java/lance5057/tDefense/armor/ArmorCore.java
index 6feb85b..0af81d8 100644
--- a/src/main/java/lance5057/tDefense/armor/ArmorCore.java
+++ b/src/main/java/lance5057/tDefense/armor/ArmorCore.java
@@ -63,13 +63,6 @@ public abstract class ArmorCore extends ToolCore
{
public float reductionPercent = 0f;
public int maxReduction = 100;
-
- protected static PartMaterialType ArmorplateMat = new PartMaterialType(ArmorBase.armorPlate, MaterialArmor.TYPE);
- protected static PartMaterialType ChainmailMat = new PartMaterialType(ArmorBase.chainmail, MaterialArmor.TYPE);
- protected static PartMaterialType RivetMat = new PartMaterialType(ArmorBase.rivets, MaterialArmor.TYPE);
- protected static PartMaterialType ClaspMat = new PartMaterialType(ArmorBase.clasp, MaterialArmor.TYPE);
-
- protected static PartMaterialType ClothMat = new PartMaterialType(ArmorBase.cloth, MaterialCloth.TYPE);
public ArmorCore(PartMaterialType... rc) {
super(rc);
diff --git a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersHood.java b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersHood.java
index 5ae23e0..03f5202 100644
--- a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersHood.java
+++ b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersHood.java
@@ -1,16 +1,10 @@
package lance5057.tDefense.armor.items.cloth;
-import java.util.List;
-
import lance5057.tDefense.armor.ArmorCore;
+import lance5057.tDefense.core.parts.TDParts;
import net.minecraft.entity.Entity;
-import net.minecraft.entity.EntityLivingBase;
-import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
-import slimeknights.tconstruct.library.materials.Material;
public class TinkersHood extends ArmorCore
{
@@ -19,9 +13,9 @@ public class TinkersHood extends ArmorCore
public TinkersHood()
{
- super(ClothMat,
- ClothMat,
- RivetMat);
+ super(TDParts.ClothMat,
+ TDParts.ClothMat,
+ TDParts.RivetMat);
setUnlocalizedName("tinkerhood");
}
diff --git a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersRobe.java b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersRobe.java
index c0c0df4..905e415 100644
--- a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersRobe.java
+++ b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersRobe.java
@@ -1,148 +1,42 @@
-//package lance5057.tDefense.armor.items.cloth;
-//
-//import lance5057.tDefense.TinkersDefense;
-//import lance5057.tDefense.armor.ArmorCore;
-//import lance5057.tDefense.armor.renderers.ArmorRenderer;
-//import lance5057.tDefense.proxy.ClientProxy;
-//import net.minecraft.entity.Entity;
-//import net.minecraft.entity.player.EntityPlayer;
-//import net.minecraft.item.Item;
-//import net.minecraft.item.ItemStack;
-//import thaumcraft.api.IVisDiscountGear;
-//import thaumcraft.api.aspects.Aspect;
-//import vazkii.botania.api.mana.IManaDiscountArmor;
-//import cpw.mods.fml.common.Optional;
-//
-//@Optional.InterfaceList({@Optional.Interface(modid = "Thaumcraft", iface = "thaumcraft.api.IVisDiscountGear", striprefs = true), @Optional.Interface(modid = "Botania", iface = "vazkii.botania.api.mana.IManaDiscountArmor", striprefs = true)})
-//public class TinkersRobe extends ArmorCore implements IVisDiscountGear, IManaDiscountArmor
-//{
-// public TinkersRobe()
-// {
-// super(0, 2);
-// setUnlocalizedName("tinkerrobe");
-// }
-//
-// @Override
-// public Item getHeadItem()
-// {
-// return TinkersDefense.partCloth;
-// }
-//
-// @Override
-// public Item getHandleItem()
-// {
-// return TinkersDefense.partClasp;
-// }
-//
-// @Override
-// public Item getAccessoryItem()
-// {
-// return TinkersDefense.partCloth;
-// }
-//
-// @Override
-// public int durabilityTypeAccessory()
-// {
-// return 1;
-// }
-//
-// @Override
-// public float getRepairCost()
-// {
-// return 1.0f;
-// }
-//
-// @Override
-// public float getDurabilityModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public float getDamageModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public int getPartAmount()
-// {
-// return 3;
-// }
-//
-// @Override
-// public String getIconSuffix(int partType)
-// {
-// switch(partType)
-// {
-// case 0:
-// return "_robe_cloth";
-// case 1:
-// return "_robe_cloth_broken";
-// case 2:
-// return "_robe_metal";
-// case 3:
-// return "_robe_trim";
-// default:
-// return "";
-// }
-// }
-//
-// @Override
-// public String getEffectSuffix()
-// {
-// return "_robe_effect";
-// }
-//
-// @Override
-// public String getDefaultFolder()
-// {
-// return "armor/robe";
-// }
-//
-// // @Override
-// // public void onUpdate(ItemStack stack, World world, Entity entity, int par4,
-// // boolean par5) {
-// // super.onUpdate(stack, world, entity, par4, par5);
-// //
-// // }
-//
-// @Override
-// public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
-// {
-// return "tinkersdefense:textures/armor/TinkersRobe.png";
-// }
-//
-// @Override
-// public String[] getTraits()
-// {
-// return new String[] {"armor", "pants", "robe", "cloth"};
-// }
-//
-// @Override
-// public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot)
-// {
-// return 0;
-// }
-//
-// @Override
-// @Optional.Method(modid = "Thaumcraft")
-// public int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect)
-// {
-// final int vis = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("VisEmbroidery");
-// return vis;
-// }
-//
-// @Override
-// public ArmorRenderer getRenderer()
-// {
-// return ClientProxy.robe;
-// }
-//
-// @Override
-// public float getDiscount(ItemStack stack, int arg1, EntityPlayer arg2)
-// {
-// final float i = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("ManaEmbroidery") / 100f;
-// return i;
-// }
-//}
+package lance5057.tDefense.armor.items.cloth;
+
+import lance5057.tDefense.armor.ArmorCore;
+import lance5057.tDefense.core.parts.TDParts;
+import net.minecraft.entity.Entity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class TinkersRobe extends ArmorCore
+{
+ int induceDamage = 0;
+
+
+ public TinkersRobe()
+ {
+ super(TDParts.ClothMat,
+ TDParts.ClothMat,
+ TDParts.ClaspMat);
+ setUnlocalizedName("tinkerrobe");
+ }
+
+ @Override
+ public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
+ {
+ super.onUpdate(stack, world, entity, par4, par5);
+
+ }
+
+ @Override
+ public float damagePotential() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public double attackSpeed() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+
+}
diff --git a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShawl.java b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShawl.java
index bb913a2..47bbd7c 100644
--- a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShawl.java
+++ b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShawl.java
@@ -1,150 +1,42 @@
-//package lance5057.tDefense.armor.items.cloth;
-//
-//import lance5057.tDefense.TinkersDefense;
-//import lance5057.tDefense.armor.ArmorCore;
-//import lance5057.tDefense.armor.renderers.ArmorRenderer;
-//import lance5057.tDefense.proxy.ClientProxy;
-//import net.minecraft.entity.Entity;
-//import net.minecraft.entity.player.EntityPlayer;
-//import net.minecraft.item.Item;
-//import net.minecraft.item.ItemStack;
-//import thaumcraft.api.IVisDiscountGear;
-//import thaumcraft.api.aspects.Aspect;
-//import vazkii.botania.api.mana.IManaDiscountArmor;
-//import cpw.mods.fml.common.Optional;
-//
-//@Optional.InterfaceList({@Optional.Interface(modid = "Thaumcraft", iface = "thaumcraft.api.IVisDiscountGear", striprefs = true), @Optional.Interface(modid = "Botania", iface = "vazkii.botania.api.mana.IManaDiscountArmor", striprefs = true)})
-//public class TinkersShawl extends ArmorCore implements IVisDiscountGear, IManaDiscountArmor
-//{
-// public TinkersShawl()
-// {
-// super(0, 1);
-// setUnlocalizedName("tinkersshawl");
-// }
-//
-// @Override
-// public Item getHeadItem()
-// {
-// return TinkersDefense.partCloth;
-// }
-//
-// @Override
-// public Item getHandleItem()
-// {
-// return TinkersDefense.partArmorplate;
-// }
-//
-// @Override
-// public Item getAccessoryItem()
-// {
-// return TinkersDefense.partCloth;
-//
-// }
-//
-// @Override
-// public int durabilityTypeAccessory()
-// {
-// return 1;
-// }
-//
-// @Override
-// public float getRepairCost()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public float getDurabilityModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public float getDamageModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public int getPartAmount()
-// {
-// return 3;
-// }
-//
-// @Override
-// public String getIconSuffix(int partType)
-// {
-// switch(partType)
-// {
-// case 0:
-// return "_shawl_cloth";
-// case 1:
-// return "_shawl_cloth_broken";
-// case 2:
-// return "_shawl_metal";
-// case 3:
-// return "_shawl_trim";
-// default:
-// return "";
-// }
-// }
-//
-// @Override
-// public String getEffectSuffix()
-// {
-// return "_shawl_effect";
-// }
-//
-// @Override
-// public String getDefaultFolder()
-// {
-// return "armor/shawl";
-// }
-//
-// // @Override
-// // public void onUpdate(ItemStack stack, World world, Entity entity, int par4,
-// // boolean par5) {
-// // super.onUpdate(stack, world, entity, par4, par5);
-// //
-// // }
-//
-// @Override
-// public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
-// {
-// return "tinkersdefense:textures/armor/TinkersShawl.png";
-// }
-//
-// @Override
-// public String[] getTraits()
-// {
-// return new String[] {"armor", "chest", "shawl", "cloth"};
-// }
-//
-// @Override
-// public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot)
-// {
-// return 0;
-// }
-//
-// @Override
-// @Optional.Method(modid = "Thaumcraft")
-// public int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect)
-// {
-// final int test = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("VisEmbroidery");
-// return test;
-// }
-//
-// @Override
-// public ArmorRenderer getRenderer()
-// {
-// // TODO Auto-generated method stub
-// return ClientProxy.shawl;
-// }
-//
-// @Override
-// public float getDiscount(ItemStack stack, int arg1, EntityPlayer arg2)
-// {
-// final float i = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("ManaEmbroidery") / 100f;
-// return i;
-// }
-//}
+package lance5057.tDefense.armor.items.cloth;
+
+import lance5057.tDefense.armor.ArmorCore;
+import lance5057.tDefense.core.parts.TDParts;
+import net.minecraft.entity.Entity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class TinkersShawl extends ArmorCore
+{
+ int induceDamage = 0;
+
+
+ public TinkersShawl()
+ {
+ super(TDParts.ClothMat,
+ TDParts.ClothMat,
+ TDParts.ArmorplateMat);
+ setUnlocalizedName("tinkershawl");
+ }
+
+ @Override
+ public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
+ {
+ super.onUpdate(stack, world, entity, par4, par5);
+
+ }
+
+ @Override
+ public float damagePotential() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public double attackSpeed() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+
+}
diff --git a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShoes.java b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShoes.java
index 742af0e..b0ff8e5 100644
--- a/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShoes.java
+++ b/src/main/java/lance5057/tDefense/armor/items/cloth/TinkersShoes.java
@@ -1,147 +1,42 @@
-//package lance5057.tDefense.armor.items.cloth;
-//
-//import lance5057.tDefense.TinkersDefense;
-//import lance5057.tDefense.armor.ArmorCore;
-//import lance5057.tDefense.armor.renderers.ArmorRenderer;
-//import lance5057.tDefense.proxy.ClientProxy;
-//import net.minecraft.entity.Entity;
-//import net.minecraft.entity.player.EntityPlayer;
-//import net.minecraft.item.Item;
-//import net.minecraft.item.ItemStack;
-//import thaumcraft.api.IVisDiscountGear;
-//import thaumcraft.api.aspects.Aspect;
-//import vazkii.botania.api.mana.IManaDiscountArmor;
-//import cpw.mods.fml.common.Optional;
-//
-//@Optional.InterfaceList({@Optional.Interface(modid = "Thaumcraft", iface = "thaumcraft.api.IVisDiscountGear", striprefs = true), @Optional.Interface(modid = "Botania", iface = "vazkii.botania.api.mana.IManaDiscountArmor", striprefs = true)})
-//public class TinkersShoes extends ArmorCore implements IVisDiscountGear, IManaDiscountArmor
-//{
-// public TinkersShoes()
-// {
-// super(0, 3);
-// setUnlocalizedName("tinkersshoes");
-// }
-//
-// @Override
-// public Item getHeadItem()
-// {
-// return TinkersDefense.partCloth;
-// }
-//
-// @Override
-// public Item getHandleItem()
-// {
-// return TinkersDefense.partRivet;
-// }
-//
-// @Override
-// public Item getAccessoryItem()
-// {
-// return TinkersDefense.partCloth;
-// }
-//
-// @Override
-// public int durabilityTypeAccessory()
-// {
-// return 1;
-// }
-//
-// @Override
-// public float getRepairCost()
-// {
-// return 1.0f;
-// }
-//
-// @Override
-// public float getDurabilityModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public float getDamageModifier()
-// {
-// return 1f;
-// }
-//
-// @Override
-// public int getPartAmount()
-// {
-// return 3;
-// }
-//
-// @Override
-// public String getIconSuffix(int partType)
-// {
-// switch(partType)
-// {
-// case 0:
-// return "_shoes_cloth";
-// case 1:
-// return "_shoes_cloth_broken";
-// case 2:
-// return "_shoes_metal";
-// case 3:
-// return "_shoes_sole";
-// default:
-// return "";
-// }
-// }
-//
-// @Override
-// public String getEffectSuffix()
-// {
-// return "_shoes_effect";
-// }
-//
-// @Override
-// public String getDefaultFolder()
-// {
-// return "armor/shoes";
-// }
-//
-// // @Override
-// // public void onUpdate(ItemStack stack, World world, Entity entity, int par4,
-// // boolean par5) {
-// // super.onUpdate(stack, world, entity, par4, par5);
-// //
-// // }
-//
-// @Override
-// public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
-// {
-// return "tinkersdefense:textures/armor/TinkersShoes.png";
-// }
-//
-// @Override
-// public String[] getTraits()
-// {
-// return new String[] {"armor", "feet", "shoes", "cloth"};
-// }
-//
-// @Override
-// public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot)
-// {
-// return 0;
-// }
-//
-// @Override
-// @Optional.Method(modid = "Thaumcraft")
-// public int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect)
-// {
-// return stack.getTagCompound().getCompoundTag("InfiTool").getInteger("VisEmbroidery");
-// }
-//
-// @Override
-// public ArmorRenderer getRenderer()
-// {
-// return ClientProxy.shoes;
-// }
-//
-// @Override
-// public float getDiscount(ItemStack stack, int arg1, EntityPlayer arg2)
-// {
-// final float i = stack.getTagCompound().getCompoundTag("InfiTool").getInteger("ManaEmbroidery") / 100f;
-// return i;
-// }
-//}
+package lance5057.tDefense.armor.items.cloth;
+
+import lance5057.tDefense.armor.ArmorCore;
+import lance5057.tDefense.core.parts.TDParts;
+import net.minecraft.entity.Entity;
+import net.minecraft.item.ItemStack;
+import net.minecraft.world.World;
+
+public class TinkersShoes extends ArmorCore
+{
+ int induceDamage = 0;
+
+
+ public TinkersShoes()
+ {
+ super(TDParts.ClothMat,
+ TDParts.ArmorplateMat,
+ TDParts.ClaspMat);
+ setUnlocalizedName("tinkershoes");
+ }
+
+ @Override
+ public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
+ {
+ super.onUpdate(stack, world, entity, par4, par5);
+
+ }
+
+ @Override
+ public float damagePotential() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public double attackSpeed() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+
+}
diff --git a/src/main/java/lance5057/tDefense/armor/items/straps/ItemStraps.java b/src/main/java/lance5057/tDefense/armor/items/straps/ItemStraps.java
new file mode 100644
index 0000000..84f7d69
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/armor/items/straps/ItemStraps.java
@@ -0,0 +1,44 @@
+package lance5057.tDefense.armor.items.straps;
+
+import lance5057.tDefense.TinkersDefense;
+import lance5057.tDefense.core.CoreBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.EntityEquipmentSlot;
+import net.minecraft.item.ItemArmor;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.ActionResult;
+import net.minecraft.util.EnumActionResult;
+import net.minecraft.util.EnumHand;
+import net.minecraft.world.World;
+
+public class ItemStraps extends ItemArmor
+{
+ public ItemStraps()
+ {
+ super(ArmorMaterial.LEATHER, 0, EntityEquipmentSlot.HEAD);
+ // ItemStacks that store an NBT Tag Compound are limited to stack size of 1
+ setMaxStackSize(1);
+ // you'll want to set a creative tab as well, so you can get your item
+ setCreativeTab(CoreBase.tab);
+ }
+
+ // Without this method, your inventory will NOT work!!!
+ @Override
+ public int getMaxItemUseDuration(ItemStack stack) {
+ return 1; // return any value greater than zero
+ }
+
+ @Override
+ public ActionResult<ItemStack> onItemRightClick(ItemStack itemStack, World world, EntityPlayer player, EnumHand hand)
+ {
+ if (!world.isRemote)
+ {
+ // If player not sneaking, open the inventory gui
+ if (!player.isSneaking()) {
+ player.openGui(TinkersDefense.instance, TinkersDefense.GUI_STRAPS_INV, world, 0, 0, 0);
+ }
+ }
+
+ return new ActionResult(EnumActionResult.PASS, itemStack);
+ }
+} \ No newline at end of file
diff --git a/src/main/java/lance5057/tDefense/armor/items/straps/ItemStrapsInv.java b/src/main/java/lance5057/tDefense/armor/items/straps/ItemStrapsInv.java
new file mode 100644
index 0000000..fc71353
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/armor/items/straps/ItemStrapsInv.java
@@ -0,0 +1,206 @@
+package lance5057.tDefense.armor.items.straps;
+
+import lance5057.tDefense.armor.ArmorCore;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.EntityEquipmentSlot;
+import net.minecraft.inventory.IInventory;
+import net.minecraft.item.ItemArmor.ArmorMaterial;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.nbt.NBTTagList;
+import net.minecraft.util.DamageSource;
+import net.minecraft.util.text.ITextComponent;
+import net.minecraft.util.text.TextComponentString;
+import net.minecraftforge.common.ISpecialArmor.ArmorProperties;
+
+public class ItemStrapsInv implements IInventory {
+
+ private final ItemStack invItem;
+ public static final int INVSIZE = 1;
+ private final String name = "ArmorHolder";
+
+ private ItemStack[] inventory = new ItemStack[INVSIZE];
+
+ public ItemStrapsInv(ItemStack stack) {
+ invItem = stack;
+
+ if (!stack.hasTagCompound()) {
+ stack.setTagCompound(new NBTTagCompound());
+ }
+
+ readFromNBT(stack.getTagCompound());
+ }
+
+ /**
+ * A custom method to read our inventory from an ItemStack's NBT compound
+ */
+ public void readFromNBT(NBTTagCompound compound) {
+ // Gets the custom taglist we wrote to this compound, if any
+ // 1.7.2+ change to compound.getTagList("ItemInventory",
+ // Constants.NBT.TAG_COMPOUND);
+ NBTTagList items = compound.getTagList("ItemInventory", 9);
+
+ for (int i = 0; i < items.tagCount(); ++i) {
+ // 1.7.2+ change to items.getCompoundTagAt(i)
+ NBTTagCompound item = (NBTTagCompound) items.getCompoundTagAt(i);
+ int slot = item.getInteger("Slot");
+
+ // Just double-checking that the saved slot index is within our
+ // inventory array bounds
+ if (slot >= 0 && slot < getSizeInventory()) {
+ inventory[slot] = ItemStack.loadItemStackFromNBT(item);
+ }
+ }
+ }
+
+ /**
+ * A custom method to write our inventory to an ItemStack's NBT compound
+ */
+ public void writeToNBT(NBTTagCompound tagcompound) {
+ // Create a new NBT Tag List to store itemstacks as NBT Tags
+ NBTTagList items = new NBTTagList();
+
+ for (int i = 0; i < getSizeInventory(); ++i) {
+ // Only write stacks that contain items
+ if (getStackInSlot(i) != null) {
+ // Make a new NBT Tag Compound to write the itemstack and slot
+ // index to
+ NBTTagCompound item = new NBTTagCompound();
+ item.setInteger("Slot", i);
+ // Writes the itemstack in slot(i) to the Tag Compound we just
+ // made
+ getStackInSlot(i).writeToNBT(item);
+
+ // add the tag compound to our tag list
+ items.appendTag(item);
+ }
+ }
+ // Add the TagList to the ItemStack's Tag Compound with the name
+ // "ItemInventory"
+ tagcompound.setTag("ItemInventory", items);
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ @Override
+ public boolean hasCustomName() {
+ return true;
+ }
+
+ @Override
+ public ITextComponent getDisplayName() {
+ return new TextComponentString(name);
+ }
+
+ @Override
+ public int getSizeInventory() {
+ // TODO Auto-generated method stub
+ return INVSIZE;
+ }
+
+ @Override
+ public ItemStack getStackInSlot(int index) {
+ return inventory[index];
+ }
+
+ @Override
+ public ItemStack decrStackSize(int index, int count) {
+ ItemStack stack = getStackInSlot(index);
+ if (stack != null) {
+ if (stack.stackSize > count) {
+ stack = stack.splitStack(count);
+ // Don't forget this line or your inventory will not be saved!
+ markDirty();
+ } else {
+ // this method also calls onInventoryChanged, so we don't need
+ // to call it again
+ setInventorySlotContents(index, null);
+ }
+ }
+ return stack;
+ }
+
+ @Override
+ public ItemStack removeStackFromSlot(int index) {
+ ItemStack stack = getStackInSlot(index);
+ setInventorySlotContents(index, null);
+ return stack;
+ }
+
+ @Override
+ public void setInventorySlotContents(int index, ItemStack stack) {
+ inventory[index] = stack;
+
+ if (stack != null && stack.stackSize > getInventoryStackLimit()) {
+ stack.stackSize = getInventoryStackLimit();
+ }
+
+ // Don't forget this line or your inventory will not be saved!
+ markDirty();
+ }
+
+ @Override
+ public int getInventoryStackLimit() {
+ return 64;
+ }
+
+ @Override
+ public void markDirty() {
+ for (int i = 0; i < getSizeInventory(); ++i) {
+ if (getStackInSlot(i) != null && getStackInSlot(i).stackSize == 0) {
+ inventory[i] = null;
+ }
+ }
+
+ // This line here does the work:
+ writeToNBT(invItem.getTagCompound());
+ }
+
+ @Override
+ public boolean isUsableByPlayer(EntityPlayer player) {
+ return true;
+ }
+
+ @Override
+ public void openInventory(EntityPlayer player) {
+
+ }
+
+ @Override
+ public void closeInventory(EntityPlayer player) {
+
+ }
+
+ @Override
+ public boolean isItemValidForSlot(int index, ItemStack stack) {
+ return (stack.getItem() instanceof ArmorCore);
+ }
+
+ @Override
+ public int getField(int id) {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void setField(int id, int value) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ public int getFieldCount() {
+ // TODO Auto-generated method stub
+ return 0;
+ }
+
+ @Override
+ public void clear() {
+ // TODO Auto-generated method stub
+
+ }
+}
diff --git a/src/main/java/lance5057/tDefense/armor/items/straps/StrapsContainer.java b/src/main/java/lance5057/tDefense/armor/items/straps/StrapsContainer.java
new file mode 100644
index 0000000..7d5b408
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/armor/items/straps/StrapsContainer.java
@@ -0,0 +1,206 @@
+package lance5057.tDefense.armor.items.straps;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.entity.player.InventoryPlayer;
+import net.minecraft.inventory.ClickType;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.Slot;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumHand;
+
+public class StrapsContainer extends Container
+{
+ /** The Item Inventory for this Container, only needed if you want to reference isUseableByPlayer */
+ public final ItemStrapsInv inventory;
+
+ /** Using these will make transferStackInSlot easier to understand and implement
+ * INV_START is the index of the first slot in the Player's Inventory, so our
+ * InventoryItem's number of slots (e.g. 5 slots is array indices 0-4, so start at 5)
+ * Notice how we don't have to remember how many slots we made? We can just use
+ * InventoryItem.INV_SIZE and if we ever change it, the Container updates automatically. */
+ private static final int INV_START = ItemStrapsInv.INVSIZE, INV_END = INV_START+26,
+ HOTBAR_START = INV_END+1, HOTBAR_END = HOTBAR_START+8;
+
+ // If you're planning to add armor slots, put those first like this:
+ // ARMOR_START = InventoryItem.INV_SIZE, ARMOR_END = ARMOR_START+3,
+ // INV_START = ARMOR_END+1, and then carry on like above.
+
+ public StrapsContainer(EntityPlayer par1Player, InventoryPlayer inventoryPlayer, ItemStrapsInv inventoryItem)
+ {
+ this.inventory = inventoryItem;
+
+ int i;
+
+ // ITEM INVENTORY - you'll need to adjust the slot locations to match your texture file
+ // I have them set vertically in columns of 4 to the right of the player model
+ for (i = 0; i < ItemStrapsInv.INVSIZE; ++i)
+ {
+ // You can make a custom Slot if you need different behavior,
+ // such as only certain item types can be put into this slot
+ // We made a custom slot to prevent our inventory-storing item
+ // from being stored within itself, but if you want to allow that and
+ // you followed my advice at the end of the above step, then you
+ // could get away with using the vanilla Slot class
+ this.addSlotToContainer(new Slot(this.inventory, i, 80 + (18 * (int)(i/4)), 8 + (18*(i%4))));
+ }
+
+ // If you want, you can add ARMOR SLOTS here as well, but you need to
+ // make a public version of SlotArmor. I won't be doing that in this tutorial.
+ /*
+ for (i = 0; i < 4; ++i)
+ {
+ // These are the standard positions for survival inventory layout
+ this.addSlotToContainer(new SlotArmor(this.player, inventoryPlayer, inventoryPlayer.getSizeInventory() - 1 - i, 8, 8 + i * 18, i));
+ }
+ */
+
+ // PLAYER INVENTORY - uses default locations for standard inventory texture file
+ for (i = 0; i < 3; ++i)
+ {
+ for (int j = 0; j < 9; ++j)
+ {
+ this.addSlotToContainer(new Slot(inventoryPlayer, j + i * 9 + 9, 8 + j * 18, 84 + i * 18));
+ }
+ }
+
+ // PLAYER ACTION BAR - uses default locations for standard action bar texture file
+ for (i = 0; i < 9; ++i)
+ {
+ this.addSlotToContainer(new Slot(inventoryPlayer, i, 8 + i * 18, 142));
+ }
+ }
+
+ @Override
+ public boolean canInteractWith(EntityPlayer entityplayer)
+ {
+ // be sure to return the inventory's isUseableByPlayer method
+ // if you defined special behavior there:
+ return inventory.isUsableByPlayer(entityplayer);
+ }
+
+ /**
+ * Called when a player shift-clicks on a slot. You must override this or you will crash when someone does that.
+ */
+ public ItemStack transferStackInSlot(EntityPlayer par1EntityPlayer, int index)
+ {
+ ItemStack itemstack = null;
+ Slot slot = (Slot) this.inventorySlots.get(index);
+
+ if (slot != null && slot.getHasStack())
+ {
+ ItemStack itemstack1 = slot.getStack();
+ itemstack = itemstack1.copy();
+
+ // If item is in our custom Inventory or armor slot
+ if (index < INV_START)
+ {
+ // try to place in player inventory / action bar
+ if (!this.mergeItemStack(itemstack1, INV_START, HOTBAR_END+1, true))
+ {
+ return null;
+ }
+
+ slot.onSlotChange(itemstack1, itemstack);
+ }
+ // Item is in inventory / hotbar, try to place in custom inventory or armor slots
+ else
+ {
+ /*
+ If your inventory only stores certain instances of Items,
+ you can implement shift-clicking to your inventory like this:
+
+ // Check that the item is the right type
+ if (itemstack1.getItem() instanceof ItemCustom)
+ {
+ // Try to merge into your custom inventory slots
+ // We use 'InventoryItem.INV_SIZE' instead of INV_START just in case
+ // you also add armor or other custom slots
+ if (!this.mergeItemStack(itemstack1, 0, InventoryItem.INV_SIZE, false))
+ {
+ return null;
+ }
+ }
+ // If you added armor slots, check them here as well:
+ // Item being shift-clicked is armor - try to put in armor slot
+ if (itemstack1.getItem() instanceof ItemArmor)
+ {
+ int type = ((ItemArmor) itemstack1.getItem()).armorType;
+ if (!this.mergeItemStack(itemstack1, ARMOR_START + type, ARMOR_START + type + 1, false))
+ {
+ return null;
+ }
+ }
+ Otherwise, you have basically 2 choices:
+ 1. shift-clicking between player inventory and custom inventory
+ 2. shift-clicking between action bar and inventory
+
+ Be sure to choose only ONE of the following implementations!!!
+ */
+ /**
+ * Implementation number 1: Shift-click into your custom inventory
+ */
+ if (index >= INV_START)
+ {
+ // place in custom inventory
+ if (!this.mergeItemStack(itemstack1, 0, INV_START, false))
+ {
+ return null;
+ }
+ }
+
+ /**
+ * Implementation number 2: Shift-click items between action bar and inventory
+ */
+ // item is in player's inventory, but not in action bar
+ if (index >= INV_START && index < HOTBAR_START)
+ {
+ // place in action bar
+ if (!this.mergeItemStack(itemstack1, HOTBAR_START, HOTBAR_END+1, false))
+ {
+ return null;
+ }
+ }
+ // item in action bar - place in player inventory
+ else if (index >= HOTBAR_START && index < HOTBAR_END+1)
+ {
+ if (!this.mergeItemStack(itemstack1, INV_START, INV_END+1, false))
+ {
+ return null;
+ }
+ }
+ }
+
+ if (itemstack1.stackSize == 0)
+ {
+ slot.putStack((ItemStack) null);
+ }
+ else
+ {
+ slot.onSlotChanged();
+ }
+
+ if (itemstack1.stackSize == itemstack.stackSize)
+ {
+ return null;
+ }
+
+ slot.onPickupFromSlot(par1EntityPlayer, itemstack1);
+ }
+
+ return itemstack;
+ }
+
+ /**
+ * You should override this method to prevent the player from moving the stack that
+ * opened the inventory, otherwise if the player moves it, the inventory will not
+ * be able to save properly
+ */
+ @Override
+ public ItemStack slotClick(int slotId, int dragType, ClickType clickTypeIn, EntityPlayer player) {
+ // this will prevent the player from interacting with the item that opened the inventory:
+ if (slotId >= 0 && getSlot(slotId) != null && (getSlot(slotId).getStack() == player.getHeldItem(EnumHand.MAIN_HAND) || getSlot(slotId).getStack() == player.getHeldItem(EnumHand.OFF_HAND))) {
+ return null;
+ }
+ return super.slotClick(slotId, dragType, clickTypeIn, player);
+ }
+} \ No newline at end of file
diff --git a/src/main/java/lance5057/tDefense/armor/items/straps/StrapsGui.java b/src/main/java/lance5057/tDefense/armor/items/straps/StrapsGui.java
new file mode 100644
index 0000000..acd6868
--- /dev/null
+++ b/src/main/java/lance5057/tDefense/armor/items/straps/StrapsGui.java
@@ -0,0 +1,111 @@
+package lance5057.tDefense.armor.items.straps;
+
+import org.lwjgl.opengl.GL11;
+import org.lwjgl.opengl.GL12;
+
+import net.minecraft.client.gui.inventory.GuiContainer;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.RenderHelper;
+import net.minecraft.client.renderer.entity.RenderManager;
+import net.minecraft.entity.EntityLivingBase;
+import net.minecraft.util.ResourceLocation;
+import net.minecraft.util.text.translation.I18n;
+
+public class StrapsGui extends GuiContainer
+{
+ /** x and y size of the inventory window in pixels. Defined as float, passed as int
+ * These are used for drawing the player model. */
+ private float xSize_lo;
+ private float ySize_lo;
+
+ /** ResourceLocation takes 2 parameters: ModId, path to texture at the location:
+ * "src/minecraft/assets/modid/"
+ *
+ * I have provided a sample texture file that works with this tutorial. Download it
+ * from Forge_Tutorials/textures/gui/
+ */
+ private static final ResourceLocation iconLocation = new ResourceLocation("inventoryitemmod", "textures/gui/inventoryitem.png");
+
+ /** The inventory to render on screen */
+ private final ItemStrapsInv inventory;
+
+ public StrapsGui(StrapsContainer containerItem)
+ {
+ super(containerItem);
+ this.inventory = containerItem.inventory;
+ }
+
+ /**
+ * Draws the screen and all the components in it.
+ */
+ public void drawScreen(int par1, int par2, float par3)
+ {
+ super.drawScreen(par1, par2, par3);
+ this.xSize_lo = (float)par1;
+ this.ySize_lo = (float)par2;
+ }
+
+ /**
+ * Draw the foreground layer for the GuiContainer (everything in front of the items)
+ */
+ protected void drawGuiContainerForegroundLayer(int par1, int par2)
+ {
+// String s = this.inventory.isInvNameLocalized() ? this.inventory.getName() : I18n.getString(this.inventory.getName());
+// this.fontRendererObj.drawString(s, this.xSize / 2 - this.fontRendererObj.getStringWidth(s) / 2, 0, 4210752);
+// this.fontRendererObj.drawString(I18n.getString("container.inventory"), 26, this.ySize - 96 + 4, 4210752);
+ }
+
+ /**
+ * Draw the background layer for the GuiContainer (everything behind the items)
+ */
+ protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3)
+ {
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+ this.mc.getTextureManager().bindTexture(iconLocation);
+ int k = (this.width - this.xSize) / 2;
+ int l = (this.height - this.ySize) / 2;
+ this.drawTexturedModalRect(k, l, 0, 0, this.xSize, this.ySize);
+ int i1;
+ //drawPlayerModel(k + 51, l + 75, 30, (float)(k + 51) - this.xSize_lo, (float)(l + 75 - 50) - this.ySize_lo, this.mc.player);
+ }
+
+// /**
+// * This renders the player model in standard inventory position (in later versions of Minecraft / Forge, you can
+// * simply call GuiInventory.drawEntityOnScreen directly instead of copying this code)
+// */
+// public static void drawPlayerModel(int x, int y, int scale, float yaw, float pitch, EntityLivingBase entity) {
+// GL11.glEnable(GL11.GL_COLOR_MATERIAL);
+// GL11.glPushMatrix();
+// GL11.glTranslatef(x, y, 50.0F);
+// GL11.glScalef(-scale, scale, scale);
+// GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F);
+// float f2 = entity.renderYawOffset;
+// float f3 = entity.rotationYaw;
+// float f4 = entity.rotationPitch;
+// float f5 = entity.prevRotationYawHead;
+// float f6 = entity.rotationYawHead;
+// GL11.glRotatef(135.0F, 0.0F, 1.0F, 0.0F);
+// RenderHelper.enableStandardItemLighting();
+// GL11.glRotatef(-135.0F, 0.0F, 1.0F, 0.0F);
+// GL11.glRotatef(-((float) Math.atan(pitch / 40.0F)) * 20.0F, 1.0F, 0.0F, 0.0F);
+// entity.renderYawOffset = (float) Math.atan(yaw / 40.0F) * 20.0F;
+// entity.rotationYaw = (float) Math.atan(yaw / 40.0F) * 40.0F;
+// entity.rotationPitch = -((float) Math.atan(pitch / 40.0F)) * 20.0F;
+// entity.rotationYawHead = entity.rotationYaw;
+// entity.prevRotationYawHead = entity.rotationYaw;
+// GL11.glTranslated(0.0F, entity.getYOffset(), 0.0F);
+// RenderManager.instance.playerViewY = 180.0F;
+// RenderManager.instance.renderEntityWithPosYaw(entity, 0.0D, 0.0D, 0.0D, 0.0F, 1.0F);
+// entity.renderYawOffset = f2;
+// entity.rotationYaw = f3;
+// entity.rotationPitch = f4;
+// entity.prevRotationYawHead = f5;
+// entity.rotationYawHead = f6;
+// GL11.glPopMatrix();
+// RenderHelper.disableStandardItemLighting();
+// GL11.glDisable(GL12.GL_RESCALE_NORMAL);
+// OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit);
+// GL11.glDisable(GL11.GL_TEXTURE_2D);
+// OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit);
+// }
+} \ No newline at end of file