diff --git a/src/main/scala/li/cil/oc/common/tileentity/traits/Environment.scala b/src/main/scala/li/cil/oc/common/tileentity/traits/Environment.scala index 3b900cbc6..61391c4bf 100644 --- a/src/main/scala/li/cil/oc/common/tileentity/traits/Environment.scala +++ b/src/main/scala/li/cil/oc/common/tileentity/traits/Environment.scala @@ -11,13 +11,15 @@ import net.minecraftforge.common.ForgeDirection import scala.math.ScalaNumber trait Environment extends TileEntity with network.Environment with driver.Container { + protected var isChangeScheduled = false + override def xPosition = x + 0.5 override def yPosition = y + 0.5 override def zPosition = z + 0.5 - override def markChanged() = onInventoryChanged() + override def markChanged() = if (canUpdate) isChangeScheduled = true else onInventoryChanged() protected def isConnected = node.address != null && node.network != null @@ -30,6 +32,13 @@ trait Environment extends TileEntity with network.Environment with driver.Contai } } + override def updateEntity() { + super.updateEntity() + if (isChangeScheduled) { + onInventoryChanged() + } + } + override protected def dispose() { super.dispose() if (isServer) { diff --git a/src/main/scala/li/cil/oc/server/component/machine/Machine.scala b/src/main/scala/li/cil/oc/server/component/machine/Machine.scala index 7a072cdbf..61a925dc8 100644 --- a/src/main/scala/li/cil/oc/server/component/machine/Machine.scala +++ b/src/main/scala/li/cil/oc/server/component/machine/Machine.scala @@ -491,7 +491,7 @@ class Machine(val owner: Owner, constructor: Constructor[_ <: Architecture]) ext } override def onDisconnect(node: Node) { - if (node == this.node) this.synchronized { + if (node == this.node) { close() tmp.foreach(_.node.remove()) }