Fixed ItemBlockBattery meta issue
This commit is contained in:
parent
c90d509d5e
commit
3c36d162e0
1 changed files with 121 additions and 114 deletions
|
@ -21,141 +21,148 @@ import calclavia.lib.utility.LanguageUtility;
|
||||||
@UniversalClass
|
@UniversalClass
|
||||||
public class ItemBlockBattery extends ItemBlock implements IEnergyItem, IVoltageItem
|
public class ItemBlockBattery extends ItemBlock implements IEnergyItem, IVoltageItem
|
||||||
{
|
{
|
||||||
public ItemBlockBattery(int id)
|
public ItemBlockBattery(int id)
|
||||||
{
|
{
|
||||||
super(id);
|
super(id);
|
||||||
this.setMaxStackSize(1);
|
this.setMaxStackSize(1);
|
||||||
this.setMaxDamage(100);
|
this.setMaxDamage(100);
|
||||||
this.setNoRepair();
|
this.setNoRepair();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@SuppressWarnings("unchecked")
|
||||||
public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4)
|
@Override
|
||||||
{
|
public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4)
|
||||||
String color = "";
|
{
|
||||||
long joules = this.getEnergy(itemStack);
|
String color = "";
|
||||||
|
long joules = this.getEnergy(itemStack);
|
||||||
|
|
||||||
if (joules <= this.getEnergyCapacity(itemStack) / 3)
|
if (joules <= this.getEnergyCapacity(itemStack) / 3)
|
||||||
{
|
{
|
||||||
color = "\u00a74";
|
color = "\u00a74";
|
||||||
}
|
}
|
||||||
else if (joules > this.getEnergyCapacity(itemStack) * 2 / 3)
|
else if (joules > this.getEnergyCapacity(itemStack) * 2 / 3)
|
||||||
{
|
{
|
||||||
color = "\u00a72";
|
color = "\u00a72";
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
color = "\u00a76";
|
color = "\u00a76";
|
||||||
}
|
}
|
||||||
|
itemStack.getItemDamageForDisplay();
|
||||||
|
list.add(LanguageUtility.getLocal("tooltip.battery.energy").replace("%0", color).replace("%1", EnumColor.GREY.toString()).replace("%v0", UnitDisplay.getDisplayShort(joules, Unit.JOULES)).replace("%v1", UnitDisplay.getDisplayShort(this.getEnergyCapacity(itemStack), Unit.JOULES)));
|
||||||
|
}
|
||||||
|
|
||||||
list.add(LanguageUtility.getLocal("tooltip.battery.energy").replace("%0", color).replace("%1", EnumColor.GREY.toString()).replace("%v0", UnitDisplay.getDisplayShort(joules, Unit.JOULES)).replace("%v1", UnitDisplay.getDisplayShort(this.getEnergyCapacity(itemStack), Unit.JOULES)));
|
@Override
|
||||||
}
|
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
|
||||||
|
{
|
||||||
|
boolean place = super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata);
|
||||||
|
|
||||||
@Override
|
if (place)
|
||||||
public boolean placeBlockAt(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata)
|
{
|
||||||
{
|
TileBattery tileEntity = (TileBattery) world.getBlockTileEntity(x, y, z);
|
||||||
boolean place = super.placeBlockAt(stack, player, world, x, y, z, side, hitX, hitY, hitZ, metadata);
|
tileEntity.setEnergy(null, this.getEnergy(stack));
|
||||||
|
}
|
||||||
|
|
||||||
if (place)
|
return place;
|
||||||
{
|
}
|
||||||
TileBattery tileEntity = (TileBattery) world.getBlockTileEntity(x, y, z);
|
|
||||||
tileEntity.setEnergy(null, this.getEnergy(stack));
|
|
||||||
}
|
|
||||||
|
|
||||||
return place;
|
/** Makes sure the item is uncharged when it is crafted and not charged. Change this if you do
|
||||||
}
|
* not want this to happen! */
|
||||||
|
@Override
|
||||||
|
public void onCreated(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer)
|
||||||
|
{
|
||||||
|
this.setEnergy(itemStack, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
@Override
|
||||||
* Makes sure the item is uncharged when it is crafted and not charged. Change this if you do
|
public long recharge(ItemStack itemStack, long energy, boolean doReceive)
|
||||||
* not want this to happen!
|
{
|
||||||
*/
|
long rejectedElectricity = Math.max((this.getEnergy(itemStack) + energy) - this.getEnergyCapacity(itemStack), 0);
|
||||||
@Override
|
long energyToReceive = Math.min(energy - rejectedElectricity, getTransferRate(itemStack));
|
||||||
public void onCreated(ItemStack itemStack, World par2World, EntityPlayer par3EntityPlayer)
|
|
||||||
{
|
|
||||||
this.setEnergy(itemStack, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
if (doReceive)
|
||||||
public long recharge(ItemStack itemStack, long energy, boolean doReceive)
|
{
|
||||||
{
|
this.setEnergy(itemStack, this.getEnergy(itemStack) + energyToReceive);
|
||||||
long rejectedElectricity = Math.max((this.getEnergy(itemStack) + energy) - this.getEnergyCapacity(itemStack), 0);
|
}
|
||||||
long energyToReceive = Math.min(energy - rejectedElectricity, getTransferRate(itemStack));
|
|
||||||
|
|
||||||
if (doReceive)
|
return energyToReceive;
|
||||||
{
|
}
|
||||||
this.setEnergy(itemStack, this.getEnergy(itemStack) + energyToReceive);
|
|
||||||
}
|
|
||||||
|
|
||||||
return energyToReceive;
|
@Override
|
||||||
}
|
public long discharge(ItemStack itemStack, long energy, boolean doTransfer)
|
||||||
|
{
|
||||||
|
long energyToExtract = Math.min(Math.min(this.getEnergy(itemStack), energy), getTransferRate(itemStack));
|
||||||
|
|
||||||
@Override
|
if (doTransfer)
|
||||||
public long discharge(ItemStack itemStack, long energy, boolean doTransfer)
|
{
|
||||||
{
|
this.setEnergy(itemStack, this.getEnergy(itemStack) - energyToExtract);
|
||||||
long energyToExtract = Math.min(Math.min(this.getEnergy(itemStack), energy), getTransferRate(itemStack));
|
}
|
||||||
|
|
||||||
if (doTransfer)
|
return energyToExtract;
|
||||||
{
|
}
|
||||||
this.setEnergy(itemStack, this.getEnergy(itemStack) - energyToExtract);
|
|
||||||
}
|
|
||||||
|
|
||||||
return energyToExtract;
|
@Override
|
||||||
}
|
public long getVoltage(ItemStack itemStack)
|
||||||
|
{
|
||||||
|
return UniversalElectricity.DEFAULT_VOLTAGE;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getVoltage(ItemStack itemStack)
|
public void setEnergy(ItemStack itemStack, long joules)
|
||||||
{
|
{
|
||||||
return UniversalElectricity.DEFAULT_VOLTAGE;
|
if (itemStack.getTagCompound() == null)
|
||||||
}
|
{
|
||||||
|
itemStack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
long electricityStored = Math.max(Math.min(joules, this.getEnergyCapacity(itemStack)), 0);
|
||||||
public void setEnergy(ItemStack itemStack, long joules)
|
itemStack.getTagCompound().setLong("electricity", electricityStored);
|
||||||
{
|
}
|
||||||
if (itemStack.getTagCompound() == null)
|
|
||||||
{
|
|
||||||
itemStack.setTagCompound(new NBTTagCompound());
|
|
||||||
}
|
|
||||||
|
|
||||||
long electricityStored = Math.max(Math.min(joules, this.getEnergyCapacity(itemStack)), 0);
|
public long getTransfer(ItemStack itemStack)
|
||||||
itemStack.getTagCompound().setLong("electricity", electricityStored);
|
{
|
||||||
itemStack.setItemDamage((int) (100 - ((double) electricityStored / (double) getEnergyCapacity(itemStack)) * 100));
|
return this.getEnergyCapacity(itemStack) - this.getEnergy(itemStack);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTransfer(ItemStack itemStack)
|
/** Gets the energy stored in the item. Energy is stored using item NBT */
|
||||||
{
|
@Override
|
||||||
return this.getEnergyCapacity(itemStack) - this.getEnergy(itemStack);
|
public long getEnergy(ItemStack itemStack)
|
||||||
}
|
{
|
||||||
|
if (itemStack.getTagCompound() == null)
|
||||||
|
{
|
||||||
|
itemStack.setTagCompound(new NBTTagCompound());
|
||||||
|
}
|
||||||
|
|
||||||
/** Gets the energy stored in the item. Energy is stored using item NBT */
|
long energyStored = itemStack.getTagCompound().getLong("electricity");
|
||||||
@Override
|
return energyStored;
|
||||||
public long getEnergy(ItemStack itemStack)
|
}
|
||||||
{
|
|
||||||
if (itemStack.getTagCompound() == null)
|
|
||||||
{
|
|
||||||
itemStack.setTagCompound(new NBTTagCompound());
|
|
||||||
}
|
|
||||||
|
|
||||||
long energyStored = itemStack.getTagCompound().getLong("electricity");
|
@Override
|
||||||
itemStack.setItemDamage((int) (100 - ((double) energyStored / (double) getEnergyCapacity(itemStack)) * 100));
|
public int getDisplayDamage(ItemStack stack)
|
||||||
return energyStored;
|
{
|
||||||
}
|
return (int) (100 - ((double) this.getEnergy(stack) / (double) getEnergyCapacity(stack)) * 100);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getEnergyCapacity(ItemStack theItem)
|
public long getEnergyCapacity(ItemStack theItem)
|
||||||
{
|
{
|
||||||
return TileBattery.getEnergyForTier(theItem.getItemDamage());
|
return TileBattery.getEnergyForTier(theItem.getItemDamage() + 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTransferRate(ItemStack itemStack)
|
public long getTransferRate(ItemStack itemStack)
|
||||||
{
|
{
|
||||||
return this.getEnergyCapacity(itemStack) / 100;
|
return this.getEnergyCapacity(itemStack) / 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@SuppressWarnings("unchecked")
|
||||||
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
|
@Override
|
||||||
{
|
public void getSubItems(int par1, CreativeTabs par2CreativeTabs, List par3List)
|
||||||
par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), 0));
|
{
|
||||||
par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this), this.getEnergyCapacity(new ItemStack(this))));
|
par3List.add(new ItemStack(this, 1, 0));
|
||||||
}
|
par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this, 1, 0), this.getEnergyCapacity(new ItemStack(this, 1, 0))));
|
||||||
|
par3List.add(new ItemStack(this, 1, 1));
|
||||||
|
par3List.add(CompatibilityModule.getItemWithCharge(new ItemStack(this, 1, 1), this.getEnergyCapacity(new ItemStack(this, 1, 1))));
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue