diff options
| author | Lance5057 <Lance5057@gmail.com> | 2015-03-13 08:15:33 -0500 |
|---|---|---|
| committer | Lance5057 <Lance5057@gmail.com> | 2015-03-13 08:15:33 -0500 |
| commit | afb474545246da88084a43cae31259c33e63a8d1 (patch) | |
| tree | df0e220a3568546b7c64bf56e00c8d6af24fed64 /src/main/java/gmail/Lance5057/items | |
| parent | 495fc1d710df9f5b98fec0d0f61f105811742d89 (diff) | |
Updated to TiCo 1.8.3 and fixed the rendering issues that followed.
Also refactored some codes.
Diffstat (limited to 'src/main/java/gmail/Lance5057/items')
| -rw-r--r-- | src/main/java/gmail/Lance5057/items/HeaterShield.java | 249 | ||||
| -rw-r--r-- | src/main/java/gmail/Lance5057/items/RoundShield.java | 244 | ||||
| -rw-r--r-- | src/main/java/gmail/Lance5057/items/RoyalGuard.java | 42 | ||||
| -rw-r--r-- | src/main/java/gmail/Lance5057/items/Shield.java | 121 | ||||
| -rw-r--r-- | src/main/java/gmail/Lance5057/items/TinkerArmor.java | 6 |
5 files changed, 659 insertions, 3 deletions
diff --git a/src/main/java/gmail/Lance5057/items/HeaterShield.java b/src/main/java/gmail/Lance5057/items/HeaterShield.java new file mode 100644 index 0000000..fe97305 --- /dev/null +++ b/src/main/java/gmail/Lance5057/items/HeaterShield.java @@ -0,0 +1,249 @@ +package gmail.Lance5057.items; + +import java.util.List; + +import mods.battlegear2.api.ISheathed; +import mods.battlegear2.api.shield.IArrowCatcher; +import mods.battlegear2.api.shield.IArrowDisplay; +import mods.battlegear2.api.shield.IShield; +import net.minecraft.block.material.Material; +import net.minecraft.entity.Entity; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import tconstruct.library.tools.AbilityHelper; +import tconstruct.library.tools.HarvestTool; +import tconstruct.tools.TinkerTools; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + + +public class HeaterShield extends HarvestTool implements IShield, ISheathed, IArrowCatcher, IArrowDisplay +{ + int induceDamage = 0; +public HeaterShield() +{ +super(0); +this.setUnlocalizedName("heatershield"); +} +@Override +public Item getHeadItem () +{ +return TinkerTools.largePlate; +} +@Override +public Item getHandleItem () +{ +return TinkerTools.toughRod; +} +@Override +public Item getAccessoryItem () +{ +return TinkerTools.largePlate; +} +@Override +public Item getExtraItem () +{ + return TinkerTools.toughBinding; +} +@Override +public int durabilityTypeAccessory () +{ +return 2; +} +@Override +public float getRepairCost () +{ +return 4.0f; +} +@Override +public float getDurabilityModifier () +{ +return 2.5f; +} +@Override +public float breakSpeedModifier () +{ +return 0.4f; +} +@Override +public float getDamageModifier () +{ +return 1.4f; +} +@SideOnly(Side.CLIENT) +@Override +public int getPartAmount () +{ +return 4; +} +@Override +public String getIconSuffix (int partType) +{ +switch (partType) +{ +case 0: +return "_shield_face"; +case 1: +return "_shield_face_broken"; +case 2: +return "_shield_edge"; +case 3: +return "_shield_face_other"; +case 4: +return "_shield_binding"; +default: +return ""; +} +} +@Override +public String getEffectSuffix () +{ +return "_shield_effect"; +} +@Override +public String getDefaultFolder () +{ +return "heatershield"; +} +/* tool_TinkerShield specific */ +@Override +public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity) +{ +if (AbilityHelper.onLeftClickEntity(stack, player, entity, this)) +{ +entity.hurtResistantTime += 7; +/* +* if (entity instanceof EntityLiving) { EntityLiving living = +* (EntityLiving) entity; if (living.getHealth() <= 0) { +* +* } } +*/ +// if (entity.getHealth() <= 0) +} +return true; +} +@Override +public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5) +{ +super.onUpdate(stack, world, entity, par4, par5); + +} + +@Override +public int getArrowCount(ItemStack stack) +{ + if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows")) + { + return stack.getTagCompound().getShort("arrows"); + } + else + return 0; +} +@Override +public void setArrowCount(ItemStack stack, int count) +{ + if(!stack.hasTagCompound()){ + stack.setTagCompound(new NBTTagCompound()); + } + //Should never happen, you would need A LOT of arrows for this to happen + if(count > Short.MAX_VALUE){ + count = Short.MAX_VALUE; + } + stack.getTagCompound().setShort("arrows", (short)count); +} +@Override +public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow) +{ + if(arrow instanceof EntityArrow) + { + setArrowCount(shield, getArrowCount(shield)+1); + player.setArrowCountInEntity(player.getArrowCountInEntity() - 1); + ((EntityArrow)arrow).setDead(); + return true; + } + return false; +} +@Override +public boolean sheatheOnBack(ItemStack arg0) { + return true; +} +@Override +public void blockAnimation(EntityPlayer player, float dmg) +{ + player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1); +} +@Override +public boolean canBlock(ItemStack shield, DamageSource source) { + return !source.isUnblockable(); +} +@Override +public int getBashTimer(ItemStack arg0) { + // TODO Auto-generated method stub + return 10; +} +@Override +public float getBlockAngle(ItemStack arg0) { + // TODO Auto-generated method stub + return 60; +} +@Override +public float getDamageDecayRate(ItemStack shield, float amount) +{ + return 0; +} +@Override +public float getDamageReduction(ItemStack arg0, DamageSource arg1) { + return 1f; +} +@Override +public float getDecayRate(ItemStack stack) +{ + NBTTagCompound tags = stack.getTagCompound(); + float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f; + return 10f / recovery; +} +@Override +public float getRecoveryRate(ItemStack stack) +{ + NBTTagCompound tags = stack.getTagCompound(); + float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") / 1.5f; + return 10f / recovery; +} + +@Override +@SideOnly(Side.CLIENT) +public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) +{ + NBTTagCompound tags = par1ItemStack.getTagCompound(); + super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); + par3List.add(""); + par3List.add(EnumChatFormatting.DARK_GREEN+ + ItemStack.field_111284_a.format( 1F / (10f / (tags.getCompoundTag("InfiTool").getInteger("MiningSpeed")/1.5f)) / 20F)+ + StatCollector.translateToLocal("attribute.shield.block.time")); + int arrowCount = getArrowCount(par1ItemStack); + if(arrowCount > 0) + { + par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count"))); + } +} +@Override +protected Material[] getEffectiveMaterials () +{ + return materials; +} + static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits }; + +@Override +protected String getHarvestType() { + // TODO Auto-generated method stub + return "pickaxe"; +} +}
\ No newline at end of file diff --git a/src/main/java/gmail/Lance5057/items/RoundShield.java b/src/main/java/gmail/Lance5057/items/RoundShield.java new file mode 100644 index 0000000..59687ef --- /dev/null +++ b/src/main/java/gmail/Lance5057/items/RoundShield.java @@ -0,0 +1,244 @@ +package gmail.Lance5057.items; + +import java.util.List; +import java.util.Random; + +import mods.battlegear2.api.ISheathed; +import mods.battlegear2.api.shield.IArrowCatcher; +import mods.battlegear2.api.shield.IArrowDisplay; +import mods.battlegear2.api.shield.IShield; +import mods.battlegear2.api.shield.ShieldType; +import mods.battlegear2.utils.BattlegearConfig; +import cpw.mods.fml.relauncher.*; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.IProjectile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.projectile.EntityArrow; +import net.minecraft.item.*; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.potion.*; +import net.minecraft.util.DamageSource; +import net.minecraft.util.EnumChatFormatting; +import net.minecraft.util.IIcon; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; +import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import tconstruct.library.tools.*; +import tconstruct.tools.TinkerTools; +public class RoundShield extends HarvestTool implements IShield, ISheathed, IArrowCatcher, IArrowDisplay +{ + int induceDamage = 0; +public RoundShield() +{ +super(0); +this.setUnlocalizedName("roundshield"); +} +@Override +public Item getHeadItem () +{ +return TinkerTools.largePlate; +} +@Override +public Item getHandleItem () +{ +return TinkerTools.toolRod; +} +@Override +public Item getAccessoryItem () +{ +return TinkerTools.frypanHead; +} +@Override +public int durabilityTypeAccessory () +{ +return 2; +} +@Override +public float getRepairCost () +{ +return 4.0f; +} +@Override +public float getDurabilityModifier () +{ +return 2.5f; +} +@Override +public float breakSpeedModifier () +{ +return 0.4f; +} +@Override +public float getDamageModifier () +{ +return 1.4f; +} +@SideOnly(Side.CLIENT) +@Override +public int getPartAmount () +{ +return 3; +} +@Override +public String getIconSuffix (int partType) +{ +switch (partType) +{ +case 0: +return "_shield_face"; +case 1: +return "_shield_face_broken"; +case 2: +return "_shield_edge"; +case 3: +return "_shield_boss"; +default: +return ""; +} +} +@Override +public String getEffectSuffix () +{ +return "_shield_effect"; +} +@Override +public String getDefaultFolder () +{ +return "shield"; +} +/* tool_TinkerShield specific */ +@Override +public boolean onLeftClickEntity (ItemStack stack, EntityPlayer player, Entity entity) +{ +if (AbilityHelper.onLeftClickEntity(stack, player, entity, this)) +{ +entity.hurtResistantTime += 7; +/* +* if (entity instanceof EntityLiving) { EntityLiving living = +* (EntityLiving) entity; if (living.getHealth() <= 0) { +* +* } } +*/ +// if (entity.getHealth() <= 0) +} +return true; +} +@Override +public void onUpdate (ItemStack stack, World world, Entity entity, int par4, boolean par5) +{ +super.onUpdate(stack, world, entity, par4, par5); + +} + +@Override +public int getArrowCount(ItemStack stack) +{ + if(stack.hasTagCompound() && stack.getTagCompound().hasKey("arrows")) + { + return stack.getTagCompound().getShort("arrows"); + } + else + return 0; +} +@Override +public void setArrowCount(ItemStack stack, int count) +{ + if(!stack.hasTagCompound()){ + stack.setTagCompound(new NBTTagCompound()); + } + //Should never happen, you would need A LOT of arrows for this to happen + if(count > Short.MAX_VALUE){ + count = Short.MAX_VALUE; + } + stack.getTagCompound().setShort("arrows", (short)count); +} +@Override +public boolean catchArrow(ItemStack shield, EntityPlayer player, IProjectile arrow) +{ + if(arrow instanceof EntityArrow) + { + setArrowCount(shield, getArrowCount(shield)+1); + player.setArrowCountInEntity(player.getArrowCountInEntity() - 1); + ((EntityArrow)arrow).setDead(); + return true; + } + return false; +} +@Override +public boolean sheatheOnBack(ItemStack arg0) { + return true; +} +@Override +public void blockAnimation(EntityPlayer player, float dmg) +{ + player.worldObj.playSoundAtEntity(player, "battlegear2:shield", 1, 1); +} +@Override +public boolean canBlock(ItemStack shield, DamageSource source) { + return !source.isUnblockable(); +} +@Override +public int getBashTimer(ItemStack arg0) { + // TODO Auto-generated method stub + return 10; +} +@Override +public float getBlockAngle(ItemStack arg0) { + // TODO Auto-generated method stub + return 60; +} +@Override +public float getDamageDecayRate(ItemStack shield, float amount) +{ + return 2; +} +@Override +public float getDamageReduction(ItemStack arg0, DamageSource arg1) { + return 1f; +} +@Override +public float getDecayRate(ItemStack stack) +{ + NBTTagCompound tags = stack.getTagCompound(); + float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed"); + return 10f / recovery * 2; +} +@Override +public float getRecoveryRate(ItemStack stack) +{ + NBTTagCompound tags = stack.getTagCompound(); + float recovery = tags.getCompoundTag("InfiTool").getInteger("MiningSpeed"); + return 10f / recovery * 2; +} + +@Override +@SideOnly(Side.CLIENT) +public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) +{ + NBTTagCompound tags = par1ItemStack.getTagCompound(); + super.addInformation(par1ItemStack, par2EntityPlayer, par3List, par4); + par3List.add(""); + par3List.add(EnumChatFormatting.DARK_GREEN+ + ItemStack.field_111284_a.format( 1F / (10f / tags.getCompoundTag("InfiTool").getInteger("MiningSpeed") * 2) / 20F)+ + StatCollector.translateToLocal("attribute.shield.block.time")); + int arrowCount = getArrowCount(par1ItemStack); + if(arrowCount > 0) + { + par3List.add(String.format("%s%s %s", EnumChatFormatting.GOLD, arrowCount, StatCollector.translateToLocal("attribute.shield.arrow.count"))); + } +} +@Override +protected Material[] getEffectiveMaterials () +{ + return materials; +} + static Material[] materials = new Material[] { Material.rock, Material.iron, Material.ice, Material.glass, Material.piston, Material.anvil, Material.circuits }; + +@Override +protected String getHarvestType() { + // TODO Auto-generated method stub + return "pickaxe"; +} +}
\ No newline at end of file diff --git a/src/main/java/gmail/Lance5057/items/RoyalGuard.java b/src/main/java/gmail/Lance5057/items/RoyalGuard.java new file mode 100644 index 0000000..04bce58 --- /dev/null +++ b/src/main/java/gmail/Lance5057/items/RoyalGuard.java @@ -0,0 +1,42 @@ +package gmail.Lance5057.items; + +import net.minecraft.creativetab.CreativeTabs; +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.EnumChatFormatting; +import tconstruct.library.client.TConstructClientRegistry; +import tconstruct.library.crafting.ToolBuilder; +import tconstruct.library.tools.Weapon; + +import java.util.List; + +public abstract class RoyalGuard extends Weapon { + public RoyalGuard() { + super(10); + } + +@Override +public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4) { +super.addInformation(stack, player, list, par4); +list.add(EnumChatFormatting.DARK_PURPLE + "Artisan crafted for the royal family"); +} +@Override +public void getSubItems(Item id, CreativeTabs tab, List list) +{ + super.getSubItems(id, tab, list); + + ItemStack tool = ToolBuilder.instance.buildTool(new ItemStack(getHeadItem(), 1, 2), new ItemStack(getHandleItem(), 1, 6), new ItemStack(getAccessoryItem(), 1, 33), "Royal Guard"); + NBTTagCompound tags = tool.getTagCompound().getCompoundTag("InfiTool"); + tags.setInteger("Modifiers", 0); + tags.setInteger("Attack", 15); + tags.setInteger("TotalDurability", Integer.MAX_VALUE / 100); + tags.setInteger("BaseDurability", Integer.MAX_VALUE / 100); + tags.setInteger("MiningSpeed", Integer.MAX_VALUE / 100); + tags.setInteger("Unbreaking", 10); + tags.setBoolean("Built", true); + tags.setInteger("Fortune", 450); + list.add(tool); +} +}
\ No newline at end of file diff --git a/src/main/java/gmail/Lance5057/items/Shield.java b/src/main/java/gmail/Lance5057/items/Shield.java new file mode 100644 index 0000000..acf05fb --- /dev/null +++ b/src/main/java/gmail/Lance5057/items/Shield.java @@ -0,0 +1,121 @@ +package gmail.Lance5057.items; + +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 diff --git a/src/main/java/gmail/Lance5057/items/TinkerArmor.java b/src/main/java/gmail/Lance5057/items/TinkerArmor.java index 95d776c..0f1aa18 100644 --- a/src/main/java/gmail/Lance5057/items/TinkerArmor.java +++ b/src/main/java/gmail/Lance5057/items/TinkerArmor.java @@ -1,6 +1,6 @@ package gmail.Lance5057.items; -import gmail.Lance5057.com.mod_TinkersDefense; +import gmail.Lance5057.TinkersDefense; import net.minecraft.client.model.ModelBiped; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.Entity; @@ -41,11 +41,11 @@ public class TinkerArmor extends ItemArmor int type = ((ItemArmor)itemStack.getItem()).armorType; if(type == 1 || type == 3) { - armorModel = mod_TinkersDefense.proxy.getArmorModel(0); + armorModel = TinkersDefense.proxy.getArmorModel(0); } else { - armorModel = mod_TinkersDefense.proxy.getArmorModel(1); + armorModel = TinkersDefense.proxy.getArmorModel(1); } } |
