package mekanism.common.tile; import io.netty.buffer.ByteBuf; import java.util.ArrayList; import mekanism.api.energy.IStrictEnergyStorage; import mekanism.common.Tier.InductionCellTier; import mekanism.common.capabilities.Capabilities; import mekanism.common.util.LangUtils; import mekanism.common.util.MekanismUtils; import net.minecraft.nbt.NBTTagCompound; import net.minecraftforge.common.capabilities.Capability; import net.minecraftforge.fml.common.FMLCommonHandler; public class TileEntityInductionCell extends TileEntityBasicBlock implements IStrictEnergyStorage { public InductionCellTier tier = InductionCellTier.BASIC; public double electricityStored; @Override public void onUpdate() {} public String getName() { return LangUtils.localize(getBlockType().getUnlocalizedName() + ".InductionCell" + tier.getBaseTier().getSimpleName() + ".name"); } @Override public void handlePacketData(ByteBuf dataStream) { if(FMLCommonHandler.instance().getEffectiveSide().isClient()) { InductionCellTier prevTier = tier; tier = InductionCellTier.values()[dataStream.readInt()]; super.handlePacketData(dataStream); electricityStored = dataStream.readDouble(); if(prevTier != tier) { MekanismUtils.updateBlock(worldObj, getPos()); } } } @Override public ArrayList<Object> getNetworkedData(ArrayList<Object> data) { data.add(tier.ordinal()); super.getNetworkedData(data); data.add(electricityStored); return data; } @Override public void readFromNBT(NBTTagCompound nbtTags) { super.readFromNBT(nbtTags); tier = InductionCellTier.values()[nbtTags.getInteger("tier")]; electricityStored = nbtTags.getDouble("electricityStored"); } @Override public NBTTagCompound writeToNBT(NBTTagCompound nbtTags) { super.writeToNBT(nbtTags); nbtTags.setInteger("tier", tier.ordinal()); nbtTags.setDouble("electricityStored", electricityStored); return nbtTags; } @Override public double getEnergy() { return electricityStored; } @Override public void setEnergy(double energy) { electricityStored = Math.min(energy, getMaxEnergy()); } @Override public double getMaxEnergy() { return tier.maxEnergy; } @Override public boolean hasCapability(net.minecraftforge.common.capabilities.Capability<?> capability, net.minecraft.util.EnumFacing facing) { return capability == Capabilities.ENERGY_STORAGE_CAPABILITY || super.hasCapability(capability, facing); } @Override public <T> T getCapability(Capability<T> capability, net.minecraft.util.EnumFacing facing) { if (capability == Capabilities.ENERGY_STORAGE_CAPABILITY) return (T) this; return super.getCapability(capability, facing); } }