Files
TinkersConstruct/src/main/java/tconstruct/items/tools/Arrow.java
T

243 lines
7.6 KiB
Java
Raw Normal View History

package tconstruct.items.tools;
import java.util.List;
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.world.World;
2014-02-05 10:28:54 -05:00
import tconstruct.TConstruct;
import tconstruct.common.TRepo;
import tconstruct.library.crafting.ToolBuilder;
import tconstruct.library.tools.ToolCore;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class Arrow extends ToolCore
{
2013-12-31 16:37:46 -05:00
public Arrow()
{
2013-12-31 16:37:46 -05:00
super(3);
this.setUnlocalizedName("InfiTool.Arrow");
this.setMaxStackSize(64);
this.setMaxDamage(0);
}
@Override
public String getIconSuffix (int partType)
{
switch (partType)
{
case 0:
return "_arrow_head";
case 1:
return ""; //Doesn't break
case 2:
return "_arrow_shaft";
case 3:
return "_arrow_fletching";
default:
return "";
}
}
@Override
public String getEffectSuffix ()
{
return "_arrow_effect";
}
@Override
public String getDefaultFolder ()
{
return "arrow";
}
@Override
public void registerPartPaths (int index, String[] location)
{
headStrings.put(index, location[0]);
handleStrings.put(index, location[2]);
}
@Override
public void registerAlternatePartPaths (int index, String[] location)
{
accessoryStrings.put(index, location[3]);
}
@Override
public Item getHeadItem ()
{
2013-11-29 23:16:32 -05:00
return TRepo.arrowhead;
}
@Override
public Item getAccessoryItem ()
{
2013-11-29 23:16:32 -05:00
return TRepo.fletching;
}
@Override
public String[] toolCategories ()
{
return new String[] { "ammo" };
}
2013-08-16 13:51:33 -07:00
@Override
public float getDamageModifier ()
{
return 0.5f;
}
@Override
public void getSubItems (int id, CreativeTabs tab, List list)
{
//Vanilla style arrow
Item accessory = getAccessoryItem();
ItemStack accessoryStack = accessory != null ? new ItemStack(getAccessoryItem(), 1, 0) : null;
Item extra = getExtraItem();
ItemStack extraStack = extra != null ? new ItemStack(extra, 1, 0) : null;
ItemStack tool = ToolBuilder.instance.buildTool(new ItemStack(getHeadItem(), 1, 3), new ItemStack(getHandleItem(), 1, 0), accessoryStack, extraStack, "");
if (tool == null)
{
2014-02-04 21:21:50 -05:00
if (!TRepo.supressMissingToolLogs)
{
TConstruct.logger.warn("Creative builder failed tool for Vanilla style" + this.getToolName());
TConstruct.logger.warn("Make sure you do not have item ID conflicts");
}
}
else
{
tool.stackSize = 1;
tool.getTagCompound().getCompoundTag("InfiTool").setBoolean("Built", true);
list.add(tool);
}
//Random arrow
accessory = getAccessoryItem();
accessoryStack = accessory != null ? new ItemStack(getAccessoryItem(), 1, random.nextInt(4)) : null;
extra = getExtraItem();
extraStack = extra != null ? new ItemStack(extra, 1, 0) : null;
tool = ToolBuilder.instance
.buildTool(new ItemStack(getHeadItem(), 1, random.nextInt(18)), new ItemStack(getHandleItem(), 1, random.nextInt(18)), accessoryStack, extraStack, "Random Streamer");
if (tool == null)
{
2013-11-29 23:16:32 -05:00
if (!TRepo.supressMissingToolLogs)
{
2014-02-04 21:21:50 -05:00
if (!TRepo.supressMissingToolLogs)
{
TConstruct.logger.warn("Creative builder failed tool for Vanilla style" + this.getToolName());
TConstruct.logger.warn("Make sure you do not have item ID conflicts");
}
}
}
else
{
tool.stackSize = 1;
tool.getTagCompound().getCompoundTag("InfiTool").setBoolean("Built", true);
list.add(tool);
}
super.getSubItems(id, tab, list);
}
@Override
public void buildTool (int id, String name, List list)
{
Item accessory = getAccessoryItem();
ItemStack accessoryStack = accessory != null ? new ItemStack(getAccessoryItem(), 1, 0) : null;
Item extra = getExtraItem();
ItemStack extraStack = extra != null ? new ItemStack(getExtraItem(), 1, id) : null;
ItemStack tool = ToolBuilder.instance.buildTool(new ItemStack(getHeadItem(), 1, id), new ItemStack(getHandleItem(), 1, id), accessoryStack, extraStack, name + getToolName());
if (tool == null)
{
TConstruct.logger.warn("Creative builder failed tool for " + name + this.getToolName());
TConstruct.logger.warn("Make sure you do not have item ID conflicts");
}
else
{
tool.stackSize = 1;
tool.getTagCompound().getCompoundTag("InfiTool").setBoolean("Built", true);
list.add(tool);
}
}
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;
}
@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"))
{
String color = "";
//double joules = this.getJoules(stack);
2013-11-25 15:36:32 -05:00
int power = tags.getInteger("Energy");
if (power != 0)
{
2013-11-25 15:36:32 -05:00
if (power <= this.getMaxEnergyStored(stack) / 3)
color = "\u00a74";
2013-11-25 15:36:32 -05:00
else if (power > this.getMaxEnergyStored(stack) * 2 / 3)
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);
}
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");
String headName = getAbilityNameForType(head);
if (!headName.equals(""))
list.add(getStyleForType(head) + headName);
String handleName = getAbilityNameForType(handle);
if (!handleName.equals("") && handle != head)
list.add(getStyleForType(handle) + handleName);
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;
}
}
}
}
@Override
public boolean isOffhandHandDualWeapon ()
{
return false;
}
}