fixed some power related things in hologram projector

This commit is contained in:
Florian Nücke 2014-02-27 11:45:49 +01:00
parent 65fb648cf9
commit aa474f3425
4 changed files with 33 additions and 7 deletions

View File

@ -27,6 +27,7 @@ class PacketHandler extends CommonPacketHandler {
case PacketType.ComputerState => onComputerState(p)
case PacketType.ComputerUserList => onComputerUserList(p)
case PacketType.HologramClear => onHologramClear(p)
case PacketType.HologramPowerChange => onHologramPowerChange(p)
case PacketType.HologramScale => onHologramScale(p)
case PacketType.HologramSet => onHologramSet(p)
case PacketType.PowerState => onPowerState(p)
@ -111,6 +112,12 @@ class PacketHandler extends CommonPacketHandler {
case _ => // Invalid packet.
}
def onHologramPowerChange(p: PacketParser) =
p.readTileEntity[Hologram]() match {
case Some(t) => t.hasPower = p.readBoolean()
case _ => // Invalid packet.
}
def onHologramScale(p: PacketParser) =
p.readTileEntity[Hologram]() match {
case Some(t) =>

View File

@ -9,6 +9,7 @@ object PacketType extends Enumeration {
ComputerState,
ComputerUserList,
HologramClear,
HologramPowerChange,
HologramScale,
HologramSet,
PowerState,

View File

@ -128,15 +128,22 @@ class Hologram extends Environment with SidedEnvironment {
resetDirtyFlag()
}
}
if (litRatio < 0) {
litRatio = 0
for (i <- 0 until volume.length) {
if (volume(i) != 0) litRatio += 1
if (world.getWorldTime % Settings.get.tickFrequency == 0) {
if (litRatio < 0) {
litRatio = 0
for (i <- 0 until volume.length) {
if (volume(i) != 0) litRatio += 1
}
litRatio /= volume.length
}
litRatio /= volume.length
}
hasPower = node.changeBuffer(-Settings.get.hologramCost * litRatio * scale) == 0
val hadPower = hasPower
val neededPower = Settings.get.hologramCost * litRatio * scale * Settings.get.tickFrequency
hasPower = node.tryChangeBuffer(-neededPower)
if (hasPower != hadPower) {
ServerPacketSender.sendHologramPowerChange(this)
}
}
}
}
@ -165,6 +172,7 @@ class Hologram extends Environment with SidedEnvironment {
super.readFromNBTForClient(nbt)
nbt.getIntArray("volume").copyToArray(volume)
scale = nbt.getDouble("scale")
hasPower = nbt.getBoolean("hasPower")
dirty = true
}
@ -172,5 +180,6 @@ class Hologram extends Environment with SidedEnvironment {
super.writeToNBTForClient(nbt)
nbt.setIntArray("volume", volume)
nbt.setDouble("scale", scale)
nbt.setBoolean("hasPower", hasPower)
}
}

View File

@ -62,6 +62,15 @@ object PacketSender {
pb.sendToNearbyPlayers(t)
}
def sendHologramPowerChange(t: Hologram) {
val pb = new PacketBuilder(PacketType.HologramPowerChange)
pb.writeTileEntity(t)
pb.writeBoolean(t.hasPower)
pb.sendToNearbyPlayers(t)
}
def sendHologramScale(t: Hologram) {
val pb = new PacketBuilder(PacketType.HologramScale)