package mods.eln.item.electricalitem; import mods.eln.generic.GenericItemUsingDamageDescriptor; import mods.eln.item.electricalinterface.IItemEnergyBattery; import mods.eln.misc.UtilsClient; import mods.eln.wiki.Data; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.IItemRenderer.ItemRenderType; import net.minecraftforge.client.IItemRenderer.ItemRendererHelper; import java.util.List; import static mods.eln.i18n.I18N.tr; public class BatteryItem extends GenericItemUsingDamageDescriptor implements IItemEnergyBattery { private int priority; ResourceLocation iconResource; double energyStorage, dischargePower, chargePower; public BatteryItem(String name, double energyStorage, double chargePower, double dischargePower, int priority) { super(name); this.priority = priority; this.chargePower = chargePower; this.dischargePower = dischargePower; this.energyStorage = energyStorage; iconResource = new ResourceLocation("eln", "textures/items/" + name.replace(" ", "").toLowerCase() + ".png"); } @Override public void setParent(Item item, int damage) { super.setParent(item, damage); Data.addPortable(newItemStack()); } @Override public NBTTagCompound getDefaultNBT() { NBTTagCompound nbt = new NBTTagCompound(); nbt.setDouble("energy", 0); return nbt; } @Override public void addInformation(ItemStack itemStack, EntityPlayer entityPlayer, List list, boolean par4) { super.addInformation(itemStack, entityPlayer, list, par4); list.add(tr("Charge power: %1$W", (int) chargePower)); list.add(tr("Discharge power: %1$W", (int) dischargePower)); if (itemStack != null) { list.add(tr("Stored energy: %1$J (%2$%)", getEnergy(itemStack), (int) (getEnergy(itemStack) / energyStorage * 100))); } } public double getEnergy(ItemStack stack) { return getNbt(stack).getDouble("energy"); } public void setEnergy(ItemStack stack, double value) { if (value < 0) value = 0; getNbt(stack).setDouble("energy", value); } @Override public double getEnergyMax(ItemStack stack) { return energyStorage; } @Override public double getChargePower(ItemStack stack) { return chargePower; } @Override public double getDischagePower(ItemStack stack) { return dischargePower; } @Override public int getPriority(ItemStack stack) { return priority; } @Override public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { return type != ItemRenderType.INVENTORY; } @Override public boolean handleRenderType(ItemStack item, ItemRenderType type) { return true; } @Override public void renderItem(ItemRenderType type, ItemStack item, Object... data) { super.renderItem(type, item, data); if (type == ItemRenderType.INVENTORY) { UtilsClient.drawEnergyBare(type, (float) (getEnergy(item) / getEnergyMax(item))); } } @Override public void electricalItemUpdate(ItemStack stack, double time) { } }