summaryrefslogtreecommitdiff
path: root/src/main/java
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
parentf0dbe7a46426355f9eab6eb3933277664baafc57 (diff)
Wrench changes, start of unified armor renderer
API's in flux, please fix.
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/lance5057/tDefense/TDIntegration.java8
-rw-r--r--src/main/java/lance5057/tDefense/TD_Config.java95
-rw-r--r--src/main/java/lance5057/tDefense/TinkersDefense.java20
-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
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/TinkerWrench.java132
-rw-r--r--src/main/java/lance5057/tDefense/core/tools/modifiers/Thaumcraft/ThaumcraftMods.java9
15 files changed, 541 insertions, 113 deletions
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<ItemStack> 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)
{