mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-17 11:15:12 -04:00
Externalized saved data for holograms.
This commit is contained in:
parent
08e203a36f
commit
7e67db13b1
@ -52,6 +52,10 @@ object SaveHandler {
|
|||||||
scheduleSave(dimension, chunk, name, data)
|
scheduleSave(dimension, chunk, name, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def scheduleSave(world: World, x: Int, z: Int, nbt: NBTTagCompound, name: String, save: NBTTagCompound => Unit) {
|
||||||
|
scheduleSave(world, x, z, nbt, name, writeNBT(save))
|
||||||
|
}
|
||||||
|
|
||||||
private def writeNBT(save: NBTTagCompound => Unit) = {
|
private def writeNBT(save: NBTTagCompound => Unit) = {
|
||||||
val tmpNbt = new NBTTagCompound()
|
val tmpNbt = new NBTTagCompound()
|
||||||
save(tmpNbt)
|
save(tmpNbt)
|
||||||
|
@ -2,6 +2,7 @@ package li.cil.oc.common.tileentity
|
|||||||
|
|
||||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||||
import li.cil.oc.api.network._
|
import li.cil.oc.api.network._
|
||||||
|
import li.cil.oc.common.SaveHandler
|
||||||
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
import li.cil.oc.server.{PacketSender => ServerPacketSender}
|
||||||
import li.cil.oc.{Settings, api}
|
import li.cil.oc.{Settings, api}
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
@ -308,16 +309,25 @@ class Hologram(var tier: Int) extends traits.Environment with SidedEnvironment w
|
|||||||
override def readFromNBT(nbt: NBTTagCompound) {
|
override def readFromNBT(nbt: NBTTagCompound) {
|
||||||
tier = nbt.getByte(Settings.namespace + "tier") max 0 min 1
|
tier = nbt.getByte(Settings.namespace + "tier") max 0 min 1
|
||||||
super.readFromNBT(nbt)
|
super.readFromNBT(nbt)
|
||||||
|
if (nbt.hasKey(Settings.namespace + "volume") && nbt.hasKey(Settings.namespace + "colors")) {
|
||||||
nbt.getIntArray(Settings.namespace + "volume").copyToArray(volume)
|
nbt.getIntArray(Settings.namespace + "volume").copyToArray(volume)
|
||||||
nbt.getIntArray(Settings.namespace + "colors").map(convertColor).copyToArray(colors)
|
nbt.getIntArray(Settings.namespace + "colors").map(convertColor).copyToArray(colors)
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
val tag = SaveHandler.loadNBT(nbt, node.address + "_data")
|
||||||
|
tag.getIntArray("volume").copyToArray(volume)
|
||||||
|
tag.getIntArray("colors").map(convertColor).copyToArray(colors)
|
||||||
|
}
|
||||||
scale = nbt.getDouble(Settings.namespace + "scale")
|
scale = nbt.getDouble(Settings.namespace + "scale")
|
||||||
}
|
}
|
||||||
|
|
||||||
override def writeToNBT(nbt: NBTTagCompound) = this.synchronized {
|
override def writeToNBT(nbt: NBTTagCompound) = this.synchronized {
|
||||||
nbt.setByte(Settings.namespace + "tier", tier.toByte)
|
nbt.setByte(Settings.namespace + "tier", tier.toByte)
|
||||||
super.writeToNBT(nbt)
|
super.writeToNBT(nbt)
|
||||||
nbt.setIntArray(Settings.namespace + "volume", volume)
|
SaveHandler.scheduleSave(world, x, z, nbt, node.address + "_data", tag => {
|
||||||
nbt.setIntArray(Settings.namespace + "colors", colors.map(convertColor))
|
tag.setIntArray("volume", volume)
|
||||||
|
tag.setIntArray("colors", colors.map(convertColor))
|
||||||
|
})
|
||||||
nbt.setDouble(Settings.namespace + "scale", scale)
|
nbt.setDouble(Settings.namespace + "scale", scale)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user