2012-11-07 21:01:46 +01:00
|
|
|
package mekanism.common;
|
|
|
|
|
2012-11-09 03:22:18 +01:00
|
|
|
import java.util.List;
|
2012-11-07 21:01:46 +01:00
|
|
|
|
2012-12-20 22:53:39 +01:00
|
|
|
import net.minecraft.block.Block;
|
|
|
|
import net.minecraft.entity.EntityLiving;
|
|
|
|
import net.minecraft.entity.player.EntityPlayer;
|
2013-02-14 19:26:13 +01:00
|
|
|
import net.minecraft.item.Item;
|
2012-12-20 22:53:39 +01:00
|
|
|
import net.minecraft.item.ItemStack;
|
2013-02-14 19:26:13 +01:00
|
|
|
import net.minecraft.nbt.NBTTagCompound;
|
2012-12-20 22:53:39 +01:00
|
|
|
import net.minecraft.util.DamageSource;
|
|
|
|
import net.minecraft.world.World;
|
2012-11-09 03:22:18 +01:00
|
|
|
|
2012-11-25 16:45:00 +01:00
|
|
|
public class ItemAtomicDisassembler extends ItemEnergized
|
2012-11-09 03:22:18 +01:00
|
|
|
{
|
2012-11-25 16:45:00 +01:00
|
|
|
public ItemAtomicDisassembler(int id)
|
2012-11-09 03:22:18 +01:00
|
|
|
{
|
2013-02-14 19:26:13 +01:00
|
|
|
super(id, 1000000, 120);
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean canHarvestBlock(Block block)
|
|
|
|
{
|
|
|
|
return block != Block.bedrock;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public void addInformation(ItemStack itemstack, EntityPlayer entityplayer, List list, boolean flag)
|
|
|
|
{
|
|
|
|
super.addInformation(itemstack, entityplayer, list, flag);
|
|
|
|
|
2013-02-14 19:26:13 +01:00
|
|
|
list.add("Block efficiency: " + getEfficiency(itemstack));
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean hitEntity(ItemStack itemstack, EntityLiving hitEntity, EntityLiving player)
|
|
|
|
{
|
2012-11-25 16:45:00 +01:00
|
|
|
if(getJoules(itemstack) > 0)
|
2012-11-09 03:22:18 +01:00
|
|
|
{
|
2013-02-14 19:26:13 +01:00
|
|
|
hitEntity.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)player), 20);
|
2012-11-29 20:56:38 +01:00
|
|
|
onUse(2000, itemstack);
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
else {
|
|
|
|
hitEntity.attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)player), 4);
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public float getStrVsBlock(ItemStack itemstack, Block block)
|
|
|
|
{
|
2013-02-14 19:26:13 +01:00
|
|
|
return getJoules(itemstack) != 0 ? getEfficiency(itemstack) : 1F;
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean onBlockDestroyed(ItemStack itemstack, World world, int id, int x, int y, int z, EntityLiving entityliving)
|
|
|
|
{
|
|
|
|
if ((double)Block.blocksList[id].getBlockHardness(world, x, y, z) != 0.0D)
|
|
|
|
{
|
2013-02-14 19:26:13 +01:00
|
|
|
onUse(getEfficiency(itemstack), itemstack);
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
else {
|
2013-02-14 19:26:13 +01:00
|
|
|
onUse(getEfficiency(itemstack)/2, itemstack);
|
2012-11-09 03:22:18 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean isFull3D()
|
|
|
|
{
|
|
|
|
return true;
|
|
|
|
}
|
2012-11-25 16:45:00 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public boolean canProduceElectricity()
|
|
|
|
{
|
|
|
|
return false;
|
|
|
|
}
|
2013-02-14 19:26:13 +01:00
|
|
|
|
|
|
|
@Override
|
|
|
|
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer)
|
|
|
|
{
|
|
|
|
if(!world.isRemote)
|
|
|
|
{
|
|
|
|
incrementEfficiency(itemstack);
|
|
|
|
entityplayer.addChatMessage(EnumColor.DARK_BLUE + "[Mekanism] " + EnumColor.GREY + "Efficiency bumped to " + getEfficiency(itemstack));
|
|
|
|
}
|
|
|
|
|
|
|
|
return itemstack;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getEfficiency(ItemStack itemStack)
|
|
|
|
{
|
|
|
|
if(itemStack.stackTagCompound == null)
|
|
|
|
{
|
|
|
|
return 5;
|
|
|
|
}
|
|
|
|
|
|
|
|
int efficiency = 5;
|
|
|
|
|
|
|
|
if(itemStack.stackTagCompound.getTag("efficiency") != null)
|
|
|
|
{
|
|
|
|
efficiency = itemStack.stackTagCompound.getInteger("efficiency");
|
|
|
|
}
|
|
|
|
|
|
|
|
return efficiency;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void incrementEfficiency(ItemStack itemStack)
|
|
|
|
{
|
|
|
|
if(itemStack.stackTagCompound == null)
|
|
|
|
{
|
|
|
|
itemStack.setTagCompound(new NBTTagCompound());
|
|
|
|
itemStack.stackTagCompound.setInteger("efficiency", 20);
|
|
|
|
}
|
|
|
|
|
|
|
|
itemStack.stackTagCompound.setInteger("efficiency", getIncremented(getEfficiency(itemStack)));
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getIncremented(int previous)
|
|
|
|
{
|
|
|
|
if(previous == 5)
|
|
|
|
{
|
|
|
|
return 10;
|
|
|
|
}
|
|
|
|
else if(previous == 10)
|
|
|
|
{
|
|
|
|
return 25;
|
|
|
|
}
|
|
|
|
else if(previous == 25)
|
|
|
|
{
|
|
|
|
return 50;
|
|
|
|
}
|
|
|
|
else if(previous == 50)
|
|
|
|
{
|
|
|
|
return 100;
|
|
|
|
}
|
|
|
|
else if(previous == 100)
|
|
|
|
{
|
|
|
|
return 5;
|
|
|
|
}
|
|
|
|
return 0;
|
|
|
|
}
|
2012-11-07 21:01:46 +01:00
|
|
|
}
|