mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-19 04:06:43 -04:00
fixed some power related things in hologram projector
This commit is contained in:
parent
65fb648cf9
commit
aa474f3425
@ -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) =>
|
||||
|
@ -9,6 +9,7 @@ object PacketType extends Enumeration {
|
||||
ComputerState,
|
||||
ComputerUserList,
|
||||
HologramClear,
|
||||
HologramPowerChange,
|
||||
HologramScale,
|
||||
HologramSet,
|
||||
PowerState,
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user