summaryrefslogtreecommitdiff
path: root/src/main/java/gmail/Lance5057/com/Shield.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/gmail/Lance5057/com/Shield.java')
-rw-r--r--src/main/java/gmail/Lance5057/com/Shield.java121
1 files changed, 121 insertions, 0 deletions
diff --git a/src/main/java/gmail/Lance5057/com/Shield.java b/src/main/java/gmail/Lance5057/com/Shield.java
new file mode 100644
index 0000000..0cfa33c
--- /dev/null
+++ b/src/main/java/gmail/Lance5057/com/Shield.java
@@ -0,0 +1,121 @@
+package gmail.Lance5057.com;
+
+import tconstruct.library.tools.ToolCore;
+import cpw.mods.fml.relauncher.*;
+import net.minecraft.block.Block;
+import net.minecraft.block.material.Material;
+import net.minecraft.client.entity.EntityPlayerSP;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.*;
+import net.minecraft.world.World;
+
+public abstract class Shield extends ToolCore
+{
+public Shield(int baseDamage)
+{
+super(baseDamage);
+}
+protected float baseSpeed ()
+{
+return 1.5f;
+}
+protected float effectiveSpeed ()
+{
+return 15f;
+}
+public float breakSpeedModifier ()
+{
+return 1.0f;
+}
+@Override
+public float getDigSpeed (ItemStack stack, Block block, int meta)
+{
+if (stack.getTagCompound().getCompoundTag("InfiTool").getBoolean("Broken"))
+return 0.1f;
+for (int i = 0; i < web.length; i++)
+{
+if (web[i] == block.getMaterial())
+{
+return effectiveSpeed();
+}
+}
+return baseSpeed();
+}
+/**
+* returns the action that specifies what animation to play when the items
+* is being used
+*/
+@Override
+public EnumAction getItemUseAction (ItemStack par1ItemStack)
+{
+return EnumAction.block;
+}
+/**
+* How long it takes to use or consume an item
+*/
+@Override
+public int getMaxItemUseDuration (ItemStack par1ItemStack)
+{
+return 72000;
+}
+/**
+* Called whenever this item is equipped and the right mouse button is
+* pressed. Args: itemStack, world, entityPlayer
+*/
+@Override
+public ItemStack onItemRightClick (ItemStack stack, World world, EntityPlayer player)
+{
+player.setItemInUse(stack, this.getMaxItemUseDuration(stack));
+return stack;
+}
+@Override
+public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
+{
+return false;
+}
+/**
+* Returns if the item (tool) can harvest results from the block type.
+*/
+@Override
+public boolean canHarvestBlock (Block block, ItemStack is)
+{
+for (int i = 0; i < web.length; i++)
+{
+if (block.getMaterial() == web[i])
+return true;
+}
+return super.canHarvestBlock(block, is);
+}
+protected Material[] getEffectiveMaterials ()
+{
+return web;
+}
+@Override
+@SideOnly(Side.CLIENT)
+public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5)
+{
+super.onUpdate(stack, world, entity, par4, par5);
+if (entity instanceof EntityPlayerSP)
+{
+EntityPlayerSP player = (EntityPlayerSP) entity;
+ItemStack usingItem = player.getItemInUse();
+if (usingItem != null && usingItem.getItem() == this)
+{
+player.movementInput.moveForward *= 2.5F;
+player.movementInput.moveStrafe *= 2.5F;
+}
+}
+}
+@Override
+public String[] getTraits ()
+{
+return new String[] { "Shield", "melee" };
+}
+public static Material[] web = new Material[] { Material.web, Material.cloth, Material.coral, Material.cake };
+public static Material[] none = new Material[0];
+protected String getHarvestType() {
+ // TODO Auto-generated method stub
+ return null;
+}
+} \ No newline at end of file