From 17357fa6c3e32757e3d58582ad1d78665007cf68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 8 Apr 2014 12:37:23 +0200 Subject: [PATCH] Fixed the navigation upgrade forgetting its position. --- .../server/component/UpgradeNavigation.scala | 30 ++++++++++++++++++- .../driver/item/UpgradeNavigation.scala | 7 ++--- 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala b/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala index 1ad8fb8c9..b2a54800f 100644 --- a/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala +++ b/src/main/scala/li/cil/oc/server/component/UpgradeNavigation.scala @@ -2,13 +2,19 @@ package li.cil.oc.server.component import li.cil.oc.api.network._ import li.cil.oc.api.{Rotatable, Network} +import li.cil.oc.Settings +import net.minecraft.nbt.NBTTagCompound import net.minecraft.tileentity.TileEntity -class UpgradeNavigation(val owner: TileEntity, val xCenter: Int, val zCenter: Int, val size: Int) extends ManagedComponent { +class UpgradeNavigation(val owner: TileEntity) extends ManagedComponent { val node = Network.newNode(this, Visibility.Network). withComponent("navigation", Visibility.Neighbors). create() + var xCenter = owner.xCoord + var zCenter = owner.zCoord + var size = 512 + // ----------------------------------------------------------------------- // @Callback(doc = """function():number, number, number -- Get the current relative position of the robot.""") @@ -37,4 +43,26 @@ class UpgradeNavigation(val owner: TileEntity, val xCenter: Int, val zCenter: In def getRange(context: Context, args: Arguments): Array[AnyRef] = { result(size / 2) } + + // ----------------------------------------------------------------------- // + + override def load(nbt: NBTTagCompound) { + super.load(nbt) + if (nbt.hasKey(Settings.namespace + "xCenter")) { + xCenter = nbt.getInteger(Settings.namespace + "xCenter") + } + if (nbt.hasKey(Settings.namespace + "zCenter")) { + zCenter = nbt.getInteger(Settings.namespace + "zCenter") + } + if (nbt.hasKey(Settings.namespace + "scale")) { + size = nbt.getInteger(Settings.namespace + "scale") + } + } + + override def save(nbt: NBTTagCompound) { + super.save(nbt) + nbt.setInteger(Settings.namespace + "xCenter", xCenter) + nbt.setInteger(Settings.namespace + "zCenter", zCenter) + nbt.setInteger(Settings.namespace + "scale", size) + } } diff --git a/src/main/scala/li/cil/oc/server/driver/item/UpgradeNavigation.scala b/src/main/scala/li/cil/oc/server/driver/item/UpgradeNavigation.scala index 0367a6f9f..3579262c7 100644 --- a/src/main/scala/li/cil/oc/server/driver/item/UpgradeNavigation.scala +++ b/src/main/scala/li/cil/oc/server/driver/item/UpgradeNavigation.scala @@ -3,7 +3,7 @@ package li.cil.oc.server.driver.item import li.cil.oc.api.driver.Slot import li.cil.oc.server.component import li.cil.oc.server.driver.Registry -import li.cil.oc.{Settings, Items} +import li.cil.oc.Items import net.minecraft.item.ItemStack import net.minecraft.tileentity.TileEntity @@ -15,10 +15,7 @@ object UpgradeNavigation extends Item { case Some(driver) => driver.dataTag(stack) case _ => null } - val x = if (nbt.hasKey(Settings.namespace + "xCenter")) nbt.getInteger(Settings.namespace + "xCenter") else container.xCoord - val z = if (nbt.hasKey(Settings.namespace + "zCenter")) nbt.getInteger(Settings.namespace + "zCenter") else container.zCoord - val size = if (nbt.hasKey(Settings.namespace + "scale")) nbt.getInteger(Settings.namespace + "scale") else 512 - new component.UpgradeNavigation(container, x, z, size) + new component.UpgradeNavigation(container) } override def slot(stack: ItemStack) = Slot.Upgrade