diff options
| author | Lance5057 <Lance5057@gmail.com> | 2017-06-30 00:31:52 -0500 |
|---|---|---|
| committer | Lance5057 <Lance5057@gmail.com> | 2017-06-30 00:31:52 -0500 |
| commit | 18e5d45b4d530cc60e59d78cc436877a152b567c (patch) | |
| tree | 7c81ead0d846063f6f66599854b4078ca6932358 /src/main/java/lance5057/tDefense/armor | |
| parent | c757aeb7db1ff0c08ae7f3277ccb2620d5b55600 (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')
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 |
