equivalent-exchange-3/src/main/java/com/pahimar/ee3/item/ItemDarkMatterShovel.java

154 lines
4.9 KiB
Java
Raw Normal View History

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 19:24:04 +02:00
import com.pahimar.ee3.reference.*;
2014-07-15 03:23:48 +02:00
import com.pahimar.ee3.util.NBTHelper;
2014-07-17 03:40:12 +02:00
import net.minecraft.block.Block;
2014-07-15 03:23:48 +02:00
import net.minecraft.entity.player.EntityPlayer;
2014-07-17 03:40:12 +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 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-17 03:40:12 +02:00
public class ItemDarkMatterShovel extends ItemToolEE implements IKeyBound, IChargeable, IModalTool
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.grass, Blocks.dirt, Blocks.sand, Blocks.gravel, Blocks.snow_layer, Blocks.snow, Blocks.clay, Blocks.farmland, Blocks.soul_sand, Blocks.mycelium});
2014-07-16 22:10:18 +02:00
public ItemDarkMatterShovel()
2014-07-15 03:23:48 +02:00
{
2014-07-17 03:40:12 +02:00
super(1.0f, Material.Tools.DARK_MATTER, blocksEffectiveAgainst);
2014-07-16 22:10:18 +02:00
this.setUnlocalizedName(Names.Tools.DARK_MATTER_SHOVEL);
2014-07-15 03:23:48 +02:00
}
@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-07-17 03:40:12 +02:00
return block == Blocks.snow_layer ? true : block == Blocks.snow;
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("shovel");
2014-07-15 03:23:48 +02:00
}
@Override
2014-07-16 22:10:18 +02:00
public short getMaxChargeLevel()
2014-07-15 03:23:48 +02:00
{
2014-07-16 22:10:18 +02:00
return 3;
2014-07-15 19:24:04 +02:00
}
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
{
entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f);
}
else
{
increaseChargeLevel(itemStack);
2014-07-16 22:10:18 +02:00
entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, 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)
{
entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, Sounds.FAIL, 1.5f, 1.5f);
}
else
{
decreaseChargeLevel(itemStack);
2014-07-16 22:10:18 +02:00
entityPlayer.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, 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)
{
changeToolMode(itemStack);
}
}
@Override
public List<ToolMode> getAvailableToolModes()
{
2014-07-16 22:10:18 +02:00
// TODO
return null;
2014-07-15 19:24:04 +02:00
}
@Override
public ToolMode getCurrentToolMode(ItemStack itemStack)
{
if (NBTHelper.getShort(itemStack, Names.NBT.MODE) < ToolMode.TYPES.length)
{
return ToolMode.TYPES[NBTHelper.getShort(itemStack, Names.NBT.MODE)];
}
return null;
}
@Override
public void setToolMode(ItemStack itemStack, ToolMode toolMode)
{
NBTHelper.setShort(itemStack, Names.NBT.MODE, (short) toolMode.ordinal());
}
@Override
public void changeToolMode(ItemStack itemStack)
{
ToolMode currentToolMode = getCurrentToolMode(itemStack);
if (getAvailableToolModes().contains(currentToolMode))
{
if (getAvailableToolModes().indexOf(currentToolMode) == getAvailableToolModes().size() - 1)
{
setToolMode(itemStack, getAvailableToolModes().get(0));
}
else
{
setToolMode(itemStack, getAvailableToolModes().get(getAvailableToolModes().indexOf(currentToolMode) + 1));
}
}
2014-07-15 03:23:48 +02:00
}
}