From c7aa1eada63170a2fb6945af26398702849030f5 Mon Sep 17 00:00:00 2001 From: Lance5057 Date: Wed, 20 Apr 2016 05:15:15 -0500 Subject: Wrench changes, start of unified armor renderer API's in flux, please fix. --- .../java/lance5057/tDefense/TDIntegration.java | 8 +- src/main/java/lance5057/tDefense/TD_Config.java | 95 +++++++--- .../java/lance5057/tDefense/TinkersDefense.java | 20 +- .../java/lance5057/tDefense/armor/ArmorCore.java | 48 ++++- .../tDefense/armor/events/ArmorModEvents.java | 4 + .../armor/items/heavy/TinkersBreastplate.java | 4 +- .../armor/items/light/TinkersChausses.java | 2 +- .../tDefense/armor/modifiers/ArmorMods.java | 210 +++++++++++++++++++-- .../armor/modifiers/Thaumcraft/ThaumArmorMods.java | 4 +- .../armor/modifiers/modifierBoolExclusive.java | 59 ++++-- .../armor/modifiers/modifierIntExclusive.java | 22 ++- .../tDefense/armor/renderers/ArmorRenderer.java | 7 +- .../renderers/heavy/ModelTinkersBreastplate.java | 30 ++- .../tDefense/core/tools/TinkerWrench.java | 132 ++++++++++++- .../tools/modifiers/Thaumcraft/ThaumcraftMods.java | 9 +- 15 files changed, 541 insertions(+), 113 deletions(-) (limited to 'src/main/java/lance5057/tDefense') diff --git a/src/main/java/lance5057/tDefense/TDIntegration.java b/src/main/java/lance5057/tDefense/TDIntegration.java index efadd04..cc7e38c 100644 --- a/src/main/java/lance5057/tDefense/TDIntegration.java +++ b/src/main/java/lance5057/tDefense/TDIntegration.java @@ -11,19 +11,19 @@ public final class TDIntegration public static void Integrate() { - if(Loader.isModLoaded("battlegear2")) + if(Loader.isModLoaded("battlegear2") && TinkersDefense.config.MineAndBladeAddon) { mineAndBlade = true; } - if(Loader.isModLoaded("Thaumcraft")) + if(Loader.isModLoaded("Thaumcraft") && TinkersDefense.config.ThaumcraftAddon) { thaumcraft = true; } - if(Loader.isModLoaded("Botania")) + if(Loader.isModLoaded("Botania") && TinkersDefense.config.BotaniaAddon) { botania = true; } - if(Loader.isModLoaded("bloodmagic")) + if(Loader.isModLoaded("bloodmagic") && TinkersDefense.config.BloodMagicAddon) { bloodMagic = true; } diff --git a/src/main/java/lance5057/tDefense/TD_Config.java b/src/main/java/lance5057/tDefense/TD_Config.java index 36d8321..fb1280d 100644 --- a/src/main/java/lance5057/tDefense/TD_Config.java +++ b/src/main/java/lance5057/tDefense/TD_Config.java @@ -1,17 +1,19 @@ package lance5057.tDefense; +import scala.Int; import net.minecraftforge.common.config.Configuration; import cpw.mods.fml.common.event.FMLPreInitializationEvent; public class TD_Config { - public int SoulBoundID; + static int count = 18; public int AeonsteelMatID; public int QueensGoldMatID; public int DogbeariumMatID; public int RedMintMatID; public int GreenMintMatID; + public int SoulBoundID; public int DazeID; public int CrestFeathersID; public int CrestMirrorsID; @@ -28,25 +30,46 @@ public class TD_Config public int ArmorFirewalkerID; public int ArmorDepthstriderID; public int ArmorRebreatherID; + public int ArmorNightvisionID; + public int ArmorAntiBlindnessID; + public int ArmorPumpkinID; + public int ArmorDodgeID; + public int ArmorThornsID; + public int ArmorAbsorptionID; + public int ArmorJumpboostID; + public int ArmorSpeedID; + public int ArmorHighstepID; + public int ArmorKnockbackResistID; public int MaterialIndex; + public boolean MineAndBladeAddon; + public boolean BotaniaAddon; public int CorpseIvyModID; + public int ManaRepairModID; + public int TerraCoreIvyModID; + public int ArmorPixieCoreModID; + public int ArmorManaDiscountModID; public boolean ThaumcraftAddon; public int RevealingModID; public int VisDiscountModID; public int CapsModID; - public int SpellbindModID; - + //public int SpellbindModID; + + public boolean BloodMagicAddon; + public int BloodLustModID; + public int BloodOathModID; + public int ScabbingModID; + public TD_Config(FMLPreInitializationEvent e) { Configuration config = new Configuration(e.getSuggestedConfigurationFile()); config.load(); - MaterialIndex = config.get("Material Index", "Highest material ID - TDefense - 206 MFR - 1001 ExtraTIC - 1024", 206).getInt(); + MaterialIndex = config.getInt("Material Index","Highest material ID" , 206, 30, Int.MaxValue(), "TDefense - 206 MFR - 1001 ExtraTIC - 1024"); AeonsteelMatID = config.get("Material Configs", "Aeonsteel Material ID", 201).getInt(); QueensGoldMatID = config.get("Material Configs", "QueensGold Material ID", 202).getInt(); @@ -54,32 +77,44 @@ public class TD_Config RedMintMatID = config.get("Material Configs", "RedMint Material ID", 204).getInt(); GreenMintMatID = config.get("Material Configs", "GreenMint Material ID", 205).getInt(); - DazeID = config.get("Modifier Configs", "Daze ID", 18).getInt(); - CrestFeathersID = config.get("Modifier Configs", "Crest of Feathers ID", 19).getInt(); - CrestMirrorsID = config.get("Modifier Configs", "Crest of Mirrors ID", 20).getInt(); - CrestLegendsID = config.get("Modifier Configs", "Crest of Legends ID", 21).getInt(); - CrestLegendsID = config.get("Modifier Configs", "Crest of Legends ID", 22).getInt(); - SoulBoundID = config.get("Modifier Configs", "Soulbound ID", 23).getInt(); - - ArmorProtectionID = config.getInt("Protection ID", "Armor Modifier Configs", 40, 0, Integer.MAX_VALUE, ""); - ArmorFireProtectionID = config.getInt("Fire Protection ID", "Armor Modifier Configs", 41, 0, Integer.MAX_VALUE, ""); - ArmorBlastProtectionID = config.getInt("Blast Protection ID", "Armor Modifier Configs", 42, 0, Integer.MAX_VALUE, ""); - ArmorProjectileProtectionID = config.getInt("Projectile Protection ID", "Armor Modifier Configs", 43, 0, Integer.MAX_VALUE, ""); - ArmorFeatherfallID = config.getInt("Featherfall ID", "Armor Modifier Configs", 44, 0, Integer.MAX_VALUE, ""); - ArmorGlowstepID = config.getInt("Glowstep ID", "Armor Modifier Configs", 45, 0, Integer.MAX_VALUE, ""); - ArmorFrostwalkerID = config.getInt("Frostwalker ID", "Armor Modifier Configs", 46, 0, Integer.MAX_VALUE, ""); - ArmorFirewalkerID = config.getInt("Firewalker ID", "Armor Modifier Configs", 47, 0, Integer.MAX_VALUE, ""); - ArmorDepthstriderID = config.getInt("Depthstrider ID", "Armor Modifier Configs", 48, 0, Integer.MAX_VALUE, ""); - ArmorRebreatherID = config.getInt("Rebreather ID", "Armor Modifier Configs", 49, 0, Integer.MAX_VALUE, ""); - - BotaniaAddon = config.getBoolean("Enable Botania Addon", "Botania Addon", true, "Still requires Botania to use"); - CorpseIvyModID = config.getInt("Corpse Drinker Ivy Modifier ID", "Botania Addon", 60, 0, Integer.MAX_VALUE, ""); - - ThaumcraftAddon = config.getBoolean("Enable Thaumcraft Addon", "Thaumcraft Addon", true, "Requires Thaumcraft to use"); - RevealingModID = config.getInt("Revealing Modifier ID", "Thaumcraft Addon", 70, 0, Integer.MAX_VALUE, ""); - VisDiscountModID = config.getInt("Vis Discount Modifier ID", "Thaumcraft Addon", 71, 0, Integer.MAX_VALUE, ""); - CapsModID = config.getInt("Cap Repair Modifier ID", "Thaumcraft Addon", 72, 0, Integer.MAX_VALUE, ""); - SpellbindModID = config.getInt("Spellbinding Modifier ID", "Thaumcraft Addon", 73, 0, Integer.MAX_VALUE, ""); + DazeID = config.get("Modifier Configs", "Daze ID", count++).getInt(); + CrestFeathersID = config.get("Modifier Configs", "Crest of Feathers ID", count++).getInt(); + CrestMirrorsID = config.get("Modifier Configs", "Crest of Mirrors ID", count++).getInt(); + CrestLegendsID = config.get("Modifier Configs", "Crest of Legends ID", count++).getInt(); + CrestLegendsID = config.get("Modifier Configs", "Crest of Legends ID", count++).getInt(); + SoulBoundID = config.get("Modifier Configs", "Soulbound ID", count++).getInt(); + + ArmorProtectionID = config.get("Armor Modifier Configs", "Protection ID", count++).getInt(); + ArmorFireProtectionID = config.get("Armor Modifier Configs", "Fire Protection ID", count++).getInt(); + ArmorBlastProtectionID = config.get("Armor Modifier Configs", "Blast Protection ID", count++).getInt(); + ArmorProjectileProtectionID = config.get("Armor Modifier Configs", "Projectile Protection ID", count++).getInt(); + ArmorFeatherfallID = config.get("Armor Modifier Configs", "Featherfall ID", count++).getInt(); + ArmorGlowstepID = config.get("Armor Modifier Configs", "Glowstep ID", count++).getInt(); + ArmorFrostwalkerID = config.get("Armor Modifier Configs", "Frostwalker ID", count++).getInt(); + ArmorFirewalkerID = config.get("Armor Modifier Configs", "Firewalker ID", count++).getInt(); + ArmorDepthstriderID = config.get("Armor Modifier Configs", "Depthstrider ID", count++).getInt(); + ArmorRebreatherID = config.get("Armor Modifier Configs", "Rebreather ID", count++).getInt(); + ArmorNightvisionID = config.get("Armor Modifier Configs", "Nightvision ID", count++).getInt(); + ArmorAntiBlindnessID = config.get("Armor Modifier Configs", "Anti Blindness ID", count++).getInt(); + ArmorPumpkinID = config.get("Armor Modifier Configs", "Pumpkin ID", count++).getInt(); + ArmorDodgeID = config.get("Armor Modifier Configs", "Dodge ID", count++).getInt(); + ArmorThornsID = config.get("Armor Modifier Configs", "Thorns ID", count++).getInt(); + ArmorAbsorptionID = config.get("Armor Modifier Configs", "Absorbtion ID", count++).getInt(); + ArmorJumpboostID = config.get("Armor Modifier Configs", "Jump Boost ID", count++).getInt(); + ArmorSpeedID = config.get("Armor Modifier Configs", "Speed ID", count++).getInt(); + ArmorHighstepID = config.get("Armor Modifier Configs", "High Step ID", count++).getInt(); + ArmorKnockbackResistID = config.get("Armor Modifier Configs", "Knockback Resistance ID", count++).getInt(); + + MineAndBladeAddon = config.getBoolean("Integration", "Enable Mine and Blade Addon", true, ""); + + BotaniaAddon = config.getBoolean("Integration", "Enable Botania Addon", true, ""); + CorpseIvyModID = config.get("Botania Addon", "Corpse Drinker Ivy Modifier ID", count++).getInt(); + + ThaumcraftAddon = config.getBoolean("Integration", "Enable Thaumcraft Addon", true, "Requires Thaumcraft to use"); + RevealingModID = config.get("Thaumcraft Addon", "Revealing Modifier ID", count++).getInt(); + VisDiscountModID = config.get("Thaumcraft Addon", "Vis Discount Modifier ID", count++).getInt(); + CapsModID = config.get("Thaumcraft Addon", "Cap Repair Modifier ID", count++).getInt(); + //SpellbindModID = config.getInt("Spellbinding Modifier ID", "Thaumcraft Addon", 73, 0, Integer.MAX_VALUE, ""); config.save(); } diff --git a/src/main/java/lance5057/tDefense/TinkersDefense.java b/src/main/java/lance5057/tDefense/TinkersDefense.java index af99bcf..7af72c0 100644 --- a/src/main/java/lance5057/tDefense/TinkersDefense.java +++ b/src/main/java/lance5057/tDefense/TinkersDefense.java @@ -25,6 +25,7 @@ import lance5057.tDefense.armor.items.light.TinkersBoots; import lance5057.tDefense.armor.items.light.TinkersChausses; import lance5057.tDefense.armor.items.light.TinkersCoif; import lance5057.tDefense.armor.items.light.TinkersHauberk; +import lance5057.tDefense.armor.modifiers.ArmorMods; import lance5057.tDefense.armor.parts.Cloth; import lance5057.tDefense.armor.parts.ClothMaterial; import lance5057.tDefense.blocks.JewelersBench; @@ -79,6 +80,7 @@ import tconstruct.library.tools.ToolCore; import tconstruct.smeltery.TinkerSmeltery; import tconstruct.tools.TinkerTools; import tconstruct.tools.items.Pattern; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; @@ -112,8 +114,6 @@ public class TinkersDefense }; public static TDEventHandler TDevents; - public static ArmorRenderEvent AREvent; - public static ArmorModEvents AMEvent; public static TD_Config config; @@ -216,18 +216,16 @@ public class TinkersDefense public void preInit(FMLPreInitializationEvent e) { month = this.date.getMonth(); - TDIntegration.Integrate(); - + PacketHandler.init(); TDevents = new TDEventHandler(); - AMEvent = new ArmorModEvents(); - AREvent = new ArmorRenderEvent(); - MinecraftForge.EVENT_BUS.register(AREvent); - MinecraftForge.EVENT_BUS.register(AMEvent); + MinecraftForge.EVENT_BUS.register(new ArmorRenderEvent()); + MinecraftForge.EVENT_BUS.register(new ArmorModEvents()); config = new TD_Config(e); + TDIntegration.Integrate(); NetworkRegistry.INSTANCE.registerGuiHandler(TinkersDefense.instance, new CommonProxy()); MinecraftForge.EVENT_BUS.register(this); @@ -237,8 +235,6 @@ public class TinkersDefense tabIcon = new Item().setMaxStackSize(1).setCreativeTab(tabName).setUnlocalizedName("tabIcon").setTextureName(Reference.MOD_ID + ":Icon"); GameRegistry.registerItem(tabIcon, "tabIcon"); - //flowermod = new TDAddonBotania(); - mods = new Modifiers(); mods.preInit(); @@ -520,9 +516,9 @@ public class TinkersDefense PatternBuilder pb = PatternBuilder.instance; - TConstructClientRegistry.toolButtons.add(new ToolGuiElement(1, 0, 0, new int[] {9, 0, 4, 0}, new int[] {2, 3, 2, 0}, StatCollector.translateToLocal("gui.toolstation.roundshield.name"), StatCollector.translateToLocal("gui.toolstation.roundshield.desc"), "tinkersdefense", "textures/gui/icons.png")); + TConstructClientRegistry.toolButtons.add(new ToolGuiElement(1, 0, 0, new int[] {9, 0, 4, 0}, new int[] {2, 3, 2, 0}, StatCollector.translateToLocal("gui.toolstation.roundshield.name"), StatCollector.translateToLocal("gui.toolstation.roundshield.desc"), "tinkersdefense", "textures/gui/icons2.png")); - ToolGuiElement button2 = new ToolGuiElement(5, 0, 0, new int[] {9, 8, 9, 9}, new int[] {2, 3, 2, 3}, StatCollector.translateToLocal("gui.toolstation.heatershield.name"), StatCollector.translateToLocal("gui.toolstation.heatershield.desc"), "tinkersdefense:", "textures/gui/icons.png"); + ToolGuiElement button2 = new ToolGuiElement(5, 0, 0, new int[] {0, 0, 0, 0}, new int[] {2, 3, 2, 3}, StatCollector.translateToLocal("gui.toolstation.heatershield.name"), StatCollector.translateToLocal("gui.toolstation.heatershield.desc"), "tinkersdefense:", "textures/gui/icons2.png"); TConstructClientRegistry.tierTwoButtons.add(button2); TConstructClientRegistry.stencilButtons2.add(new StencilGuiElement(0, 0, 50, "tinkersdefense", "textures/gui/icons.png")); diff --git a/src/main/java/lance5057/tDefense/armor/ArmorCore.java b/src/main/java/lance5057/tDefense/armor/ArmorCore.java index f92fffe..3cc3732 100644 --- a/src/main/java/lance5057/tDefense/armor/ArmorCore.java +++ b/src/main/java/lance5057/tDefense/armor/ArmorCore.java @@ -1,5 +1,7 @@ package lance5057.tDefense.armor; +import org.lwjgl.opengl.GL11; + import lance5057.tDefense.TDIntegration; import lance5057.tDefense.TinkersDefense; import net.minecraft.client.model.ModelBiped; @@ -10,11 +12,13 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.DamageSource; +import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; import net.minecraftforge.common.ISpecialArmor; import tconstruct.library.tools.AbilityHelper; import tconstruct.library.tools.ToolCore; import thaumcraft.api.IRunicArmor; +import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -129,7 +133,7 @@ public class ArmorCore extends ToolCore implements ISpecialArmor, IRunicArmor public void onArmorTick(World world, EntityPlayer player, ItemStack itemStack) { - TinkersDefense.mods.AMod.UpdateAll((ToolCore) itemStack.getItem(), itemStack, world, player, itemStack.getTagCompound().getCompoundTag("InfiTool")); + //TinkersDefense.mods.AMod.UpdateAll((ToolCore) itemStack.getItem(), itemStack, world, player, itemStack.getTagCompound().getCompoundTag("InfiTool")); } @Override @@ -161,4 +165,46 @@ public class ArmorCore extends ToolCore implements ISpecialArmor, IRunicArmor } } + public void renderArmor(Entity entity, float f, float f1, float f2, float f3, float f4, float f5, String[] colors, ItemStack stack, int pass) + { + + ResourceLocation rc = new ResourceLocation("tinkersdefense:textures/" + this.getDefaultFolder() + "/" + getTexture(pass, stack) + ".png"); + FMLClientHandler.instance().getClient().renderEngine.bindTexture(rc); + + float size = 1.6f; + GL11.glScalef(1.0F / size, 1.0F / size, 1.0F / size); + GL11.glTranslatef(0.0F, -0.01F, 0.0F); + + int[] intColors = TinkersDefense.hexToRGB(colors[pass]); + GL11.glColor3d((float) intColors[0] / 255, (float) intColors[1] / 255, (float) intColors[2] / 255); + + } + + public String getTexture(int pass, ItemStack stack) + { + NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + switch(pass) + { + case 0: + return this.getIconSuffix(0); + case 1: + return this.getIconSuffix(2); + case 2: + return this.getIconSuffix(3); + case 3: + return this.getIconSuffix(4); + + default: + if(tags != null && tags.hasKey("Effect" + (1 + pass - getPartAmount()))) + { + String effect = effectStrings.get(tags.getInteger("Effect" + (1 + pass - getPartAmount()))); + if(effect != null) + return effect.substring(effect.lastIndexOf("/")); + else + return ""; + + } + } + return ""; + } } diff --git a/src/main/java/lance5057/tDefense/armor/events/ArmorModEvents.java b/src/main/java/lance5057/tDefense/armor/events/ArmorModEvents.java index 5c76a5a..90a3088 100644 --- a/src/main/java/lance5057/tDefense/armor/events/ArmorModEvents.java +++ b/src/main/java/lance5057/tDefense/armor/events/ArmorModEvents.java @@ -1,8 +1,12 @@ package lance5057.tDefense.armor.events; import lance5057.tDefense.armor.ArmorCore; +import lance5057.tDefense.armor.items.cloth.TinkersRobe; +import lance5057.tDefense.armor.items.heavy.TinkersGrieves; +import lance5057.tDefense.armor.items.light.TinkersChausses; import lance5057.tDefense.armor.modifiers.ArmorMods; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; diff --git a/src/main/java/lance5057/tDefense/armor/items/heavy/TinkersBreastplate.java b/src/main/java/lance5057/tDefense/armor/items/heavy/TinkersBreastplate.java index 2195951..e378619 100644 --- a/src/main/java/lance5057/tDefense/armor/items/heavy/TinkersBreastplate.java +++ b/src/main/java/lance5057/tDefense/armor/items/heavy/TinkersBreastplate.java @@ -144,8 +144,8 @@ public class TinkersBreastplate extends ArmorCore for(int j = 0; j < 10; j++) color[j] = Integer.toHexString(itemStack.getItem().getColorFromItemStack(itemStack, j)); - String[] textures = {this.getIconSuffix(2), this.getIconSuffix(0), this.getIconSuffix(3), this.getIconSuffix(4)}; - ClientProxy.breastplate.SetColors(color, this.getDefaultFolder(), textures); + //String[] textures = {this.getIconSuffix(2), this.getIconSuffix(0), this.getIconSuffix(3), this.getIconSuffix(4)}; + ClientProxy.breastplate.SetColors(color, this.getDefaultFolder(), itemStack); return ClientProxy.breastplate; } } diff --git a/src/main/java/lance5057/tDefense/armor/items/light/TinkersChausses.java b/src/main/java/lance5057/tDefense/armor/items/light/TinkersChausses.java index 40fc7f0..8624bff 100644 --- a/src/main/java/lance5057/tDefense/armor/items/light/TinkersChausses.java +++ b/src/main/java/lance5057/tDefense/armor/items/light/TinkersChausses.java @@ -115,7 +115,7 @@ public class TinkersChausses extends ArmorCore @Override public String[] getTraits() { - return new String[] {"armor", "feet", "chausses", "lightarmor"}; + return new String[] {"armor", "pants", "chausses", "lightarmor"}; } @Override diff --git a/src/main/java/lance5057/tDefense/armor/modifiers/ArmorMods.java b/src/main/java/lance5057/tDefense/armor/modifiers/ArmorMods.java index 4b5d006..de0fc88 100644 --- a/src/main/java/lance5057/tDefense/armor/modifiers/ArmorMods.java +++ b/src/main/java/lance5057/tDefense/armor/modifiers/ArmorMods.java @@ -3,6 +3,10 @@ package lance5057.tDefense.armor.modifiers; import lance5057.tDefense.Reference; import lance5057.tDefense.TDIntegration; import lance5057.tDefense.TinkersDefense; +import lance5057.tDefense.armor.ArmorCore; +import lance5057.tDefense.armor.items.cloth.TinkersRobe; +import lance5057.tDefense.armor.items.heavy.TinkersGrieves; +import lance5057.tDefense.armor.items.light.TinkersChausses; import lance5057.tDefense.armor.modifiers.Thaumcraft.ThaumArmorMods; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; @@ -14,12 +18,20 @@ import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.event.entity.living.LivingEvent.LivingJumpEvent; import tconstruct.library.TConstructRegistry; import tconstruct.library.client.TConstructClientRegistry; import tconstruct.library.crafting.ModifyBuilder; import tconstruct.library.tools.ToolCore; import tconstruct.tools.TinkerTools; +import cpw.mods.fml.common.FMLCommonHandler; +import cpw.mods.fml.common.eventhandler.SubscribeEvent; +import cpw.mods.fml.common.gameevent.TickEvent; import cpw.mods.fml.common.registry.GameRegistry; public class ArmorMods @@ -29,24 +41,31 @@ public class ArmorMods Item item_Canister; Item item_Emptycanister; Item item_Rebreather; + Item item_NightvisionGoggles; Item item_Glowsole; Item item_Firesole; Item item_Icesole; Item item_Feathersole; Item item_Flippers; - + public ArmorMods() { + FMLCommonHandler.instance().bus().register(this); + MinecraftForge.EVENT_BUS.register(this); + LoadItems(); } public void LoadItems() { + //Head item_Canister = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(10).setUnlocalizedName("FilledCart").setTextureName(Reference.MOD_ID + ":FilledCart"); item_Emptycanister = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(10).setUnlocalizedName("EmptyCart").setTextureName(Reference.MOD_ID + ":EmptyCart"); item_Rebreather = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(1).setUnlocalizedName("Rebreather").setTextureName(Reference.MOD_ID + ":Rebreather"); + item_NightvisionGoggles = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(1).setUnlocalizedName("NightvisionGoggles").setTextureName(Reference.MOD_ID + ":NightvisionGoggles"); + //Feet item_Feathersole = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(1).setUnlocalizedName("FeatherSole").setTextureName(Reference.MOD_ID + ":FeatherSole"); item_Firesole = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(1).setUnlocalizedName("FireSole").setTextureName(Reference.MOD_ID + ":FireSole"); item_Icesole = new Item().setCreativeTab(TinkersDefense.tabName).setMaxStackSize(1).setUnlocalizedName("IceSole").setTextureName(Reference.MOD_ID + ":IceSole"); @@ -56,6 +75,7 @@ public class ArmorMods GameRegistry.registerItem(item_Canister, "FilledCart"); GameRegistry.registerItem(item_Emptycanister, "EmptyCart"); GameRegistry.registerItem(item_Rebreather, "Rebreather"); + GameRegistry.registerItem(item_NightvisionGoggles, "NightvisionGoggles"); GameRegistry.registerItem(item_Feathersole, "FeatherSole"); GameRegistry.registerItem(item_Firesole, "FireSole"); @@ -75,7 +95,8 @@ public class ArmorMods { GameRegistry.addShapedRecipe(new ItemStack(item_Canister), new Object[] {"-c-", "ses", "-s-", 'c', new ItemStack(Items.coal, 1, 1), 's', new ItemStack(Blocks.sapling, 1), 'e', new ItemStack(item_Emptycanister, 1, 0)}); GameRegistry.addShapedRecipe(new ItemStack(item_Emptycanister), new Object[] {"gsg", "lil", "gig", 'g', new ItemStack(Items.gold_nugget, 1, 0), 's', new ItemStack(Items.slime_ball, 1, 0), 'l', new ItemStack(Items.dye, 1, 4), 'i', new ItemStack(Items.iron_ingot, 1, 0)}); - GameRegistry.addShapedRecipe(new ItemStack(item_Rebreather), new Object[] {"-s-", "eie", "-d-", 's', new ItemStack(Items.slime_ball, 1, 0), 'e', new ItemStack(item_Emptycanister, 1, 0), 'i', new ItemStack(TinkersDefense.partArmorplate, 1, 2), 'd', new ItemStack(Items.dye, 1, 0)}); + GameRegistry.addShapedRecipe(new ItemStack(item_Rebreather), new Object[] {"-s-", "eie", "-d-", 's', new ItemStack(Items.slime_ball, 1, 0), 'e', new ItemStack(item_Emptycanister, 1, 0), 'i', new ItemStack(TinkersDefense.partArmorplate, 1, 2), 'd', new ItemStack(Items.dye, 1, 4)}); + GameRegistry.addShapedRecipe(new ItemStack(item_NightvisionGoggles), new Object[] {"-s-", "eie", "-d-", 's', new ItemStack(Items.potionitem, 1, Potion.nightVision.id), 'e', new ItemStack(Blocks.glass_pane, 1, 0), 'i', new ItemStack(Items.iron_ingot, 1, 0), 'd', new ItemStack(Items.dye, 1, 2)}); GameRegistry.addShapedRecipe(new ItemStack(item_Glowsole), new Object[] {"ggg", "ala", "ggg", 'g', new ItemStack(Blocks.glowstone, 1, 0), 'a', new ItemStack(Items.glowstone_dust, 1, 0), 'l', TConstructRegistry.getItemStack("lavaCrystal")}); GameRegistry.addShapedRecipe(new ItemStack(item_Glowsole), new Object[] {"gag", "glg", "gag", 'g', new ItemStack(Blocks.glowstone, 1, 0), 'a', new ItemStack(Items.glowstone_dust, 1, 0), 'l', TConstructRegistry.getItemStack("lavaCrystal")}); @@ -93,20 +114,29 @@ public class ArmorMods public void RegisterModifiers() { //Head only - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Rebreather, 1, 0)}, TinkersDefense.config.ArmorRebreatherID, "Rebreather", "\u00A76", "Rebreather", new String[] {"head"}, 1)); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Rebreather, 1, 0)}, TinkersDefense.config.ArmorRebreatherID, "Rebreather", EnumChatFormatting.GOLD.toString(), "Rebreather", new String[] {"head"}, 1, null)); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_NightvisionGoggles, 1, 0)}, TinkersDefense.config.ArmorNightvisionID, "Nightvision", EnumChatFormatting.GREEN.toString(), "Nightvision", new String[] {"head"}, 1, null)); + ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {new ItemStack(Items.ghast_tear, 1, 0)}, TinkersDefense.config.ArmorAntiBlindnessID, "AntiBlindness", 1, EnumChatFormatting.AQUA.toString(), "AntiBlindness", new String[] {"head"}, 1, null)); + //ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(Blocks.pumpkin, 1, 0)}, TinkersDefense.config.ArmorPumpkinID, "Pumpkin", EnumChatFormatting.GOLD.toString(), "Pumpkin", new String[] {"head"}, 1, null)); + + //Legs only + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(Blocks.sticky_piston, 1, 0)}, TinkersDefense.config.ArmorHighstepID, "Highstep", EnumChatFormatting.LIGHT_PURPLE.toString(), "Highstep", new String[] {"pants"}, 1, null)); + ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {new ItemStack(Blocks.redstone_block, 1, 0)}, TinkersDefense.config.ArmorSpeedID, "Speed", 1, EnumChatFormatting.DARK_RED.toString(), "Haste", new String[] {"pants"}, 1, null)); + ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {new ItemStack(Blocks.piston, 1, 0)}, TinkersDefense.config.ArmorJumpboostID, "Jump", 1, EnumChatFormatting.WHITE.toString(), "Jump Boost", new String[] {"pants"}, 1, null)); //Excluding Cloth - ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(TinkersDefense.partArmorplate, 1, 2)}, TinkersDefense.config.ArmorProtectionID, 1, "\u00A77", "Protection")); - ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(Items.magma_cream, 1)}, TinkersDefense.config.ArmorFireProtectionID, 1, "\u00A7c", "Fire Protection")); - ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(Blocks.wool, 1)}, TinkersDefense.config.ArmorBlastProtectionID, 1, "\u00A72", "Blast Protection")); - ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(TinkersDefense.partRivet, 1, 2)}, TinkersDefense.config.ArmorProjectileProtectionID, 1, "\u00A7f", "Projectile Protection")); - ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(item_Feathersole, 1, 0)}, TinkersDefense.config.ArmorFeatherfallID, 1, "\u00A7f", "Featherfall")); + ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(TinkersDefense.partArmorplate, 1, 2)}, TinkersDefense.config.ArmorProtectionID, 1, EnumChatFormatting.DARK_GRAY.toString(), "Protection")); + ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(Items.magma_cream, 1)}, TinkersDefense.config.ArmorFireProtectionID, 1, EnumChatFormatting.RED.toString(), "Fire Protection")); + ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(Blocks.wool, 1)}, TinkersDefense.config.ArmorBlastProtectionID, 1, EnumChatFormatting.DARK_GREEN.toString(), "Blast Protection")); + ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(TinkersDefense.partRivet, 1, 2)}, TinkersDefense.config.ArmorProjectileProtectionID, 1, EnumChatFormatting.GRAY.toString(), "Projectile Protection")); + ModifyBuilder.registerModifier(new modifierProtection(new ItemStack[] {new ItemStack(item_Feathersole, 1, 0)}, TinkersDefense.config.ArmorFeatherfallID, 1, EnumChatFormatting.WHITE.toString(), "Featherfall")); + ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {TConstructRegistry.getItemStack("canisterRedHeart")}, TinkersDefense.config.ArmorAbsorptionID, "HealthBoost", 1, EnumChatFormatting.DARK_RED.toString(), "HealthBoost", new String[] {"heavy", "light"}, 1, null)); //Feet only - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Glowsole, 1, 0)}, TinkersDefense.config.ArmorGlowstepID, "GlowStep", "\u00A76", "GlowStep", new String[] {"feet"}, 1)); - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Firesole, 1, 0)}, TinkersDefense.config.ArmorFirewalkerID, "Firewalker", "\u00A74", "Firewalker", new String[] {"feet"}, 1)); - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Icesole, 1, 0)}, TinkersDefense.config.ArmorFrostwalkerID, "Frostwalker", "\u00A7b", "Frostwalker", new String[] {"feet"}, 1)); - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Flippers, 1, 0)}, TinkersDefense.config.ArmorDepthstriderID, "Depthstrider", "\u00A71", "Depthstrider", new String[] {"feet"}, 1)); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Glowsole, 1, 0)}, TinkersDefense.config.ArmorGlowstepID, "GlowStep", EnumChatFormatting.YELLOW.toString(), "GlowStep", new String[] {"feet"}, 1, null)); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Firesole, 1, 0)}, TinkersDefense.config.ArmorFirewalkerID, "Firewalker", EnumChatFormatting.RED.toString(), "Firewalker", new String[] {"feet"}, 1, new String[] {"Frostwalker"})); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Icesole, 1, 0)}, TinkersDefense.config.ArmorFrostwalkerID, "Frostwalker", EnumChatFormatting.BLUE.toString(), "Frostwalker", new String[] {"feet"}, 1, new String[] {"Firewalker"})); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {new ItemStack(item_Flippers, 1, 0)}, TinkersDefense.config.ArmorDepthstriderID, "Depthstrider", EnumChatFormatting.DARK_BLUE.toString(), "Depthstrider", new String[] {"feet"}, 1, new String[] {"Frostwalker", "Firewalker"})); for(ToolCore tool : TConstructRegistry.getToolMapping()) { @@ -143,11 +173,23 @@ public class ArmorMods UpdateGlowstep(tool, stack, world, entity); if(tags.hasKey("Rebreather")) UpdateRebreather(tool, stack, world, entity); + if(tags.hasKey("Nightvision")) + UpdateNightvision(tool, stack, world, entity); + if(tags.hasKey("AntiBlindness")) + UpdateAntiBlind(tool, stack, world, entity); + if(tags.hasKey("HealthBoost")) + UpdateHealthBoost(tool, stack, world, entity, tags); + //UpdateHighstep(tool, stack, world, entity); + } else { if(tags.hasKey("Depthstrider")) UpdateFlippers(tool, stack, world, entity); + if(tags.hasKey("Speed")) + UpdateSpeed(tool, stack, world, entity, tags); +// if(tags.hasKey("Jump")) +// UpdateJump(tool, stack, world, entity, tags); } if(TDIntegration.thaumcraft) @@ -236,4 +278,148 @@ public class ArmorMods } } } + + public void UpdateNightvision(ToolCore tool, ItemStack stack, World world, Entity entity) + { + if(!((EntityPlayer) entity).isPotionActive(Potion.nightVision) || ((EntityPlayer) entity).getActivePotionEffect(Potion.nightVision).getDuration() < 1000) + ((EntityPlayer) entity).addPotionEffect(new PotionEffect(Potion.nightVision.id, 1000, 1, true)); + } + + boolean isBlind = false; + + public void UpdateAntiBlind(ToolCore tool, ItemStack stack, World world, Entity entity) + { + NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + if(((EntityPlayer) entity).isPotionActive(Potion.blindness) && !isBlind) + { + int roll = world.rand.nextInt(100); + int antiLevel = tags.getInteger("AntiBlindness"); + if(roll < antiLevel * 10) + { + ((EntityPlayer) entity).removePotionEffect(Potion.blindness.id); + } + else + { + isBlind = true; + } + } + if(!((EntityPlayer) entity).isPotionActive(Potion.blindness) && isBlind) + { + isBlind = false; + } + } + + public void UpdateSpeed(ToolCore tool, ItemStack stack, World world, Entity entity, NBTTagCompound tags) + { + EntityPlayer ent = (EntityPlayer) entity; + if(!entity.isInWater() && !ent.isSneaking() && ent.moveForward > 0.0) + { + float speed = (float) (tags.getInteger("Speed") * 0.05); + if(entity.onGround) + { + ent.moveFlying(0.0f, 1.0f, speed); + } + else + { + ent.jumpMovementFactor = speed; + } + } + } + + PotionEffect hb; + public void UpdateHealthBoost(ToolCore tool, ItemStack stack, World world, Entity entity, NBTTagCompound tags) + { + if(!((EntityPlayer) entity).isPotionActive(21)) + ((EntityPlayer) entity).addPotionEffect(new PotionEffect(21, 100, tags.getInteger("HealthBoost")-1, true)); + else if (((EntityPlayer) entity).getActivePotionEffect(Potion.potionTypes[21]).getDuration() < 10) + ((EntityPlayer) entity).getActivePotionEffect(Potion.potionTypes[21]).combine(new PotionEffect(21, 100, tags.getInteger("HealthBoost")-1, true)); + } + +// public void UpdateJump(ToolCore tool, ItemStack stack, World world, Entity entity, NBTTagCompound tags) +// { +// EntityPlayer ent = (EntityPlayer) entity; +// if(!entity.isInWater() && !ent.isSneaking() && ent.motionY > 0.0) +// { +// float speed = (float) (tags.getInteger("Jump") * 0.15); +// +// ent.jumpMovementFactor = speed; +// +// } +// } + + @SubscribeEvent + public void Jump(LivingJumpEvent event) + { + if(event.entityLiving instanceof EntityPlayer) + { + EntityPlayer player = (EntityPlayer) event.entityLiving; + if(player.getCurrentArmor(1) != null) + { + ItemStack legs = player.getCurrentArmor(1); + Item armor = legs.getItem(); + NBTTagCompound tags = legs.getTagCompound().getCompoundTag("InfiTool"); + + if((armor instanceof TinkersRobe || armor instanceof TinkersChausses || armor instanceof TinkersGrieves) && tags.hasKey("Jump")) + { + double speed = tags.getInteger("Jump") * 0.1; + player.setVelocity(0, 0.4 + speed, 0); + player.velocityChanged = true; + } + } + } + } + + @SubscribeEvent + public void Highstep(TickEvent.PlayerTickEvent event) + { + event.player.stepHeight = 0.5f; + if(event.player.getCurrentArmor(1) != null) + { + ItemStack legs = event.player.getCurrentArmor(1); + Item armor = legs.getItem(); + NBTTagCompound tags = legs.getTagCompound().getCompoundTag("InfiTool"); + + if((armor instanceof TinkersRobe || armor instanceof TinkersChausses || armor instanceof TinkersGrieves) && tags.hasKey("Highstep") && !event.player.isSneaking()) + { + event.player.stepHeight = 1.0f; + } + } + } + // public void UpdateHighstep(ToolCore tool, ItemStack stack, World world, Entity entity) + // { + // NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool"); + // EntityPlayer ent = (EntityPlayer) entity; + // + // if(tool instanceof TinkersRobe || tool instanceof TinkersChausses || tool instanceof TinkersGrieves) + // { + // ent.stepHeight = 0.5f; + // if(tags.hasKey("Highstep")) + // { + // if(!ent.isSneaking()) + // { + // ent.stepHeight = 1f; + // } + // } + // } + // + // } + + // @SubscribeEvent + // public void CalmEndermen(LivingSetAttackTargetEvent event) + // { + // NBTTagCompound tags; + // + // if(event.target instanceof EntityPlayer) + // { + // if(((EntityPlayer) event.target).getCurrentArmor(3).hasTagCompound() && ((EntityPlayer) event.target).getCurrentArmor(3).getTagCompound().hasKey("InfiTool")) + // { + // tags = ((EntityPlayer) event.target).getCurrentArmor(3).getTagCompound().getCompoundTag("InfiTool"); + // + // if(event.entityLiving instanceof EntityEnderman && tags.hasKey("Pumpkin")) + // { + // event.entityLiving.setRevengeTarget(null); + // } + // } + // } + // } } diff --git a/src/main/java/lance5057/tDefense/armor/modifiers/Thaumcraft/ThaumArmorMods.java b/src/main/java/lance5057/tDefense/armor/modifiers/Thaumcraft/ThaumArmorMods.java index ec0a444..96ce0c9 100644 --- a/src/main/java/lance5057/tDefense/armor/modifiers/Thaumcraft/ThaumArmorMods.java +++ b/src/main/java/lance5057/tDefense/armor/modifiers/Thaumcraft/ThaumArmorMods.java @@ -37,9 +37,9 @@ public class ThaumArmorMods public void RegisterModifiers() { - ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {ItemApi.getItem("itemGoggles", 0)}, TinkersDefense.config.RevealingModID, "Revealing", "\u00A75", "Revealing", new String[] {"head"}, 0)); + ModifyBuilder.registerModifier(new modifierBoolExclusive(new ItemStack[] {ItemApi.getItem("itemGoggles", 0)}, TinkersDefense.config.RevealingModID, "Revealing", "\u00A75", "Revealing", new String[] {"head"}, 0, null)); - ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {ItemApi.getItem("itemResource", 7)}, TinkersDefense.config.VisDiscountModID, "VisEmbroidery", 1, "\u00A79", "Vis Embroidery", new String[] {"cloth"}, 1)); + ModifyBuilder.registerModifier(new modifierIntExclusive(new ItemStack[] {ItemApi.getItem("itemResource", 7)}, TinkersDefense.config.VisDiscountModID, "VisEmbroidery", 1, "\u00A79", "Vis Embroidery", new String[] {"cloth"}, 1, new String[] {"ManaEmbroidery"})); for(ToolCore tool : TConstructRegistry.getToolMapping()) { diff --git a/src/main/java/lance5057/tDefense/armor/modifiers/modifierBoolExclusive.java b/src/main/java/lance5057/tDefense/armor/modifiers/modifierBoolExclusive.java index aa55571..0709dbf 100644 --- a/src/main/java/lance5057/tDefense/armor/modifiers/modifierBoolExclusive.java +++ b/src/main/java/lance5057/tDefense/armor/modifiers/modifierBoolExclusive.java @@ -10,18 +10,23 @@ import tconstruct.modifiers.tools.ModBoolean; public class modifierBoolExclusive extends ModBoolean { - String[] exclusive; - int modsNeeded = 0; - String color; - String tooltipName; - - public modifierBoolExclusive(ItemStack[] items, int effect, String tag, String c, String tip, String[] exclusive, int modsNeeded) + String[] exclusive; + int modsNeeded = 0; + String color; + String tooltipName; + String[] modExclusions; + + /* + * excludeMods: If these modifier keys are present this modifier wont take. + */ + public modifierBoolExclusive(ItemStack[] items, int effect, String tag, String c, String tip, String[] exclusive, int modsNeeded, String[] excludeMods) { super(items, effect, tag, c, tip); this.exclusive = exclusive; this.modsNeeded = modsNeeded; this.color = c; this.tooltipName = tip; + this.modExclusions = excludeMods; } @Override @@ -29,29 +34,43 @@ public class modifierBoolExclusive extends ModBoolean { List list = Arrays.asList(((ToolCore) tool.getItem()).getTraits()); NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); - + + boolean isExclusive = false; + boolean hasModRejection = false; + for(int i = 0; i < exclusive.length; i++) { if(list.contains(exclusive[i])) { - return tags.getInteger("Modifiers") > 0 && !tags.getBoolean(key); + isExclusive = true; } } - - return false; + + if(modExclusions != null) + { + for(int i = 0; i < modExclusions.length; i++) + { + if(tags.hasKey(modExclusions[i])) + { + hasModRejection = true; + } + } + } + + return isExclusive && !hasModRejection && !tags.hasKey(tooltipName); } - + @Override - public void modify (ItemStack[] input, ItemStack tool) - { - NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); + public void modify(ItemStack[] input, ItemStack tool) + { + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); - tags.setBoolean(key, true); + tags.setBoolean(key, true); - int modifiers = tags.getInteger("Modifiers"); - modifiers -= modsNeeded; - tags.setInteger("Modifiers", modifiers); + int modifiers = tags.getInteger("Modifiers"); + modifiers -= modsNeeded; + tags.setInteger("Modifiers", modifiers); - addToolTip(tool, color + tooltipName, color + key); - } + addToolTip(tool, color + tooltipName, color + key); + } } diff --git a/src/main/java/lance5057/tDefense/armor/modifiers/modifierIntExclusive.java b/src/main/java/lance5057/tDefense/armor/modifiers/modifierIntExclusive.java index 77116ee..5ff652e 100644 --- a/src/main/java/lance5057/tDefense/armor/modifiers/modifierIntExclusive.java +++ b/src/main/java/lance5057/tDefense/armor/modifiers/modifierIntExclusive.java @@ -17,8 +17,9 @@ public class modifierIntExclusive extends ModInteger int initialIncrease; int secondaryIncrease; int max = 5; + String[] modExclusions; - public modifierIntExclusive(ItemStack[] items, int effect, String dataKey, int increase, String c, String tip, String[] exclusive, int modsNeeded) + public modifierIntExclusive(ItemStack[] items, int effect, String dataKey, int increase, String c, String tip, String[] exclusive, int modsNeeded, String[] excludeMods) { super(items, effect, dataKey, increase, c, tip); this.exclusive = exclusive; @@ -26,6 +27,7 @@ public class modifierIntExclusive extends ModInteger initialIncrease = secondaryIncrease = increase; color = c; tooltipName = tip; + this.modExclusions = excludeMods; } public modifierIntExclusive(ItemStack[] items, int effect, String dataKey, int increase, String c, String tip, String[] exclusive, int modsNeeded, int max) @@ -45,15 +47,29 @@ public class modifierIntExclusive extends ModInteger List list = Arrays.asList(((ToolCore) tool.getItem()).getTraits()); NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); + boolean isExclusive = false; + boolean hasModRejection = false; + for(int i = 0; i < exclusive.length; i++) { if(list.contains(exclusive[i])) { - return tags.getInteger(tooltipName) < max; + isExclusive = true; + } + } + + if(modExclusions != null) + { + for(int i = 0; i < modExclusions.length; i++) + { + if(tags.hasKey(modExclusions[i])) + { + hasModRejection = true; + } } } - return false; + return tags.getInteger(tooltipName) < max; } @Override diff --git a/src/main/java/lance5057/tDefense/armor/renderers/ArmorRenderer.java b/src/main/java/lance5057/tDefense/armor/renderers/ArmorRenderer.java index 01a5983..fcafd47 100644 --- a/src/main/java/lance5057/tDefense/armor/renderers/ArmorRenderer.java +++ b/src/main/java/lance5057/tDefense/armor/renderers/ArmorRenderer.java @@ -2,12 +2,13 @@ package lance5057.tDefense.armor.renderers; import net.minecraft.client.model.ModelBiped; import net.minecraft.entity.Entity; +import net.minecraft.item.ItemStack; public class ArmorRenderer extends ModelBiped { public String[] colors; - public String[] textures; + public ItemStack stack; public String defaultFolder; public ArmorRenderer(float a, float b, int c, int d) @@ -15,10 +16,10 @@ public class ArmorRenderer extends ModelBiped super(a, b, c, d); } - public void SetColors(String[] colors, String defaultFolder, String[] textures) + public void SetColors(String[] colors, String defaultFolder, ItemStack stack) { this.colors = colors; - this.textures = textures; + this.stack = stack; this.defaultFolder = defaultFolder; } } diff --git a/src/main/java/lance5057/tDefense/armor/renderers/heavy/ModelTinkersBreastplate.java b/src/main/java/lance5057/tDefense/armor/renderers/heavy/ModelTinkersBreastplate.java index f1d777c..1f04e13 100644 --- a/src/main/java/lance5057/tDefense/armor/renderers/heavy/ModelTinkersBreastplate.java +++ b/src/main/java/lance5057/tDefense/armor/renderers/heavy/ModelTinkersBreastplate.java @@ -1,16 +1,12 @@ package lance5057.tDefense.armor.renderers.heavy; -import lance5057.tDefense.TinkersDefense; +import lance5057.tDefense.armor.ArmorCore; import lance5057.tDefense.armor.renderers.ArmorRenderer; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.util.ResourceLocation; import org.lwjgl.opengl.GL11; -import cpw.mods.fml.client.FMLClientHandler; - /** * ModelBiped - Either Mojang or a mod author * Created using Tabula 4.1.1 @@ -103,24 +99,22 @@ public class ModelTinkersBreastplate extends ArmorRenderer public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { GL11.glPushMatrix(); - for(int i = 0; i < 4; i++) - { - GL11.glPushMatrix(); - - FMLClientHandler.instance().getClient().renderEngine.bindTexture(new ResourceLocation("tinkersdefense:textures/" + defaultFolder + "/" + textures[i] + ".png")); - float size = 1.6f; - GL11.glScalef(1.0F / size, 1.0F / size, 1.0F / size); - GL11.glTranslatef(0.0F, -0.01F, 0.0F); + for(int i = 0; i < 10; i++) + { + String texture = ((ArmorCore) this.stack.getItem()).getTexture(i, stack); + if(texture != "") + { - int[] intColors = TinkersDefense.hexToRGB(colors[i]); - GL11.glColor3d((float) intColors[0] / 255, (float) intColors[1] / 255, (float) intColors[2] / 255); + GL11.glPushMatrix(); - //setLivingAnimations((EntityLivingBase) entity, f,f1, f5); - super.render(entity, f, f1, f2, f3, f4, f5); + ((ArmorCore) this.stack.getItem()).renderArmor(entity, f, f1, f2, f3, f4, f5, colors, stack, i); + super.render(entity, f, f1, f2, f3, f4, f5); - GL11.glPopMatrix(); + GL11.glPopMatrix(); + } } + GL11.glPopMatrix(); } diff --git a/src/main/java/lance5057/tDefense/core/tools/TinkerWrench.java b/src/main/java/lance5057/tDefense/core/tools/TinkerWrench.java index bb4b069..514718b 100644 --- a/src/main/java/lance5057/tDefense/core/tools/TinkerWrench.java +++ b/src/main/java/lance5057/tDefense/core/tools/TinkerWrench.java @@ -1,16 +1,36 @@ package lance5057.tDefense.core.tools; -import cpw.mods.fml.common.Optional; +import java.util.List; + +import ic2.api.tile.IWrenchable; +import mekanism.api.IMekWrench; +import net.minecraft.block.Block; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityChest; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; import tconstruct.library.tools.AbilityHelper; -import tconstruct.library.tools.Weapon; +import tconstruct.library.tools.ToolCore; import tconstruct.tools.TinkerTools; import buildcraft.api.tools.IToolWrench; +import cofh.api.block.IDismantleable; +import cofh.api.item.IToolHammer; +import cofh.lib.util.helpers.BlockHelper; +import cpw.mods.fml.common.Optional; +import cpw.mods.fml.common.event.FMLMissingMappingsEvent.Action; +import cpw.mods.fml.common.eventhandler.Event.Result; -@Optional.InterfaceList({@Optional.Interface(modid = "buildcraft", iface = "buildcraft.api.tools.IToolWrench")}) -public class TinkerWrench extends Weapon implements IToolWrench +@Optional.InterfaceList({@Optional.Interface(modid = "buildcraft", iface = "buildcraft.api.tools.IToolWrench"), @Optional.Interface(modid = "cofh", iface = "cofh.api.item.IToolHammer")}) +public class TinkerWrench extends ToolCore implements IToolWrench, IToolHammer { int induceDamage = 0; @@ -120,4 +140,108 @@ public class TinkerWrench extends Weapon implements IToolWrench AbilityHelper.damageTool(player.inventory.getCurrentItem(), 1, player, false); } + + @Override + @Optional.Method(modid = "cofh") + public boolean isUsable(ItemStack item, EntityLivingBase user, int x, int y, int z) + { + // TODO Auto-generated method stub + return true; + } + + @Override + @Optional.Method(modid = "cofh") + public void toolUsed(ItemStack item, EntityLivingBase user, int x, int y, int z) + { + // TODO Auto-generated method stub + + } + + @Override + public boolean onItemUseFirst(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ) + { + Block block = world.getBlock(x, y, z); + TileEntity te = world.getTileEntity(x, y, z); + int metaData = world.getBlockMetadata(x, y, z); + + if(te != null && te instanceof IWrenchable) + { + IWrenchable wte = (IWrenchable) te; + + if(!player.isSneaking()) + { +// for(int step = 1; step < 6; step++) +// { + //side = (wte.getFacing() + 6 - step) % 6; + if(!world.isRemote) + { + //side = side % -3;//(wte.getFacing() + step) % 6; +// + if(wte.wrenchCanSetFacing(player, side)) + { + wte.setFacing((short)side); + return true; + } + } +// } + } + else + { + if(!world.isRemote) + { + List drops = block.getDrops(world, x, y, z, metaData, 0); + boolean dropBlock = false; + + if(world.rand.nextFloat() <= wte.getWrenchDropRate()) + { + ItemStack drop = wte.getWrenchDrop(player); + if(drop != null) + { + if(drops.isEmpty()) + { + drops.add(drop); + } + else + { + drops.set(0, drop); + } + } + } + for(ItemStack itemStack : drops) + { + EntityItem ei = new EntityItem(world, x, y, z, itemStack.copy()); + world.spawnEntityInWorld(ei); + } + world.removeTileEntity(x, y, z); + world.setBlockToAir(x, y, z); + return true; + } + } + return false; + } + if(world.blockExists(x, y, z)) + { + if(block != null) + { + if(player.isSneaking() && block instanceof IDismantleable && ((IDismantleable) block).canDismantle(player, world, x, y, z)) + { + if(!world.isRemote) + { + ((IDismantleable) block).dismantleBlock(player, world, x, y, z, false); + player.swingItem(); + return true; + } + } + + } + } + return false; + } + + @Override + public String[] getTraits() + { + return new String[] {"wrench"}; + } + } diff --git a/src/main/java/lance5057/tDefense/core/tools/modifiers/Thaumcraft/ThaumcraftMods.java b/src/main/java/lance5057/tDefense/core/tools/modifiers/Thaumcraft/ThaumcraftMods.java index 2a6e9eb..9361223 100644 --- a/src/main/java/lance5057/tDefense/core/tools/modifiers/Thaumcraft/ThaumcraftMods.java +++ b/src/main/java/lance5057/tDefense/core/tools/modifiers/Thaumcraft/ThaumcraftMods.java @@ -11,6 +11,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; +import tconstruct.library.TConstructRegistry; +import tconstruct.library.client.TConstructClientRegistry; import tconstruct.library.crafting.ModifyBuilder; import tconstruct.library.tools.ToolCore; import thaumcraft.api.ItemApi; @@ -38,6 +40,11 @@ public class ThaumcraftMods public void RegisterModifiers() { ModifyBuilder.registerModifier(new modifierRepairVis(new ItemStack[] {ItemApi.getItem("itemWandCap", 0)}, TinkersDefense.config.CapsModID, "Caps", EnumChatFormatting.GOLD.toString(), "Caps")); + + for(ToolCore tool : TConstructRegistry.getToolMapping()) + { + TConstructClientRegistry.addEffectRenderMapping(tool, TinkersDefense.config.CapsModID, "tinker", "cap", true); + } } public void UpdateAll(ToolCore tool, ItemStack stack, World world, Entity entity, NBTTagCompound tags) @@ -70,7 +77,7 @@ public class ThaumcraftMods { consumeVisFromInventory = Class.forName("thaumcraft.common.items.wands.WandManager").getMethod("consumeVisFromInventory", EntityPlayer.class, AspectList.class); } - success = (boolean) consumeVisFromInventory.invoke(null, (EntityPlayer) entity, cost); + success = (Boolean) consumeVisFromInventory.invoke(null, (EntityPlayer) entity, cost); } catch(Exception ex) { -- cgit v1.2.3