summaryrefslogtreecommitdiff
path: root/src/main/java/lance5057/tDefense/armor
diff options
context:
space:
mode:
authorLance5057 <Lance5057@gmail.com>2016-04-20 05:15:15 -0500
committerLance5057 <Lance5057@gmail.com>2016-04-20 05:15:15 -0500
commitc7aa1eada63170a2fb6945af26398702849030f5 (patch)
tree5749abd3c4a42ae115b92820fb2a3db8f00af433 /src/main/java/lance5057/tDefense/armor
parentf0dbe7a46426355f9eab6eb3933277664baafc57 (diff)
Wrench changes, start of unified armor renderer
API's in flux, please fix.
Diffstat (limited to 'src/main/java/lance5057/tDefense/armor')
-rw-r--r--src/main/java/lance5057/tDefense/armor/ArmorCore.java48
-rw-r--r--src/main/java/lance5057/tDefense/armor/events/ArmorModEvents.java4
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/heavy/TinkersBreastplate.java4
-rw-r--r--src/main/java/lance5057/tDefense/armor/items/light/TinkersChausses.java2
-rw-r--r--src/main/java/lance5057/tDefense/armor/modifiers/ArmorMods.java210
-rw-r--r--src/main/java/lance5057/tDefense/armor/modifiers/Thaumcraft/ThaumArmorMods.java4
-rw-r--r--src/main/java/lance5057/tDefense/armor/modifiers/modifierBoolExclusive.java59
-rw-r--r--src/main/java/lance5057/tDefense/armor/modifiers/modifierIntExclusive.java22
-rw-r--r--src/main/java/lance5057/tDefense/armor/renderers/ArmorRenderer.java7
-rw-r--r--src/main/java/lance5057/tDefense/armor/renderers/heavy/ModelTinkersBreastplate.java30
10 files changed, 328 insertions, 62 deletions
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();
}