blob: 0857fac0f495d74985efc0d4155afd0c740cd3d6 [file] [log] [blame] [raw]
package li.cil.oc.common.tileentity
import cpw.mods.fml.relauncher.{Side, SideOnly}
import li.cil.oc.server.{PacketSender => ServerPacketSender}
import net.minecraft.nbt.NBTTagCompound
import net.minecraft.tileentity.{TileEntity => MCTileEntity}
trait PowerInformation extends TileEntity { self: MCTileEntity =>
private var lastSentRatio = -1.0
def globalBuffer: Double
def globalBuffer_=(value: Double)
def globalBufferSize: Double
def globalBufferSize_=(value: Double)
protected def updatePowerInformation() {
val ratio = if (globalBufferSize > 0) globalBuffer / globalBufferSize else 0
if (lastSentRatio < 0 || math.abs(lastSentRatio - ratio) > (5.0 / 100.0)) {
lastSentRatio = ratio
ServerPacketSender.sendPowerState(this)
}
}
@SideOnly(Side.CLIENT)
override def readFromNBTForClient(nbt: NBTTagCompound) {
super.readFromNBTForClient(nbt)
globalBuffer = nbt.getDouble("globalBuffer")
globalBufferSize = nbt.getDouble("globalBufferSize")
}
override def writeToNBTForClient(nbt: NBTTagCompound) {
super.writeToNBTForClient(nbt)
lastSentRatio = if (globalBufferSize > 0) globalBuffer / globalBufferSize else 0
nbt.setDouble("globalBuffer", globalBuffer)
nbt.setDouble("globalBufferSize", globalBufferSize)
}
}