diff --git a/resources/assets/tinker/manuals/firstday.xml b/resources/assets/tinker/manuals/firstday.xml
index 38d4af18..0416607a 100644
--- a/resources/assets/tinker/manuals/firstday.xml
+++ b/resources/assets/tinker/manuals/firstday.xml
@@ -21,6 +21,11 @@ By Skyla
workbench
5
+
+ Armor Modifiers
+ travelvest
+ 4
+
@@ -219,4 +224,91 @@ Note: The Smeltery is required to process all metals, including iron.
+
+The following armor modifiers seem to be missing names or in flux. No word is available on the accuracy or new home of these pages.
+
+
+
+travelgoggles
+nightvision
+
+
+
+Vision
+
+ dodge
+ two
+
+
+
+
+Corrupted Sight
+
+ stealth
+ two
+
+
+
+
+travelwings
+doublejump
+
+
+
+Freefall
+
+ doublejump
+ two
+
+
+
+
+Aer
+
+ featherfall
+ three
+
+
+
+
+Travel
+
+ doublejumpboots
+ two
+
+
+
+
+travelboots
+waterwalk
+
+
+
+travelboots
+leadboots
+
+
+
+travelboots
+slimysoles
+
+
+
+travelgloves
+glovehaste
+
+
+
+Flesh
+
+ gloveclimb
+ two
+
+
+
+
+travelgloves
+gloveknuckles
+
+
\ No newline at end of file
diff --git a/src/main/java/tconstruct/armor/ArmorAbilities.java b/src/main/java/tconstruct/armor/ArmorAbilities.java
new file mode 100644
index 00000000..0fcc001f
--- /dev/null
+++ b/src/main/java/tconstruct/armor/ArmorAbilities.java
@@ -0,0 +1,59 @@
+package tconstruct.armor;
+
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import tconstruct.library.modifier.IModifyable;
+import tconstruct.util.player.TPlayerStats;
+import cpw.mods.fml.common.Loader;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.TickEvent;
+
+public class ArmorAbilities
+{
+ //Abilities
+ boolean morphed;
+ boolean morphLoaded = Loader.isModLoaded("Morph");
+
+ @SubscribeEvent
+ public void playerTick (TickEvent.PlayerTickEvent event)
+ {
+ EntityPlayer player = event.player;
+ TPlayerStats stats = TPlayerStats.get(player);
+ if (stats.climbWalls)
+ {
+ double motionX = player.posX - player.lastTickPosX;
+ double motionZ = player.posZ - player.lastTickPosZ;
+ double motionY = player.posY - player.lastTickPosY - 0.762;
+ if (motionY > 0.0D && (motionX == 0D || motionZ == 0D))
+ {
+ player.fallDistance = 0.0F;
+ }
+ }
+ //TODO: Proper minimap support
+ /*ItemStack stack = player.inventory.getStackInSlot(8);
+ if (stack != null && stack.getItem() instanceof ItemMap)
+ {
+ stack.getItem().onUpdate(stack, player.worldObj, player, 8, true);
+ }*/
+ if (!player.isPlayerSleeping())
+ {
+ ItemStack chest = player.getCurrentArmor(2);
+ if (chest == null || !(chest.getItem() instanceof IModifyable))
+ {
+ if (!morphLoaded || !morphed)
+ PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F);
+ }
+ else
+ {
+ NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName());
+ int dodge = tag.getInteger("Perfect Dodge");
+ if (dodge > 0)
+ {
+ if (!morphLoaded || !morphed)
+ PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f));
+ }
+ }
+ }
+ }
+}
diff --git a/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java
new file mode 100644
index 00000000..78f6cc85
--- /dev/null
+++ b/src/main/java/tconstruct/armor/ArmorAbilitiesClient.java
@@ -0,0 +1,122 @@
+package tconstruct.armor;
+
+import net.minecraft.client.Minecraft;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+import tconstruct.armor.items.TravelGear;
+import tconstruct.client.TControls;
+import tconstruct.library.modifier.IModifyable;
+import tconstruct.util.player.TPlayerStats;
+import cpw.mods.fml.common.eventhandler.SubscribeEvent;
+import cpw.mods.fml.common.gameevent.TickEvent;
+
+public class ArmorAbilitiesClient
+{
+ Minecraft mc;
+ TControls controlInstance;
+
+ ItemStack prevFeet;
+ double prevMotionY;
+ boolean morphed;
+ float prevMouseSensitivity;
+ boolean sprint;
+
+ public ArmorAbilitiesClient(Minecraft mc, TControls p)
+ {
+ this.mc = mc;
+ this.controlInstance = p;
+ }
+
+ @SubscribeEvent
+ public void playerTick (TickEvent.PlayerTickEvent event)
+ {
+ EntityPlayer player = event.player;
+ TPlayerStats stats = TPlayerStats.get(player);
+ if (mc.thePlayer.onGround)
+ {
+ controlInstance.landOnGround();
+ }
+ if (stats.climbWalls && player.isCollidedHorizontally && !player.isSneaking())
+ {
+ player.motionY = 0.1176D;
+ player.fallDistance = 0.0f;
+ }
+
+ //Feet changes
+ ItemStack feet = player.getCurrentArmor(0);
+ if (feet != null)
+ {
+ if (feet.getItem() instanceof TravelGear && player.stepHeight < 1.0f)
+ {
+ player.stepHeight += 0.6f;
+ }
+ if (feet.getItem() instanceof IModifyable && !player.isSneaking())
+ {
+ NBTTagCompound tag = feet.getTagCompound().getCompoundTag(((IModifyable) feet.getItem()).getBaseTagName());
+ int sole = tag.getInteger("Slimy Soles");
+ if (sole > 0)
+ {
+ if (!player.isSneaking() && player.onGround && prevMotionY < -0.4)
+ player.motionY = -prevMotionY * (Math.min(0.99, sole * 0.2));
+ }
+ }
+ prevMotionY = player.motionY;
+ }
+ if (feet != prevFeet)
+ {
+ if (prevFeet != null && prevFeet.getItem() instanceof TravelGear)
+ player.stepHeight -= 0.6f;
+ if (feet != null && feet.getItem() instanceof TravelGear)
+ player.stepHeight += 0.6f;
+ prevFeet = feet;
+ }
+
+ //Legs or wing changes
+ /*ItemStack legs = player.getCurrentArmor(1);
+ if (legs != null && legs.getItem() instanceof IModifyable)
+ {
+ NBTTagCompound tag = legs.getTagCompound().getCompoundTag(((IModifyable) legs.getItem()).getBaseTagName());
+ if (player.isSprinting())
+ {
+ if (!sprint)
+ {
+ sprint = true;
+ int sprintboost = tag.getInteger("Sprint Assist");
+ if (player.isSprinting() && sprintboost > 0)
+ {
+ prevMouseSensitivity = gs.mouseSensitivity;
+ gs.mouseSensitivity *= 1 - (0.15 * sprintboost);
+ }
+ }
+ }
+ else if (sprint)
+ {
+ sprint = false;
+ gs.mouseSensitivity = prevMouseSensitivity;
+ }
+ }*/
+ if (!player.isPlayerSleeping() && !morphed)
+ {
+ ItemStack chest = player.getCurrentArmor(2);
+ if (chest == null || !(chest.getItem() instanceof IModifyable))
+ {
+ PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F);
+ }
+ else
+ {
+ NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName());
+ int dodge = tag.getInteger("Perfect Dodge");
+ if (dodge > 0)
+ {
+ PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f));
+ }
+ }
+ }
+ }
+
+ EntityPlayer getPlayer ()
+ {
+ return mc.thePlayer;
+ }
+}
diff --git a/src/main/java/tconstruct/armor/ArmorProxyClient.java b/src/main/java/tconstruct/armor/ArmorProxyClient.java
index cc29dfc3..3f85c3c8 100644
--- a/src/main/java/tconstruct/armor/ArmorProxyClient.java
+++ b/src/main/java/tconstruct/armor/ArmorProxyClient.java
@@ -3,6 +3,7 @@ package tconstruct.armor;
import java.util.ArrayList;
import java.util.Random;
+import mantle.lib.client.MantleClientRegistry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.gui.inventory.GuiInventory;
@@ -14,9 +15,10 @@ import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.SharedMonsterAttributes;
import net.minecraft.entity.ai.attributes.IAttributeInstance;
import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+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.MathHelper;
@@ -27,7 +29,6 @@ import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.client.event.RenderPlayerEvent;
import net.minecraftforge.common.MinecraftForge;
-import tconstruct.armor.items.TravelGear;
import tconstruct.armor.model.BeltModel;
import tconstruct.armor.model.BootBump;
import tconstruct.armor.model.HiddenPlayerModel;
@@ -43,16 +44,16 @@ import tconstruct.client.tabs.InventoryTabVanilla;
import tconstruct.client.tabs.TabRegistry;
import tconstruct.common.TProxyCommon;
import tconstruct.library.accessory.IAccessoryModel;
-import tconstruct.library.modifier.IModifyable;
+import tconstruct.library.client.TConstructClientRegistry;
+import tconstruct.tools.TinkerTools;
import tconstruct.util.player.TPlayerStats;
+import tconstruct.world.TinkerWorld;
import com.google.common.collect.Lists;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Loader;
-import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
-import cpw.mods.fml.common.gameevent.TickEvent;
public class ArmorProxyClient extends ArmorProxyCommon
{
@@ -66,8 +67,45 @@ public class ArmorProxyClient extends ArmorProxyCommon
public void initialize ()
{
registerGuiHandler();
+ registerKeys();
+ registerManualRecipes();
MinecraftForge.EVENT_BUS.register(this);
- FMLCommonHandler.instance().bus().register(this);
+ FMLCommonHandler.instance().bus().register(new ArmorAbilitiesClient(mc, controlInstance));
+ }
+
+ private void registerManualRecipes ()
+ {
+ ItemStack feather = new ItemStack(Items.feather);
+ ItemStack redstone = new ItemStack(Items.redstone);
+ ItemStack goggles = new ItemStack(TinkerArmor.travelGoggles);
+ MantleClientRegistry.registerManualIcon("travelgoggles", goggles);
+ TConstructClientRegistry.registerManualModifier("nightvision", goggles.copy(), new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198));
+
+ ItemStack vest = new ItemStack(TinkerArmor.travelVest);
+ MantleClientRegistry.registerManualIcon("travelvest", vest);
+ MantleClientRegistry.registerManualSmallRecipe("dodge", vest.copy(), new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl), new ItemStack(Items.sugar), null);
+ MantleClientRegistry.registerManualSmallRecipe("stealth", vest.copy(), new ItemStack(Blocks.ice), new ItemStack(Items.ender_eye), new ItemStack(Items.potionitem, 1, 8206), null);
+
+ ItemStack wings = new ItemStack(TinkerArmor.travelWings);
+ MantleClientRegistry.registerManualIcon("travelwings", wings);
+ MantleClientRegistry.registerManualSmallRecipe("doublejump", wings.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Blocks.piston), null);
+ MantleClientRegistry.registerManualLargeRecipe("featherfall", wings.copy(), new ItemStack(TinkerWorld.slimeGel, 1, 0), feather, feather, feather, wings.copy(), feather, feather, new ItemStack(
+ Items.ender_pearl), feather);
+
+ ItemStack boots = new ItemStack(TinkerArmor.travelBoots);
+ MantleClientRegistry.registerManualIcon("travelboots", boots);
+ MantleClientRegistry.registerManualSmallRecipe("doublejumpboots", boots.copy(), new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Blocks.piston),
+ null);
+ TConstructClientRegistry.registerManualModifier("waterwalk", boots.copy(), new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily));
+ TConstructClientRegistry.registerManualModifier("leadboots", boots.copy(), new ItemStack(Blocks.iron_block));
+ TConstructClientRegistry.registerManualModifier("slimysoles", boots.copy(), new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0));
+
+ ItemStack gloves = new ItemStack(TinkerArmor.travelGlove);
+ MantleClientRegistry.registerManualIcon("travelgloves", gloves);
+ TConstructClientRegistry.registerManualModifier("glovehaste", gloves.copy(), redstone, new ItemStack(Blocks.redstone_block));
+ MantleClientRegistry.registerManualSmallRecipe("gloveclimb", gloves.copy(), new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25), null);
+ TConstructClientRegistry.registerManualModifier("gloveknuckles", gloves.copy(), new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE));
+
}
@Override
@@ -105,7 +143,6 @@ public class ArmorProxyClient extends ArmorProxyCommon
public void registerTickHandler ()
{
FMLCommonHandler.instance().bus().register(new ArmorTickHandler());
- new ArmorTickHandler();
}
/* Keybindings */
@@ -431,104 +468,4 @@ public class ArmorProxyClient extends ArmorProxyCommon
return (float) par1EntityLivingBase.ticksExisted + par2;
}
- /* Abilities */
-
- ItemStack prevFeet;
- double prevMotionY;
- boolean morphed;
- float prevMouseSensitivity;
- boolean sprint;
-
- @EventHandler
- public void playerTick (TickEvent.PlayerTickEvent event)
- {
- System.out.println("Client Tick!");
- EntityPlayer player = event.player;
- TPlayerStats stats = TPlayerStats.get(player);
- if (mc.thePlayer.onGround)
- {
- controlInstance.landOnGround();
- }
- if (stats.climbWalls && player.isCollidedHorizontally && !player.isSneaking())
- {
- player.motionY = 0.1176D;
- player.fallDistance = 0.0f;
- }
-
- //Feet changes
- ItemStack feet = player.getCurrentArmor(0);
- if (feet != null)
- {
- if (feet.getItem() instanceof TravelGear && player.stepHeight < 1.0f)
- {
- player.stepHeight += 0.6f;
- }
- if (feet.getItem() instanceof IModifyable && !player.isSneaking())
- {
- NBTTagCompound tag = feet.getTagCompound().getCompoundTag(((IModifyable) feet.getItem()).getBaseTagName());
- int sole = tag.getInteger("Slimy Soles");
- if (sole > 0)
- {
- if (!player.isSneaking() && player.onGround && prevMotionY < -0.4)
- player.motionY = -prevMotionY * (Math.min(0.99, sole * 0.2));
- }
- }
- prevMotionY = player.motionY;
- }
- if (feet != prevFeet)
- {
- if (prevFeet != null && prevFeet.getItem() instanceof TravelGear)
- player.stepHeight -= 0.6f;
- if (feet != null && feet.getItem() instanceof TravelGear)
- player.stepHeight += 0.6f;
- prevFeet = feet;
- }
-
- //Legs or wing changes
- /*ItemStack legs = player.getCurrentArmor(1);
- if (legs != null && legs.getItem() instanceof IModifyable)
- {
- NBTTagCompound tag = legs.getTagCompound().getCompoundTag(((IModifyable) legs.getItem()).getBaseTagName());
- if (player.isSprinting())
- {
- if (!sprint)
- {
- sprint = true;
- int sprintboost = tag.getInteger("Sprint Assist");
- if (player.isSprinting() && sprintboost > 0)
- {
- prevMouseSensitivity = gs.mouseSensitivity;
- gs.mouseSensitivity *= 1 - (0.15 * sprintboost);
- }
- }
- }
- else if (sprint)
- {
- sprint = false;
- gs.mouseSensitivity = prevMouseSensitivity;
- }
- }*/
- if (!player.isPlayerSleeping() && !morphed)
- {
- ItemStack chest = player.getCurrentArmor(2);
- if (chest == null || !(chest.getItem() instanceof IModifyable))
- {
- PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F);
- }
- else
- {
- NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName());
- int dodge = tag.getInteger("Perfect Dodge");
- if (dodge > 0)
- {
- PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f));
- }
- }
- }
- }
-
- EntityPlayer getPlayer ()
- {
- return mc.thePlayer;
- }
}
diff --git a/src/main/java/tconstruct/armor/TinkerArmor.java b/src/main/java/tconstruct/armor/TinkerArmor.java
index 2d56d36f..13deedea 100644
--- a/src/main/java/tconstruct/armor/TinkerArmor.java
+++ b/src/main/java/tconstruct/armor/TinkerArmor.java
@@ -1,9 +1,12 @@
package tconstruct.armor;
+import java.util.EnumSet;
+
import mantle.pulsar.pulse.Handler;
import mantle.pulsar.pulse.Pulse;
import mantle.pulsar.pulse.PulseProxy;
import net.minecraft.block.Block;
+import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemArmor.ArmorMaterial;
@@ -29,6 +32,16 @@ import tconstruct.library.accessory.AccessoryCore;
import tconstruct.library.armor.ArmorPart;
import tconstruct.library.crafting.DryingRackRecipes;
import tconstruct.library.crafting.LiquidCasting;
+import tconstruct.library.crafting.ModifyBuilder;
+import tconstruct.modifiers.accessory.GloveClimb;
+import tconstruct.modifiers.accessory.GloveSpeed;
+import tconstruct.modifiers.armor.AModBoolean;
+import tconstruct.modifiers.armor.AModInteger;
+import tconstruct.modifiers.armor.AModLeadBoots;
+import tconstruct.modifiers.armor.ActiveTinkerArmor;
+import tconstruct.modifiers.armor.TravelModDoubleJump;
+import tconstruct.modifiers.armor.TravelModRepair;
+import tconstruct.modifiers.tools.ModAttack;
import tconstruct.tools.TinkerTools;
import tconstruct.world.TinkerWorld;
import tconstruct.world.items.GoldenHead;
@@ -75,12 +88,13 @@ public class TinkerArmor
public static AccessoryCore travelGlove;
public static AccessoryCore travelBelt;
+ public static ModAttack modAttackGlove;
+
@Handler
public void preInit (FMLPreInitializationEvent event)
{
- TinkerArmorEvents events = new TinkerArmorEvents();
- MinecraftForge.EVENT_BUS.register(events);
- FMLCommonHandler.instance().bus().register(events);
+ MinecraftForge.EVENT_BUS.register(new TinkerArmorEvents());
+ FMLCommonHandler.instance().bus().register(new ArmorAbilities());
TinkerArmor.dryingRack = new DryingRack().setBlockName("Armor.DryingRack");
GameRegistry.registerBlock(TinkerArmor.dryingRack, "Armor.DryingRack");
@@ -209,4 +223,49 @@ public class TinkerArmor
// DryingRackRecipes.addDryingRecipe(new ItemStack(TRepo.jerky, 1, 5),
// 20 * 60 * 10, Item.leather);
}
+
+ private void registerModifiers()
+ {
+ ItemStack redstoneItem = new ItemStack(Items.redstone);
+ ItemStack redstoneBlock = new ItemStack(Blocks.redstone_block);
+ //Travel gear modifiers
+ //MultiType
+ ModifyBuilder.registerModifier(new TravelModDoubleJump(EnumSet.of(ArmorPart.Legs, ArmorPart.Feet), new ItemStack[] { new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 0),
+ new ItemStack(Blocks.piston) }));
+ ModifyBuilder.registerModifier(new TravelModDoubleJump(EnumSet.of(ArmorPart.Legs, ArmorPart.Feet), new ItemStack[] { new ItemStack(Items.ghast_tear), new ItemStack(TinkerWorld.slimeGel, 1, 1),
+ new ItemStack(Blocks.piston) }));
+ ModifyBuilder.registerModifier(new TravelModRepair());
+ TConstructRegistry.registerActiveArmorMod(new ActiveTinkerArmor());
+
+ //Head
+ ModifyBuilder.registerModifier(new AModBoolean(0, "Night Vision", EnumSet.of(ArmorPart.Head), new ItemStack[] { new ItemStack(Items.flint_and_steel), new ItemStack(Items.potionitem, 1, 8198) },
+ "\u00a78", "Night Vision"));
+
+ //Chest
+ ModifyBuilder.registerModifier(new AModInteger(0, "Perfect Dodge", EnumSet.of(ArmorPart.Chest), new ItemStack[] { new ItemStack(Items.ender_eye), new ItemStack(Items.ender_pearl),
+ new ItemStack(Items.sugar) }, 1, "\u00a7d", "Perfect Dodge"));
+ ModifyBuilder.registerModifier(new AModBoolean(1, "Stealth", EnumSet.of(ArmorPart.Chest), new ItemStack[] { new ItemStack(Blocks.ice), new ItemStack(Items.ender_eye),
+ new ItemStack(Items.potionitem, 1, 8206) }, "\u00a78", "Stealth"));
+
+ //Wings
+ ItemStack feather = new ItemStack(Items.feather);
+ ModifyBuilder.registerModifier(new AModInteger(1, "Feather Fall", EnumSet.of(ArmorPart.Legs), new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 0), new ItemStack(Items.ender_pearl), feather,
+ feather, feather, feather, feather, feather }, 1, "\u00a7f", "Feather Fall"));
+ ModifyBuilder.registerModifier(new AModInteger(1, "Feather Fall", EnumSet.of(ArmorPart.Legs), new ItemStack[] { new ItemStack(TinkerWorld.slimeGel, 1, 1), new ItemStack(Items.ender_pearl), feather,
+ feather, feather, feather, feather, feather }, 1, "\u00a7f", "Feather Fall"));
+
+ //Feet
+ ModifyBuilder.registerModifier(new AModBoolean(1, "WaterWalk", EnumSet.of(ArmorPart.Feet), new ItemStack[] { new ItemStack(Blocks.waterlily), new ItemStack(Blocks.waterlily) }, "\u00a79",
+ "Water-Walking"));
+ ModifyBuilder.registerModifier(new AModLeadBoots(new ItemStack[] { new ItemStack(Blocks.iron_block) }));
+ ModifyBuilder.registerModifier(new AModInteger(3, "Slimy Soles", EnumSet.of(ArmorPart.Feet), new ItemStack[] { new ItemStack(TinkerWorld.slimePad, 1, 0), new ItemStack(TinkerWorld.slimePad, 1, 0) }, 1,
+ "\u00a7a", "Slimy Soles"));
+
+ //Glove
+ ModifyBuilder.registerModifier(new GloveSpeed(1, new ItemStack[] { redstoneItem, redstoneBlock }, new int[] { 1, 9 }));
+ ModifyBuilder.registerModifier(new GloveClimb(new ItemStack[] { new ItemStack(Items.slime_ball), new ItemStack(Blocks.web), new ItemStack(TinkerTools.materials, 1, 25) }));
+ this.modAttackGlove = new ModAttack("Quartz", 2, new ItemStack[] { new ItemStack(Items.quartz), new ItemStack(Blocks.quartz_block, 1, Short.MAX_VALUE) }, new int[] { 1, 4 }, 50, 50,
+ "Accessory");
+ ModifyBuilder.registerModifier(this.modAttackGlove);
+ }
}
diff --git a/src/main/java/tconstruct/armor/TinkerArmorEvents.java b/src/main/java/tconstruct/armor/TinkerArmorEvents.java
index a1f729d6..dd0f2d4a 100644
--- a/src/main/java/tconstruct/armor/TinkerArmorEvents.java
+++ b/src/main/java/tconstruct/armor/TinkerArmorEvents.java
@@ -56,55 +56,8 @@ public class TinkerArmorEvents
}
}
- //Abilities
- boolean morphed;
- boolean morphLoaded = Loader.isModLoaded("Morph");
-
- @EventHandler
- public void playerTick (TickEvent.PlayerTickEvent event)
- {
- System.out.println("Server Tick!");
- EntityPlayer player = event.player;
- TPlayerStats stats = TPlayerStats.get(player);
- if (stats.climbWalls)
- {
- double motionX = player.posX - player.lastTickPosX;
- double motionZ = player.posZ - player.lastTickPosZ;
- double motionY = player.posY - player.lastTickPosY - 0.762;
- if (motionY > 0.0D && (motionX == 0D || motionZ == 0D))
- {
- player.fallDistance = 0.0F;
- }
- }
- //TODO: Proper minimap support
- /*ItemStack stack = player.inventory.getStackInSlot(8);
- if (stack != null && stack.getItem() instanceof ItemMap)
- {
- stack.getItem().onUpdate(stack, player.worldObj, player, 8, true);
- }*/
- if (!player.isPlayerSleeping())
- {
- ItemStack chest = player.getCurrentArmor(2);
- if (chest == null || !(chest.getItem() instanceof IModifyable))
- {
- if (!morphLoaded || !morphed)
- PlayerAbilityHelper.setEntitySize(player, 0.6F, 1.8F);
- }
- else
- {
- NBTTagCompound tag = chest.getTagCompound().getCompoundTag(((IModifyable) chest.getItem()).getBaseTagName());
- int dodge = tag.getInteger("Perfect Dodge");
- if (dodge > 0)
- {
- if (!morphLoaded || !morphed)
- PlayerAbilityHelper.setEntitySize(player, Math.max(0.15F, 0.6F - (dodge * 0.09f)), 1.8F - (dodge * 0.04f));
- }
- }
- }
- }
-
/* Abilities */
- @EventHandler
+ @SubscribeEvent
public void armorMineSpeed (net.minecraftforge.event.entity.player.PlayerEvent.BreakSpeed event)
{
TPlayerStats stats = TPlayerStats.get(event.entityPlayer);
@@ -113,7 +66,7 @@ public class TinkerArmorEvents
event.newSpeed = (event.newSpeed + base) * modifier;
}
- @EventHandler
+ @SubscribeEvent
public void jumpHeight (LivingJumpEvent event)
{
ItemStack stack = event.entityLiving.getEquipmentInSlot(2);
@@ -123,7 +76,7 @@ public class TinkerArmorEvents
}
}
- @EventHandler
+ @SubscribeEvent
public void slimefall (LivingFallEvent event)
{
ItemStack boots = event.entityLiving.getEquipmentInSlot(1);
diff --git a/src/main/java/tconstruct/library/armor/AModInteger.java b/src/main/java/tconstruct/library/armor/AModInteger.java
deleted file mode 100644
index 897956c9..00000000
--- a/src/main/java/tconstruct/library/armor/AModInteger.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package tconstruct.library.armor;
-
-import java.util.EnumSet;
-
-import tconstruct.library.modifier.IModifyable;
-
-import net.minecraft.item.Item;
-import net.minecraft.item.ItemStack;
-import net.minecraft.nbt.NBTTagCompound;
-
-/* Adds an integer NBTTag */
-
-public class AModInteger extends ArmorMod
-{
- public final int modifyCount;
- public final int amount;
- public final String color;
- public final String tooltipName;
-
- public AModInteger(int effect, String dataKey, EnumSet armorTypes, ItemStack[] items, int count, int increase, String c, String tip)
- {
- super(effect, dataKey, armorTypes, items);
- this.modifyCount = count;
- this.amount = increase;
- color = c;
- tooltipName = tip;
- }
-
- @Override
- protected boolean canModify (ItemStack armor, ItemStack[] input)
- {
- Item i = armor.getItem();
- if (!(i instanceof ArmorCore))
- return false;
- ArmorCore item = (ArmorCore) armor.getItem();
- if (armorTypes.contains(item.armorPart))
- {
- NBTTagCompound tags = armor.getTagCompound().getCompoundTag(getTagName(armor));
- return tags.getInteger("Modifiers") > modifyCount;
- }
- return false;
- }
-
- @Override
- public void modify (ItemStack[] input, ItemStack tool)
- {
- NBTTagCompound tags = tool.getTagCompound().getCompoundTag(getTagName(tool));
- if (tags.hasKey(key))
- {
- int increase = tags.getInteger(key);
- increase += this.amount;
- tags.setInteger(key, increase);
- }
- else
- {
- tags.setInteger(key, amount);
- }
-
- int modifiers = tags.getInteger("Modifiers");
- modifiers -= modifyCount;
- tags.setInteger("Modifiers", modifiers);
-
- addToolTip(tool, color + tooltipName, color + key);
- }
-
-}
diff --git a/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java b/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java
index 18053138..062d2cc2 100644
--- a/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java
+++ b/src/main/java/tconstruct/tools/logic/ToolForgeLogic.java
@@ -6,7 +6,9 @@ import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
+import tconstruct.library.crafting.ModifyBuilder;
import tconstruct.library.crafting.ToolBuilder;
+import tconstruct.library.modifier.IModifyable;
import tconstruct.tools.inventory.ToolForgeContainer;
/* Simple class for storing items in the block
@@ -37,6 +39,66 @@ public class ToolForgeLogic extends ToolStationLogic implements ISidedInventory
@Override
public void buildTool (String name)
+ {
+ ItemStack output = null;
+ if (inventory[1] != null)
+ {
+ if (inventory[1].getItem() instanceof IModifyable) //Modify item
+ {
+ if (inventory[2] == null && inventory[3] == null && inventory[4] == null)
+ output = inventory[1].copy();
+ else
+ {
+ output = ModifyBuilder.instance.modifyItem(inventory[1], new ItemStack[] { inventory[2], inventory[3], inventory[4] });
+ }
+ }
+ else
+ //Build new item
+ {
+ toolName = name;
+ ItemStack tool = ToolBuilder.instance.buildTool(inventory[1], inventory[2], inventory[3], inventory[4], name);
+ if (inventory[0] == null)
+ output = tool;
+ else if (tool != null)
+ {
+ //NBTTagCompound tags = tool.getTagCompound();
+ //if (!tags.getCompoundTag(((IModifyable) tool.getItem()).getBaseTagName()).hasKey("Built"))
+ //{
+ output = tool;
+ //}
+ }
+ }
+ if (!name.equals("")) //Name item
+ {
+ ItemStack temp = inventory[1].copy();
+ if (output != null)
+ temp = output;
+
+ if (temp != null)
+ {
+ NBTTagCompound tags = temp.getTagCompound();
+ if (tags == null)
+ {
+ tags = new NBTTagCompound();
+ temp.setTagCompound(tags);
+ }
+
+ if (!(tags.hasKey("display")))
+ {
+ NBTTagCompound display = new NBTTagCompound();
+ String dName = temp.getItem() instanceof IModifyable ? "\u00A7f" + name : name;
+ display.setString("Name", dName);
+ tags.setTag("display", display);
+ temp.setRepairCost(2);
+ output = temp;
+ }
+ }
+
+ }
+ }
+ inventory[0] = output;
+ }
+ /*public void buildTool (String name)
{
toolName = name;
ItemStack tool = ToolBuilder.instance.buildTool(inventory[1], inventory[2], inventory[3], inventory[4], name);
@@ -50,5 +112,5 @@ public class ToolForgeLogic extends ToolStationLogic implements ISidedInventory
inventory[0] = tool;
}
}
- }
+ }*/
}
\ No newline at end of file
diff --git a/src/main/java/tconstruct/world/blocks/SlimePad.java b/src/main/java/tconstruct/world/blocks/SlimePad.java
index 4fb3632b..a27723f5 100644
--- a/src/main/java/tconstruct/world/blocks/SlimePad.java
+++ b/src/main/java/tconstruct/world/blocks/SlimePad.java
@@ -23,7 +23,7 @@ public class SlimePad extends MantleBlock
public SlimePad(Material par2Material)
{
super(par2Material);
- setBlockBounds(0.125F, 0.0F, 0.125F, 0.875F, 0.625F, 0.875F);
+ setBlockBounds(0.125F, 0.0625F, 0.125F, 0.875F, 0.625F, 0.875F);
this.setCreativeTab(TConstructRegistry.blockTab);
}
diff --git a/src/main/java/tconstruct/world/model/SlimePadRender.java b/src/main/java/tconstruct/world/model/SlimePadRender.java
index 2ebf3eda..1298844e 100644
--- a/src/main/java/tconstruct/world/model/SlimePadRender.java
+++ b/src/main/java/tconstruct/world/model/SlimePadRender.java
@@ -20,6 +20,8 @@ public class SlimePadRender implements ISimpleBlockRenderingHandler
if (modelID == model)
{
ItemHelper.renderStandardInvBlock(renderer, TinkerWorld.slimeGel, metadata);
+ renderer.setRenderBounds(0f, 0.0625f, 0f, 1f, 0.5f, 1f);
+ ItemHelper.renderStandardInvBlock(renderer, TinkerWorld.slimeGel, 1);
}
}
@@ -29,7 +31,7 @@ public class SlimePadRender implements ISimpleBlockRenderingHandler
if (modelID == model)
{
renderer.renderStandardBlock(block, x, y, z);
- renderer.setRenderBounds(0f, 0f, 0f, 1f, 0.5f, 1f);
+ renderer.setRenderBounds(0f, 0, 0f, 1f, 0.5f, 1f);
int metadata = world.getBlockMetadata(x, y, z);
BlockSkinRenderHelper.renderLiquidBlock(((SlimePad) block).getFluidIcon(metadata), ((SlimePad) block).getFluidIcon(metadata), x, y, z, renderer, world);