2014-07-15 03:23:48 +02:00
|
|
|
package com.pahimar.ee3.item;
|
|
|
|
|
2014-07-17 03:40:12 +02:00
|
|
|
import com.google.common.collect.ImmutableSet;
|
|
|
|
import com.google.common.collect.Sets;
|
2014-07-15 03:23:48 +02:00
|
|
|
import com.pahimar.ee3.creativetab.CreativeTab;
|
2014-07-15 19:24:04 +02:00
|
|
|
import com.pahimar.ee3.reference.*;
|
2014-07-18 21:55:10 +02:00
|
|
|
import com.pahimar.ee3.util.*;
|
2014-07-15 03:23:48 +02:00
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2014-07-15 18:24:18 +02:00
|
|
|
import net.minecraft.init.Blocks;
|
2014-07-15 03:23:48 +02:00
|
|
|
import net.minecraft.item.ItemStack;
|
2014-07-15 19:24:04 +02:00
|
|
|
import net.minecraft.world.World;
|
2014-07-15 18:24:18 +02:00
|
|
|
import net.minecraftforge.common.ForgeHooks;
|
2014-07-15 03:23:48 +02:00
|
|
|
|
2014-07-15 19:24:04 +02:00
|
|
|
import java.util.Arrays;
|
|
|
|
import java.util.List;
|
2014-07-17 03:40:12 +02:00
|
|
|
import java.util.Set;
|
2014-07-15 19:24:04 +02:00
|
|
|
|
2014-07-21 20:47:00 +02:00
|
|
|
public class ItemDarkMatterPickAxe extends ItemToolModalEE implements IKeyBound, IChargeable
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-07-17 03:40:12 +02:00
|
|
|
private static final Set blocksEffectiveAgainst = Sets.newHashSet(new Block[]{Blocks.cobblestone, Blocks.double_stone_slab, Blocks.stone_slab, Blocks.stone, Blocks.sandstone, Blocks.mossy_cobblestone, Blocks.iron_ore, Blocks.iron_block, Blocks.coal_ore, Blocks.gold_block, Blocks.gold_ore, Blocks.diamond_ore, Blocks.diamond_block, Blocks.ice, Blocks.netherrack, Blocks.lapis_ore, Blocks.lapis_block, Blocks.redstone_ore, Blocks.lit_redstone_ore, Blocks.rail, Blocks.detector_rail, Blocks.golden_rail, Blocks.activator_rail});
|
|
|
|
|
2014-07-16 22:10:18 +02:00
|
|
|
public ItemDarkMatterPickAxe()
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-07-17 03:40:12 +02:00
|
|
|
super(2f, Material.Tools.DARK_MATTER, blocksEffectiveAgainst);
|
2014-07-15 03:23:48 +02:00
|
|
|
this.setCreativeTab(CreativeTab.EE3_TAB);
|
|
|
|
this.setNoRepair();
|
|
|
|
this.setUnlocalizedName(Names.Tools.DARK_MATTER_PICKAXE);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-07-17 03:40:12 +02:00
|
|
|
public boolean func_150897_b(Block block)
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-09-15 22:06:20 +02:00
|
|
|
return block == Blocks.obsidian ? this.toolMaterial.getHarvestLevel() == 3 : (block != Blocks.diamond_block && block != Blocks.diamond_ore ? (block != Blocks.emerald_ore && block != Blocks.emerald_block ? (block != Blocks.gold_block && block != Blocks.gold_ore ? (block != Blocks.iron_block && block != Blocks.iron_ore ? (block != Blocks.lapis_block && block != Blocks.lapis_ore ? (block != Blocks.redstone_ore && block != Blocks.lit_redstone_ore ? (block.getMaterial() == net.minecraft.block.material.Material.rock || (block.getMaterial() == net.minecraft.block.material.Material.iron || block.getMaterial() == net.minecraft.block.material.Material.anvil)) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 1) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2) : this.toolMaterial.getHarvestLevel() >= 2);
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-07-17 03:40:12 +02:00
|
|
|
public float func_150893_a(ItemStack itemStack, Block block)
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-07-17 03:40:12 +02:00
|
|
|
return block.getMaterial() != net.minecraft.block.material.Material.iron && block.getMaterial() != net.minecraft.block.material.Material.anvil && block.getMaterial() != net.minecraft.block.material.Material.rock ? super.func_150893_a(itemStack, block) : this.efficiencyOnProperMaterial;
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
2014-07-17 03:40:12 +02:00
|
|
|
public Set<String> getToolClasses(ItemStack itemStack)
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-07-17 03:40:12 +02:00
|
|
|
return ImmutableSet.of("pickaxe");
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public float getDigSpeed(ItemStack itemStack, Block block, int meta)
|
|
|
|
{
|
2014-07-15 18:24:18 +02:00
|
|
|
if ((ForgeHooks.isToolEffective(itemStack, block, meta) || block == Blocks.obsidian || block == Blocks.redstone_ore || block == Blocks.lit_redstone_ore) && (itemStack.getItem() instanceof IChargeable))
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
|
|
|
return super.getDigSpeed(itemStack, block, meta) + (((IChargeable) itemStack.getItem()).getChargeLevel(itemStack) * 12f);
|
|
|
|
}
|
|
|
|
|
|
|
|
return super.getDigSpeed(itemStack, block, meta);
|
|
|
|
}
|
|
|
|
|
2014-07-15 19:24:04 +02:00
|
|
|
@Override
|
|
|
|
public boolean onItemUse(ItemStack itemStack, EntityPlayer entityPlayer, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
|
|
|
|
{
|
|
|
|
if (!world.isRemote)
|
|
|
|
{
|
2014-07-16 22:10:18 +02:00
|
|
|
// TODO
|
2014-07-15 19:24:04 +02:00
|
|
|
LogHelper.info("Right click with the Dark Matter Pickaxe");
|
|
|
|
}
|
|
|
|
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2014-07-16 22:10:18 +02:00
|
|
|
@Override
|
|
|
|
public short getMaxChargeLevel()
|
|
|
|
{
|
|
|
|
return 3;
|
|
|
|
}
|
|
|
|
|
2014-07-15 03:23:48 +02:00
|
|
|
@Override
|
|
|
|
public short getChargeLevel(ItemStack itemStack)
|
|
|
|
{
|
|
|
|
return NBTHelper.getShort(itemStack, Names.NBT.CHARGE_LEVEL);
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void setChargeLevel(ItemStack itemStack, short chargeLevel)
|
|
|
|
{
|
2014-07-16 22:10:18 +02:00
|
|
|
if (chargeLevel <= this.getMaxChargeLevel())
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
|
|
|
NBTHelper.setShort(itemStack, Names.NBT.CHARGE_LEVEL, chargeLevel);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void increaseChargeLevel(ItemStack itemStack)
|
|
|
|
{
|
2014-07-16 22:10:18 +02:00
|
|
|
if (NBTHelper.getShort(itemStack, Names.NBT.CHARGE_LEVEL) < this.getMaxChargeLevel())
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
|
|
|
NBTHelper.setShort(itemStack, Names.NBT.CHARGE_LEVEL, (short) (NBTHelper.getShort(itemStack, Names.NBT.CHARGE_LEVEL) + 1));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void decreaseChargeLevel(ItemStack itemStack)
|
|
|
|
{
|
|
|
|
if (NBTHelper.getShort(itemStack, Names.NBT.CHARGE_LEVEL) > 0)
|
|
|
|
{
|
|
|
|
NBTHelper.setShort(itemStack, Names.NBT.CHARGE_LEVEL, (short) (NBTHelper.getShort(itemStack, Names.NBT.CHARGE_LEVEL) - 1));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void doKeyBindingAction(EntityPlayer entityPlayer, ItemStack itemStack, Key key)
|
|
|
|
{
|
|
|
|
if (key == Key.CHARGE)
|
|
|
|
{
|
|
|
|
if (!entityPlayer.isSneaking())
|
|
|
|
{
|
2014-07-16 22:10:18 +02:00
|
|
|
if (getChargeLevel(itemStack) == this.getMaxChargeLevel())
|
2014-07-15 03:23:48 +02:00
|
|
|
{
|
2014-07-21 20:47:00 +02:00
|
|
|
NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f);
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
increaseChargeLevel(itemStack);
|
2014-07-21 20:47:00 +02:00
|
|
|
NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_UP, 0.5F, 0.5F + 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel()));
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
if (getChargeLevel(itemStack) == 0)
|
|
|
|
{
|
2014-07-21 20:47:00 +02:00
|
|
|
NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.FAIL, 1.5f, 1.5f);
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
decreaseChargeLevel(itemStack);
|
2014-07-21 20:47:00 +02:00
|
|
|
NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.CHARGE_DOWN, 0.5F, 1.0F - (0.5F - 0.5F * (getChargeLevel(itemStack) * 1.0F / this.getMaxChargeLevel())));
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2014-07-15 19:24:04 +02:00
|
|
|
else if (key == Key.EXTRA)
|
|
|
|
{
|
2014-07-21 20:47:00 +02:00
|
|
|
NetworkSoundHelper.playSoundAt(entityPlayer, Sounds.TOCK, 0.5f, 1.5F);
|
2014-07-15 19:24:04 +02:00
|
|
|
changeToolMode(itemStack);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public List<ToolMode> getAvailableToolModes()
|
|
|
|
{
|
2014-07-17 21:20:53 +02:00
|
|
|
return Arrays.asList(ToolMode.STANDARD, ToolMode.WIDE, ToolMode.TALL);
|
2014-07-15 19:24:04 +02:00
|
|
|
}
|
2014-07-15 03:23:48 +02:00
|
|
|
}
|