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 java.util
import cpw.mods.fml.common.eventhandler.SubscribeEvent import cpw.mods.fml.common.eventhandler.SubscribeEvent
import li.cil.oc.OpenComputers
import li.cil.oc.api.event.RobotMoveEvent import li.cil.oc.api.event.RobotMoveEvent
import li.cil.oc.server.component.UpgradeChunkloader import li.cil.oc.server.component.UpgradeChunkloader
import li.cil.oc.util.BlockPosition import li.cil.oc.util.BlockPosition
@ -22,10 +23,13 @@ object ChunkloaderUpgradeHandler extends LoadingCallback {
override def ticketsLoaded(tickets: util.List[Ticket], world: World) { override def ticketsLoaded(tickets: util.List[Ticket], world: World) {
for (ticket <- tickets) { for (ticket <- tickets) {
val data = ticket.getModData val data = ticket.getModData
restoredTickets += data.getString("address") -> ticket val address = data.getString("address")
restoredTickets += address -> ticket
if (data.hasKey("x") && data.hasKey("z")) { if (data.hasKey("x") && data.hasKey("z")) {
val x = data.getInteger("x") val x = data.getInteger("x")
val z = data.getInteger("z") 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)) 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.OpenComputers
import li.cil.oc.Settings import li.cil.oc.Settings
import li.cil.oc.api 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.Arguments
import li.cil.oc.api.machine.Callback import li.cil.oc.api.machine.Callback
import li.cil.oc.api.machine.Context 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.network._
import li.cil.oc.api.prefab import li.cil.oc.api.prefab
import li.cil.oc.common.event.ChunkloaderUpgradeHandler import li.cil.oc.common.event.ChunkloaderUpgradeHandler
@ -44,8 +44,10 @@ class UpgradeChunkloader(val host: EnvironmentHost) extends prefab.ManagedEnviro
override def onConnect(node: Node) { override def onConnect(node: Node) {
super.onConnect(node) super.onConnect(node)
if (node == this.node) { if (node == this.node) {
ticket = ChunkloaderUpgradeHandler.restoredTickets.remove(node.address). if (ChunkloaderUpgradeHandler.restoredTickets.contains(node.address)) {
orElse(host match { 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 context: Context if context.isRunning => Option(ForgeChunkManager.requestTicket(OpenComputers, host.world, ForgeChunkManager.Type.NORMAL))
case _ => None case _ => None
}) })