2013-07-26 21:18:53 -07:00
|
|
|
package tconstruct.items.tools;
|
|
|
|
|
|
2013-08-09 00:56:25 -07:00
|
|
|
import java.util.List;
|
|
|
|
|
|
2013-07-26 21:18:53 -07:00
|
|
|
import net.minecraft.block.material.Material;
|
|
|
|
|
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;
|
2013-10-12 23:46:35 +01:00
|
|
|
import tconstruct.TConstruct;
|
2013-11-29 23:16:32 -05:00
|
|
|
import tconstruct.common.TRepo;
|
2013-08-09 00:56:25 -07:00
|
|
|
import tconstruct.library.crafting.ToolBuilder;
|
|
|
|
|
import tconstruct.library.tools.AbilityHelper;
|
|
|
|
|
import tconstruct.library.tools.DualHarvestTool;
|
2013-10-01 19:44:04 -07:00
|
|
|
import tconstruct.util.config.PHConstruct;
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
public class Mattock extends DualHarvestTool
|
|
|
|
|
{
|
2013-12-31 16:37:46 -05:00
|
|
|
public Mattock()
|
2013-07-26 21:18:53 -07:00
|
|
|
{
|
2013-12-31 16:37:46 -05:00
|
|
|
super(3);
|
2013-07-26 21:18:53 -07:00
|
|
|
this.setUnlocalizedName("InfiTool.Mattock");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected Material[] getEffectiveMaterials ()
|
|
|
|
|
{
|
|
|
|
|
return axeMaterials;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected Material[] getEffectiveSecondaryMaterials ()
|
|
|
|
|
{
|
|
|
|
|
return shovelMaterials;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected String getHarvestType ()
|
|
|
|
|
{
|
|
|
|
|
return "axe";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
protected String getSecondHarvestType ()
|
|
|
|
|
{
|
|
|
|
|
return "shovel";
|
|
|
|
|
}
|
|
|
|
|
|
2014-01-29 00:09:45 -05:00
|
|
|
static Material[] axeMaterials = { Material.field_151575_d, Material.field_151570_A, Material.pumpkin, Material.field_151585_k, Material.field_151582_l };
|
2014-01-28 22:43:08 -05:00
|
|
|
static Material[] shovelMaterials = { Material.field_151577_b, Material.field_151578_c, Material.field_151571_B };
|
2013-07-26 21:18:53 -07:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Item getHeadItem ()
|
|
|
|
|
{
|
2013-11-29 23:16:32 -05:00
|
|
|
return TRepo.hatchetHead;
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public Item getAccessoryItem ()
|
|
|
|
|
{
|
2013-11-29 23:16:32 -05:00
|
|
|
return TRepo.shovelHead;
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public int durabilityTypeAccessory ()
|
|
|
|
|
{
|
|
|
|
|
return 2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getIconSuffix (int partType)
|
|
|
|
|
{
|
|
|
|
|
switch (partType)
|
|
|
|
|
{
|
|
|
|
|
case 0:
|
|
|
|
|
return "_mattock_head";
|
|
|
|
|
case 1:
|
|
|
|
|
return "_mattock_head_broken";
|
|
|
|
|
case 2:
|
|
|
|
|
return "_mattock_handle";
|
|
|
|
|
case 3:
|
|
|
|
|
return "_mattock_back";
|
|
|
|
|
default:
|
|
|
|
|
return "";
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getEffectSuffix ()
|
|
|
|
|
{
|
|
|
|
|
return "_mattock_effect";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public String getDefaultFolder ()
|
|
|
|
|
{
|
|
|
|
|
return "mattock";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Mattock specific */
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean onItemUse (ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float clickX, float clickY, float clickZ)
|
|
|
|
|
{
|
|
|
|
|
NBTTagCompound tags = stack.getTagCompound().getCompoundTag("InfiTool");
|
|
|
|
|
if (tags.getBoolean("Broken"))
|
|
|
|
|
return false;
|
|
|
|
|
|
|
|
|
|
return AbilityHelper.hoeGround(stack, player, world, x, y, z, side, random);
|
|
|
|
|
}
|
2013-08-09 00:56:25 -07:00
|
|
|
|
|
|
|
|
public void buildTool (int id, String name, List list)
|
|
|
|
|
{
|
|
|
|
|
if (!PHConstruct.denyMattock || allowCrafting(id))
|
|
|
|
|
{
|
|
|
|
|
Item accessory = getAccessoryItem();
|
|
|
|
|
ItemStack accessoryStack = accessory != null ? new ItemStack(getAccessoryItem(), 1, id) : null;
|
|
|
|
|
Item extra = getExtraItem();
|
|
|
|
|
ItemStack extraStack = extra != null ? new ItemStack(extra, 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)
|
|
|
|
|
{
|
2013-11-29 23:16:32 -05:00
|
|
|
if (!TRepo.supressMissingToolLogs)
|
2013-11-11 13:20:32 -05:00
|
|
|
{
|
2014-01-09 04:08:38 -05:00
|
|
|
TConstruct.logger.warn("Creative builder failed tool for " + name + this.getToolName());
|
|
|
|
|
TConstruct.logger.warn("Make sure you do not have item ID conflicts");
|
2013-11-11 13:20:32 -05:00
|
|
|
}
|
2013-08-09 00:56:25 -07:00
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
tool.getTagCompound().getCompoundTag("InfiTool").setBoolean("Built", true);
|
|
|
|
|
list.add(tool);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private boolean allowCrafting (int head)
|
|
|
|
|
{
|
|
|
|
|
int[] nonMetals = { 0, 1, 3, 4, 5, 6, 7, 8, 9, 17 };
|
|
|
|
|
for (int i = 0; i < nonMetals.length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (head == nonMetals[i])
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2013-11-08 17:53:58 -05:00
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean willAllowOffhandWeapon ()
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean willAllowShield ()
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Override
|
|
|
|
|
public boolean isOffhandHandDualWeapon ()
|
|
|
|
|
{
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
|
2013-09-10 10:21:00 -04:00
|
|
|
@Override
|
2013-11-08 17:53:58 -05:00
|
|
|
public boolean sheatheOnBack ()
|
|
|
|
|
{
|
|
|
|
|
return true;
|
|
|
|
|
}
|
2013-07-26 21:18:53 -07:00
|
|
|
}
|