2013-07-26 21:18:53 -07:00
|
|
|
package tconstruct.items.tools;
|
|
|
|
|
|
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
import net.minecraft.client.entity.EntityPlayerSP;
|
|
|
|
|
import net.minecraft.entity.Entity;
|
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
|
|
|
import net.minecraft.item.Item;
|
|
|
|
|
import net.minecraft.item.ItemStack;
|
|
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2014-03-15 07:11:06 -04:00
|
|
|
import net.minecraft.util.StatCollector;
|
2013-07-26 21:18:53 -07:00
|
|
|
import net.minecraft.world.World;
|
2014-06-04 21:44:48 -08:00
|
|
|
import tconstruct.tools.TinkerTools;
|
2013-07-26 21:18:53 -07:00
|
|
|
import cpw.mods.fml.relauncher.Side;
|
|
|
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
|
|
|
|
|
|
public class Shortbow extends BowBase
|
|
|
|
|
{
|
2013-12-31 16:37:46 -05:00
|
|
|
public Shortbow()
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
2013-12-31 16:37:46 -05:00
|
|
|
super();
|
2013-07-26 21:18:53 -07:00
|
|
|
this.setUnlocalizedName("InfiTool.Shortbow");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getIconSuffix (int partType)
|
|
|
|
|
{
|
|
|
|
|
switch (partType)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
return "_bow_top";
|
|
|
|
|
case 1:
|
|
|
|
|
return "_bowstring_broken";
|
|
|
|
|
case 2:
|
|
|
|
|
return "_bowstring";
|
|
|
|
|
case 3:
|
|
|
|
|
return "_bow_bottom";
|
|
|
|
|
default:
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getEffectSuffix ()
|
|
|
|
|
{
|
|
|
|
|
return "_bow_effect";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getDefaultFolder ()
|
|
|
|
|
{
|
|
|
|
|
return "shortbow";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Item getHeadItem ()
|
|
|
|
|
{
|
2014-06-04 21:44:48 -08:00
|
|
|
return TinkerTools.toolRod;
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Item getHandleItem ()
|
|
|
|
|
{
|
2014-06-04 21:44:48 -08:00
|
|
|
return TinkerTools.bowstring;
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Item getAccessoryItem ()
|
|
|
|
|
{
|
2014-06-04 21:44:48 -08:00
|
|
|
return TinkerTools.toolRod;
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
2014-06-30 22:26:00 -08:00
|
|
|
public String[] getTraits ()
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
|
|
|
|
return new String[] { "weapon", "ranged", "bow" };
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@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.0F;
|
|
|
|
|
player.movementInput.moveStrafe *= 2.0F;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
|
|
|
public void addInformation (ItemStack stack, EntityPlayer player, List list, boolean par4)
|
|
|
|
|
{
|
|
|
|
|
if (!stack.hasTagCompound())
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
NBTTagCompound tags = stack.getTagCompound();
|
2013-11-25 15:36:32 -05:00
|
|
|
if (tags.hasKey("Energy"))
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
|
|
|
|
String color = "";
|
2014-02-16 14:23:50 -05:00
|
|
|
// double joules = this.getJoules(stack);
|
2013-11-25 15:36:32 -05:00
|
|
|
int power = tags.getInteger("Energy");
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
if (power != 0)
|
|
|
|
|
{
|
2013-11-25 15:36:32 -05:00
|
|
|
if (power <= this.getMaxEnergyStored(stack) / 3)
|
2013-07-26 21:18:53 -07:00
|
|
|
color = "\u00a74";
|
2013-11-25 15:36:32 -05:00
|
|
|
else if (power > this.getMaxEnergyStored(stack) * 2 / 3)
|
2013-07-26 21:18:53 -07:00
|
|
|
color = "\u00a72";
|
|
|
|
|
else
|
|
|
|
|
color = "\u00a76";
|
|
|
|
|
}
|
|
|
|
|
|
2013-11-25 15:36:32 -05:00
|
|
|
String energy = new StringBuilder().append(color).append(tags.getInteger("Energy")).append("/").append(getMaxEnergyStored(stack)).append(" RF").toString();
|
|
|
|
|
list.add(energy);
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
if (tags.hasKey("InfiTool"))
|
|
|
|
|
{
|
|
|
|
|
boolean broken = tags.getCompoundTag("InfiTool").getBoolean("Broken");
|
|
|
|
|
if (broken)
|
|
|
|
|
list.add("\u00A7oBroken");
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
int head = tags.getCompoundTag("InfiTool").getInteger("Head");
|
|
|
|
|
int handle = tags.getCompoundTag("InfiTool").getInteger("Handle");
|
|
|
|
|
int binding = tags.getCompoundTag("InfiTool").getInteger("Accessory");
|
|
|
|
|
int extra = tags.getCompoundTag("InfiTool").getInteger("Extra");
|
|
|
|
|
|
|
|
|
|
String headName = getAbilityNameForType(head);
|
|
|
|
|
if (!headName.equals(""))
|
|
|
|
|
list.add(getStyleForType(head) + headName);
|
|
|
|
|
|
|
|
|
|
String handleName = getBowstringName(handle);
|
|
|
|
|
if (!handleName.equals("") && handle != head)
|
|
|
|
|
list.add(handleName);
|
|
|
|
|
|
|
|
|
|
if (getPartAmount() >= 3)
|
|
|
|
|
{
|
|
|
|
|
String bindingName = getAbilityNameForType(binding);
|
|
|
|
|
if (!bindingName.equals("") && binding != head && binding != handle)
|
|
|
|
|
list.add(getStyleForType(binding) + bindingName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (getPartAmount() >= 4)
|
|
|
|
|
{
|
|
|
|
|
String extraName = getAbilityNameForType(extra);
|
|
|
|
|
if (!extraName.equals("") && extra != head && extra != handle && extra != binding)
|
|
|
|
|
list.add(getStyleForType(extra) + extraName);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int unbreaking = tags.getCompoundTag("InfiTool").getInteger("Unbreaking");
|
|
|
|
|
String reinforced = getReinforcedName(head, handle, binding, extra, unbreaking);
|
|
|
|
|
if (!reinforced.equals(""))
|
|
|
|
|
list.add(reinforced);
|
|
|
|
|
|
|
|
|
|
boolean displayToolTips = true;
|
|
|
|
|
int tipNum = 0;
|
|
|
|
|
while (displayToolTips)
|
|
|
|
|
{
|
|
|
|
|
tipNum++;
|
|
|
|
|
String tooltip = "Tooltip" + tipNum;
|
|
|
|
|
if (tags.getCompoundTag("InfiTool").hasKey(tooltip))
|
|
|
|
|
{
|
|
|
|
|
String tipName = tags.getCompoundTag("InfiTool").getString(tooltip);
|
|
|
|
|
if (!tipName.equals(""))
|
|
|
|
|
list.add(tipName);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
displayToolTips = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2014-03-15 07:11:06 -04:00
|
|
|
list.add("");
|
|
|
|
|
list.add("\u00A79+" + tags.getCompoundTag("InfiTool").getInteger("Attack") + " " + StatCollector.translateToLocalFormatted("attribute.name.generic.attackDamage"));
|
|
|
|
|
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String getBowstringName (int type)
|
|
|
|
|
{
|
|
|
|
|
switch (type)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
return "";
|
|
|
|
|
case 1:
|
|
|
|
|
return "\u00A7bEnchanted";
|
|
|
|
|
default:
|
|
|
|
|
return "";
|
|
|
|
|
}
|
2014-02-16 14:23:50 -05:00
|
|
|
// return TConstructRegistry.getMaterial(type).ability();
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
}
|