Log restored chunk loader ticket locations, closes #1616.

This commit is contained in:
Florian Nücke 2016-01-31 17:58:13 +01:00
parent 6ef92b9ef5
commit c1749efb2d
2 changed files with 10 additions and 4 deletions

View File

@ -3,6 +3,7 @@ package li.cil.oc.common.event
import java.util
import cpw.mods.fml.common.eventhandler.SubscribeEvent
import li.cil.oc.OpenComputers
import li.cil.oc.api.event.RobotMoveEvent
import li.cil.oc.server.component.UpgradeChunkloader
import li.cil.oc.util.BlockPosition
@ -22,10 +23,13 @@ object ChunkloaderUpgradeHandler extends LoadingCallback {
override def ticketsLoaded(tickets: util.List[Ticket], world: World) {
for (ticket <- tickets) {
val data = ticket.getModData
restoredTickets += data.getString("address") -> ticket
val address = data.getString("address")
restoredTickets += address -> ticket
if (data.hasKey("x") && data.hasKey("z")) {
val x = data.getInteger("x")
val z = data.getInteger("z")
OpenComputers.log.info(s"Restoring chunk loader ticket for upgrade at chunk ($x, $z) with address $address.")
ForgeChunkManager.forceChunk(ticket, new ChunkCoordIntPair(x, z))
}
}

View File

@ -3,10 +3,10 @@ package li.cil.oc.server.component
import li.cil.oc.OpenComputers
import li.cil.oc.Settings
import li.cil.oc.api
import li.cil.oc.api.network.EnvironmentHost
import li.cil.oc.api.machine.Arguments
import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context
import li.cil.oc.api.network.EnvironmentHost
import li.cil.oc.api.network._
import li.cil.oc.api.prefab
import li.cil.oc.common.event.ChunkloaderUpgradeHandler
@ -44,8 +44,10 @@ class UpgradeChunkloader(val host: EnvironmentHost) extends prefab.ManagedEnviro
override def onConnect(node: Node) {
super.onConnect(node)
if (node == this.node) {
ticket = ChunkloaderUpgradeHandler.restoredTickets.remove(node.address).
orElse(host match {
if (ChunkloaderUpgradeHandler.restoredTickets.contains(node.address)) {
OpenComputers.log.info(s"Reclaiming chunk loader ticket at (${host.xPosition()}, ${host.yPosition()}, ${host.zPosition()}) in dimension ${host.world().provider.dimensionId}.")
}
ticket = ChunkloaderUpgradeHandler.restoredTickets.remove(node.address).orElse(host match {
case context: Context if context.isRunning => Option(ForgeChunkManager.requestTicket(OpenComputers, host.world, ForgeChunkManager.Type.NORMAL))
case _ => None
})