mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-17 19:25:20 -04:00
Not all things must tick.
This commit is contained in:
parent
726aa36164
commit
ea37f4db67
@ -54,11 +54,7 @@ abstract class RedstoneAware extends SimpleBlock /* with IRedNetOmniNode TODO MF
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
world.getTileEntity(pos) match {
|
world.getTileEntity(pos) match {
|
||||||
case redstone: tileentity.traits.RedstoneAware =>
|
case redstone: tileentity.traits.RedstoneAware => redstone.checkRedstoneInputChanged()
|
||||||
if (redstone.canUpdate)
|
|
||||||
redstone.checkRedstoneInputChanged()
|
|
||||||
else
|
|
||||||
EnumFacing.values().foreach(redstone.updateRedstoneInput)
|
|
||||||
case _ => // Ignore.
|
case _ => // Ignore.
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ import net.minecraftforge.common.util.Constants.NBT
|
|||||||
|
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
class Adapter extends traits.Environment with traits.ComponentInventory with Analyzable with internal.Adapter {
|
class Adapter extends traits.Environment with traits.ComponentInventory with traits.Tickable with Analyzable with internal.Adapter {
|
||||||
val node = api.Network.newNode(this, Visibility.Network).create()
|
val node = api.Network.newNode(this, Visibility.Network).create()
|
||||||
|
|
||||||
private val blocks = Array.fill[Option[(ManagedEnvironment, api.driver.SidedBlock)]](6)(None)
|
private val blocks = Array.fill[Option[(ManagedEnvironment, api.driver.SidedBlock)]](6)(None)
|
||||||
@ -33,11 +33,9 @@ class Adapter extends traits.Environment with traits.ComponentInventory with Ana
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (updatingBlocks.nonEmpty) {
|
if (isServer && updatingBlocks.nonEmpty) {
|
||||||
for (block <- updatingBlocks) {
|
for (block <- updatingBlocks) {
|
||||||
block.update()
|
block.update()
|
||||||
}
|
}
|
||||||
|
@ -17,7 +17,7 @@ import net.minecraft.util.EnumFacing
|
|||||||
import net.minecraftforge.fml.relauncher.Side
|
import net.minecraftforge.fml.relauncher.Side
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly
|
import net.minecraftforge.fml.relauncher.SideOnly
|
||||||
|
|
||||||
class Assembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with SidedEnvironment with traits.StateAware {
|
class Assembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with SidedEnvironment with traits.StateAware with traits.Tickable {
|
||||||
val node = api.Network.newNode(this, Visibility.Network).
|
val node = api.Network.newNode(this, Visibility.Network).
|
||||||
withComponent("assembler").
|
withComponent("assembler").
|
||||||
withConnector(Settings.get.bufferConverter).
|
withConnector(Settings.get.bufferConverter).
|
||||||
@ -106,8 +106,6 @@ class Assembler extends traits.Environment with traits.PowerAcceptor with traits
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (output.isDefined && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
if (output.isDefined && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
||||||
|
@ -40,7 +40,5 @@ class Cable extends traits.Environment with traits.NotAnalyzable with traits.Imm
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override def getRenderBoundingBox = common.block.Cable.bounds(world, getPos).offset(x, y, z)
|
override def getRenderBoundingBox = common.block.Cable.bounds(world, getPos).offset(x, y, z)
|
||||||
}
|
}
|
||||||
|
@ -15,8 +15,6 @@ class Capacitor extends traits.Environment {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override def dispose() {
|
override def dispose() {
|
||||||
super.dispose()
|
super.dispose()
|
||||||
if (isServer) {
|
if (isServer) {
|
||||||
|
@ -42,8 +42,6 @@ class Case(var tier: Int) extends traits.PowerAcceptor with traits.Computer with
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
if (isServer && isCreative && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
if (isServer && isCreative && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
||||||
// Creative case, make it generate power.
|
// Creative case, make it generate power.
|
||||||
|
@ -26,7 +26,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
|
|||||||
import scala.collection.convert.WrapAsScala._
|
import scala.collection.convert.WrapAsScala._
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
class Charger extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with traits.ComponentInventory with Analyzable with traits.StateAware {
|
class Charger extends traits.Environment with traits.PowerAcceptor with traits.RedstoneAware with traits.Rotatable with traits.ComponentInventory with traits.Tickable with Analyzable with traits.StateAware {
|
||||||
val node = api.Network.newNode(this, Visibility.None).
|
val node = api.Network.newNode(this, Visibility.None).
|
||||||
withConnector(Settings.get.bufferConverter).
|
withConnector(Settings.get.bufferConverter).
|
||||||
create()
|
create()
|
||||||
@ -64,8 +64,6 @@ class Charger extends traits.Environment with traits.PowerAcceptor with traits.R
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = true
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
|
|||||||
|
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
class Disassembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.StateAware with traits.PlayerInputAware {
|
class Disassembler extends traits.Environment with traits.PowerAcceptor with traits.Inventory with traits.StateAware with traits.PlayerInputAware with traits.Tickable {
|
||||||
val node = api.Network.newNode(this, Visibility.None).
|
val node = api.Network.newNode(this, Visibility.None).
|
||||||
withConnector(Settings.get.bufferConverter).
|
withConnector(Settings.get.bufferConverter).
|
||||||
create()
|
create()
|
||||||
@ -61,11 +61,9 @@ class Disassembler extends traits.Environment with traits.PowerAcceptor with tra
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
if (isServer && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
||||||
if (queue.isEmpty) {
|
if (queue.isEmpty) {
|
||||||
val instant = disassembleNextInstantly // Is reset via decrStackSize
|
val instant = disassembleNextInstantly // Is reset via decrStackSize
|
||||||
disassemble(decrStackSize(0, 1), instant)
|
disassemble(decrStackSize(0, 1), instant)
|
||||||
|
@ -102,8 +102,6 @@ class DiskDrive extends traits.Environment with traits.ComponentInventory with t
|
|||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
// TileEntity
|
// TileEntity
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT) override
|
@SideOnly(Side.CLIENT) override
|
||||||
def readFromNBTForClient(nbt: NBTTagCompound) {
|
def readFromNBTForClient(nbt: NBTTagCompound) {
|
||||||
super.readFromNBTForClient(nbt)
|
super.readFromNBTForClient(nbt)
|
||||||
|
@ -8,8 +8,6 @@ class Geolyzer extends traits.Environment {
|
|||||||
|
|
||||||
def node = geolyzer.node
|
def node = geolyzer.node
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
||||||
super.readFromNBTForServer(nbt)
|
super.readFromNBTForServer(nbt)
|
||||||
geolyzer.load(nbt)
|
geolyzer.load(nbt)
|
||||||
|
@ -20,7 +20,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
|
|||||||
|
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
class Hologram(var tier: Int) extends traits.Environment with SidedEnvironment with Analyzable with traits.Rotatable {
|
class Hologram(var tier: Int) extends traits.Environment with SidedEnvironment with Analyzable with traits.Rotatable with traits.Tickable {
|
||||||
def this() = this(0)
|
def this() = this(0)
|
||||||
|
|
||||||
val node = api.Network.newNode(this, Visibility.Network).
|
val node = api.Network.newNode(this, Visibility.Network).
|
||||||
@ -367,8 +367,6 @@ class Hologram(var tier: Int) extends traits.Environment with SidedEnvironment w
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (isServer) {
|
if (isServer) {
|
||||||
|
@ -37,8 +37,6 @@ class Keyboard extends traits.Environment with traits.Rotatable with traits.Immi
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
||||||
super.readFromNBTForServer(nbt)
|
super.readFromNBTForServer(nbt)
|
||||||
if (isServer) {
|
if (isServer) {
|
||||||
|
@ -111,13 +111,11 @@ class Microcontroller extends traits.PowerAcceptor with traits.Hub with traits.C
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
|
|
||||||
// Pump energy into the internal network.
|
// Pump energy into the internal network.
|
||||||
if (world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
if (isServer && world.getTotalWorldTime % Settings.get.tickFrequency == 0) {
|
||||||
for (side <- EnumFacing.values if side != facing) {
|
for (side <- EnumFacing.values if side != facing) {
|
||||||
sidedNode(side) match {
|
sidedNode(side) match {
|
||||||
case connector: Connector =>
|
case connector: Connector =>
|
||||||
|
@ -15,7 +15,7 @@ import net.minecraft.util.Vec3
|
|||||||
import scala.collection.convert.WrapAsScala._
|
import scala.collection.convert.WrapAsScala._
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
class MotionSensor extends traits.Environment {
|
class MotionSensor extends traits.Environment with traits.Tickable {
|
||||||
val node = api.Network.newNode(this, Visibility.Network).
|
val node = api.Network.newNode(this, Visibility.Network).
|
||||||
withComponent("motion_sensor").
|
withComponent("motion_sensor").
|
||||||
withConnector().
|
withConnector().
|
||||||
@ -29,16 +29,13 @@ class MotionSensor extends traits.Environment {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (world.getTotalWorldTime % 10 == 0) {
|
if (isServer && world.getTotalWorldTime % 10 == 0) {
|
||||||
// Get a list of all living entities we could possibly detect, using a rough
|
// Get a list of all living entities we could possibly detect, using a rough
|
||||||
// bounding box check, then refining it using the actual distance and an
|
// bounding box check, then refining it using the actual distance and an
|
||||||
// actual visibility check.
|
// actual visibility check.
|
||||||
val entities = world.getEntitiesWithinAABB(classOf[EntityLivingBase], sensorBounds)
|
val entities = world.getEntitiesWithinAABB(classOf[EntityLivingBase], sensorBounds)
|
||||||
.map(_.asInstanceOf[EntityLivingBase])
|
|
||||||
.filter(entity => entity.isEntityAlive && isInRange(entity) && isVisible(entity))
|
.filter(entity => entity.isEntityAlive && isInRange(entity) && isVisible(entity))
|
||||||
.toSet
|
.toSet
|
||||||
// Get rid of all tracked entities that are no longer visible.
|
// Get rid of all tracked entities that are no longer visible.
|
||||||
|
@ -54,8 +54,6 @@ class NetSplitter extends traits.Environment with traits.RedstoneAware with api.
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override protected def initialize(): Unit = {
|
override protected def initialize(): Unit = {
|
||||||
super.initialize()
|
super.initialize()
|
||||||
EventHandler.scheduleServer(this)
|
EventHandler.scheduleServer(this)
|
||||||
|
@ -19,5 +19,8 @@ class PowerConverter extends traits.PowerAcceptor with traits.Environment with t
|
|||||||
|
|
||||||
override def energyThroughput = Settings.get.powerConverterRate
|
override def energyThroughput = Settings.get.powerConverterRate
|
||||||
|
|
||||||
override def canUpdate = isServer
|
override def updateEntity(): Unit = {
|
||||||
|
super[PowerAcceptor].updateEntity()
|
||||||
|
super[Environment].updateEntity()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,6 @@ class PowerDistributor extends traits.Environment with traits.PowerBalancer with
|
|||||||
|
|
||||||
override protected def isConnected = nodes.exists(node => node.address != null && node.network != null)
|
override protected def isConnected = nodes.exists(node => node.address != null && node.network != null)
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -139,8 +139,6 @@ class Print(val canToggle: Option[() => Boolean], val scheduleUpdate: Option[Int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override protected def onRedstoneInputChanged(side: EnumFacing, oldMaxValue: Int, newMaxValue: Int): Unit = {
|
override protected def onRedstoneInputChanged(side: EnumFacing, oldMaxValue: Int, newMaxValue: Int): Unit = {
|
||||||
super.onRedstoneInputChanged(side, oldMaxValue, newMaxValue)
|
super.onRedstoneInputChanged(side, oldMaxValue, newMaxValue)
|
||||||
val newState = newMaxValue > 0
|
val newState = newMaxValue > 0
|
||||||
|
@ -19,7 +19,7 @@ import net.minecraft.util.EnumFacing
|
|||||||
import net.minecraftforge.fml.relauncher.Side
|
import net.minecraftforge.fml.relauncher.Side
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly
|
import net.minecraftforge.fml.relauncher.SideOnly
|
||||||
|
|
||||||
class Printer extends traits.Environment with traits.Inventory with traits.Rotatable with SidedEnvironment with traits.StateAware with ISidedInventory {
|
class Printer extends traits.Environment with traits.Inventory with traits.Rotatable with SidedEnvironment with traits.StateAware with traits.Tickable with ISidedInventory {
|
||||||
val node = api.Network.newNode(this, Visibility.Network).
|
val node = api.Network.newNode(this, Visibility.Network).
|
||||||
withComponent("printer3d").
|
withComponent("printer3d").
|
||||||
withConnector(Settings.get.bufferConverter).
|
withConnector(Settings.get.bufferConverter).
|
||||||
@ -209,11 +209,13 @@ class Printer extends traits.Environment with traits.Inventory with traits.Rotat
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = isServer
|
override def updateEntity(): Unit = {
|
||||||
|
|
||||||
override def updateEntity() {
|
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
|
|
||||||
|
if (isClient) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
def canMergeOutput = {
|
def canMergeOutput = {
|
||||||
val presentStack = getStackInSlot(slotOutput)
|
val presentStack = getStackInSlot(slotOutput)
|
||||||
val outputStack = data.createItemStack()
|
val outputStack = data.createItemStack()
|
||||||
|
@ -36,8 +36,6 @@ class Raid extends traits.Environment with traits.Inventory with traits.Rotatabl
|
|||||||
|
|
||||||
override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = Array(filesystem.map(_.node).orNull)
|
override def onAnalyze(player: EntityPlayer, side: EnumFacing, hitX: Float, hitY: Float, hitZ: Float) = Array(filesystem.map(_.node).orNull)
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def getSizeInventory = 3
|
override def getSizeInventory = 3
|
||||||
|
@ -9,7 +9,7 @@ import li.cil.oc.util.ExtendedNBT._
|
|||||||
import net.minecraft.nbt.NBTTagCompound
|
import net.minecraft.nbt.NBTTagCompound
|
||||||
import net.minecraft.util.EnumFacing
|
import net.minecraft.util.EnumFacing
|
||||||
|
|
||||||
class Redstone extends traits.Environment with traits.BundledRedstoneAware {
|
class Redstone extends traits.Environment with traits.BundledRedstoneAware with traits.Tickable {
|
||||||
val instance =
|
val instance =
|
||||||
if (BundledRedstone.isAvailable)
|
if (BundledRedstone.isAvailable)
|
||||||
new component.Redstone.Bundled(this)
|
new component.Redstone.Bundled(this)
|
||||||
@ -24,10 +24,12 @@ class Redstone extends traits.Environment with traits.BundledRedstoneAware {
|
|||||||
}
|
}
|
||||||
else null
|
else null
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
|
override def updateEntity(): Unit = {
|
||||||
|
super[Environment].updateEntity()
|
||||||
|
}
|
||||||
|
|
||||||
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
||||||
super.readFromNBTForServer(nbt)
|
super.readFromNBTForServer(nbt)
|
||||||
instance.load(nbt.getCompoundTag(Settings.namespace + "redstone"))
|
instance.load(nbt.getCompoundTag(Settings.namespace + "redstone"))
|
||||||
|
@ -50,8 +50,6 @@ class Relay extends traits.SwitchLike with traits.ComponentInventory with traits
|
|||||||
withComponent("relay").
|
withComponent("relay").
|
||||||
create())
|
create())
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -178,8 +178,6 @@ class Screen(var tier: Int) extends traits.TextBuffer with SidedEnvironment with
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
override def canUpdate = true
|
|
||||||
|
|
||||||
override def updateEntity() {
|
override def updateEntity() {
|
||||||
super.updateEntity()
|
super.updateEntity()
|
||||||
if (shouldCheckForMultiBlock && ((isClient && isClientReadyForMultiBlockCheck) || (isServer && isConnected))) {
|
if (shouldCheckForMultiBlock && ((isClient && isClientReadyForMultiBlockCheck) || (isServer && isConnected))) {
|
||||||
|
@ -17,8 +17,6 @@ class Switch extends traits.SwitchLike with traits.NotAnalyzable with traits.Com
|
|||||||
|
|
||||||
override def isLinkedEnabled = false
|
override def isLinkedEnabled = false
|
||||||
|
|
||||||
override def canUpdate = isServer
|
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
protected def queueMessage(source: String, destination: String, port: Int, answerPort: Int, args: Array[AnyRef]) {
|
protected def queueMessage(source: String, destination: String, port: Int, answerPort: Int, args: Array[AnyRef]) {
|
||||||
|
@ -11,8 +11,6 @@ class Transposer extends traits.Environment {
|
|||||||
// Used on client side to check whether to render activity indicators.
|
// Used on client side to check whether to render activity indicators.
|
||||||
var lastOperation = 0L
|
var lastOperation = 0L
|
||||||
|
|
||||||
override def canUpdate = false
|
|
||||||
|
|
||||||
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
override def readFromNBTForServer(nbt: NBTTagCompound) {
|
||||||
super.readFromNBTForServer(nbt)
|
super.readFromNBTForServer(nbt)
|
||||||
transposer.load(nbt)
|
transposer.load(nbt)
|
||||||
|
@ -13,7 +13,7 @@ import net.minecraft.util.EnumParticleTypes
|
|||||||
import net.minecraftforge.fml.relauncher.Side
|
import net.minecraftforge.fml.relauncher.Side
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly
|
import net.minecraftforge.fml.relauncher.SideOnly
|
||||||
|
|
||||||
class Waypoint extends traits.Environment with traits.Rotatable with traits.RedstoneAware {
|
class Waypoint extends traits.Environment with traits.Rotatable with traits.RedstoneAware with traits.Tickable {
|
||||||
val node = api.Network.newNode(this, Visibility.Network).
|
val node = api.Network.newNode(this, Visibility.Network).
|
||||||
withComponent("waypoint").
|
withComponent("waypoint").
|
||||||
create()
|
create()
|
||||||
|
@ -24,7 +24,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
|
|||||||
import scala.collection.convert.WrapAsJava._
|
import scala.collection.convert.WrapAsJava._
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
trait Computer extends Environment with ComponentInventory with Rotatable with BundledRedstoneAware with api.network.Analyzable with api.machine.MachineHost with StateAware {
|
trait Computer extends Environment with ComponentInventory with Rotatable with BundledRedstoneAware with api.network.Analyzable with api.machine.MachineHost with StateAware with Tickable {
|
||||||
private lazy val _machine = if (isServer) api.Machine.create(this) else null
|
private lazy val _machine = if (isServer) api.Machine.create(this) else null
|
||||||
|
|
||||||
def machine = _machine
|
def machine = _machine
|
||||||
|
@ -25,7 +25,7 @@ trait Environment extends TileEntity with network.Environment with network.Envir
|
|||||||
|
|
||||||
override def zPosition = z + 0.5
|
override def zPosition = z + 0.5
|
||||||
|
|
||||||
override def markChanged() = if (canUpdate) isChangeScheduled = true else world.markChunkDirty(getPos, this)
|
override def markChanged() = if (this.isInstanceOf[Tickable]) isChangeScheduled = true else world.markChunkDirty(getPos, this)
|
||||||
|
|
||||||
protected def isConnected = node.address != null && node.network != null
|
protected def isConnected = node.address != null && node.network != null
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ import net.minecraftforge.fml.relauncher.SideOnly
|
|||||||
|
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
|
|
||||||
trait Hub extends traits.Environment with SidedEnvironment {
|
trait Hub extends traits.Environment with SidedEnvironment with Tickable {
|
||||||
override def node: Node = null
|
override def node: Node = null
|
||||||
|
|
||||||
override protected def isConnected = plugs.exists(plug => plug.node.address != null && plug.node.network != null)
|
override protected def isConnected = plugs.exists(plug => plug.node.address != null && plug.node.network != null)
|
||||||
|
@ -5,7 +5,7 @@ import li.cil.oc.api.network.Connector
|
|||||||
import li.cil.oc.api.network.SidedEnvironment
|
import li.cil.oc.api.network.SidedEnvironment
|
||||||
import net.minecraft.util.EnumFacing
|
import net.minecraft.util.EnumFacing
|
||||||
|
|
||||||
trait PowerBalancer extends PowerInformation with SidedEnvironment {
|
trait PowerBalancer extends PowerInformation with SidedEnvironment with Tickable {
|
||||||
var globalBuffer, globalBufferSize = 0.0
|
var globalBuffer, globalBufferSize = 0.0
|
||||||
|
|
||||||
protected def isConnected: Boolean
|
protected def isConnected: Boolean
|
||||||
|
@ -69,7 +69,11 @@ trait RedstoneAware extends RotationAware /* with IConnectable with IRedstoneEmi
|
|||||||
}
|
}
|
||||||
|
|
||||||
def checkRedstoneInputChanged() {
|
def checkRedstoneInputChanged() {
|
||||||
shouldUpdateInput = isServer
|
if (this.isInstanceOf[Tickable]) {
|
||||||
|
shouldUpdateInput = isServer
|
||||||
|
} else {
|
||||||
|
EnumFacing.values().foreach(updateRedstoneInput)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
@ -86,7 +90,7 @@ trait RedstoneAware extends RotationAware /* with IConnectable with IRedstoneEmi
|
|||||||
|
|
||||||
override def validate(): Unit = {
|
override def validate(): Unit = {
|
||||||
super.validate()
|
super.validate()
|
||||||
if (!canUpdate) {
|
if (!this.isInstanceOf[Tickable]) {
|
||||||
EventHandler.scheduleServer(() => EnumFacing.values().foreach(updateRedstoneInput))
|
EventHandler.scheduleServer(() => EnumFacing.values().foreach(updateRedstoneInput))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound
|
|||||||
import net.minecraftforge.fml.relauncher.Side
|
import net.minecraftforge.fml.relauncher.Side
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly
|
import net.minecraftforge.fml.relauncher.SideOnly
|
||||||
|
|
||||||
trait TextBuffer extends Environment {
|
trait TextBuffer extends Environment with Tickable {
|
||||||
lazy val buffer = {
|
lazy val buffer = {
|
||||||
val screenItem = api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1)
|
val screenItem = api.Items.get(Constants.BlockName.ScreenTier1).createItemStack(1)
|
||||||
val buffer = api.Driver.driverFor(screenItem, getClass).createEnvironment(screenItem, this).asInstanceOf[api.internal.TextBuffer]
|
val buffer = api.Driver.driverFor(screenItem, getClass).createEnvironment(screenItem, this).asInstanceOf[api.internal.TextBuffer]
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
package li.cil.oc.common.tileentity.traits
|
||||||
|
|
||||||
|
import net.minecraft.util.ITickable
|
||||||
|
|
||||||
|
trait Tickable extends ITickable {
|
||||||
|
override def update(): Unit = updateEntity()
|
||||||
|
|
||||||
|
def updateEntity(): Unit = {}
|
||||||
|
}
|
@ -16,8 +16,7 @@ import net.minecraft.world.World
|
|||||||
import net.minecraftforge.fml.relauncher.Side
|
import net.minecraftforge.fml.relauncher.Side
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly
|
import net.minecraftforge.fml.relauncher.SideOnly
|
||||||
|
|
||||||
// TODO only implement ticking interface where needed.
|
trait TileEntity extends net.minecraft.tileentity.TileEntity {
|
||||||
trait TileEntity extends net.minecraft.tileentity.TileEntity with ITickable {
|
|
||||||
def world = getWorld
|
def world = getWorld
|
||||||
|
|
||||||
def x = getPos.getX
|
def x = getPos.getX
|
||||||
@ -34,12 +33,6 @@ trait TileEntity extends net.minecraft.tileentity.TileEntity with ITickable {
|
|||||||
|
|
||||||
// ----------------------------------------------------------------------- //
|
// ----------------------------------------------------------------------- //
|
||||||
|
|
||||||
def canUpdate = true
|
|
||||||
|
|
||||||
override def update(): Unit = {
|
|
||||||
if (canUpdate) updateEntity()
|
|
||||||
}
|
|
||||||
|
|
||||||
def updateEntity() {
|
def updateEntity() {
|
||||||
if (Settings.get.periodicallyForceLightUpdate && world.getTotalWorldTime % 40 == 0 && getBlockType.getLightValue(world, getPos) > 0) {
|
if (Settings.get.periodicallyForceLightUpdate && world.getTotalWorldTime % 40 == 0 && getBlockType.getLightValue(world, getPos) > 0) {
|
||||||
world.markBlockForUpdate(getPos)
|
world.markBlockForUpdate(getPos)
|
||||||
|
@ -5,6 +5,7 @@ import li.cil.oc.OpenComputers
|
|||||||
import li.cil.oc.Settings
|
import li.cil.oc.Settings
|
||||||
import li.cil.oc.common.EventHandler
|
import li.cil.oc.common.EventHandler
|
||||||
import li.cil.oc.common.asm.Injectable
|
import li.cil.oc.common.asm.Injectable
|
||||||
|
import li.cil.oc.common.tileentity.traits
|
||||||
import li.cil.oc.integration.Mods
|
import li.cil.oc.integration.Mods
|
||||||
import li.cil.oc.integration.util.Power
|
import li.cil.oc.integration.util.Power
|
||||||
import net.minecraft.nbt.NBTTagCompound
|
import net.minecraft.nbt.NBTTagCompound
|
||||||
@ -14,7 +15,7 @@ import net.minecraftforge.fml.common.Optional
|
|||||||
import net.minecraftforge.fml.common.eventhandler.Event
|
import net.minecraftforge.fml.common.eventhandler.Event
|
||||||
|
|
||||||
@Injectable.Interface(value = "ic2.api.energy.tile.IEnergySink", modid = Mods.IDs.IndustrialCraft2)
|
@Injectable.Interface(value = "ic2.api.energy.tile.IEnergySink", modid = Mods.IDs.IndustrialCraft2)
|
||||||
trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common {
|
trait IndustrialCraft2Experimental extends Common with IndustrialCraft2Common with traits.Tickable {
|
||||||
private var conversionBuffer = 0.0
|
private var conversionBuffer = 0.0
|
||||||
|
|
||||||
private lazy val useIndustrialCraft2Power = isServer && Mods.IndustrialCraft2.isAvailable
|
private lazy val useIndustrialCraft2Power = isServer && Mods.IndustrialCraft2.isAvailable
|
||||||
|
@ -440,6 +440,7 @@ class Machine(val host: MachineHost) extends prefab.ManagedEnvironment with mach
|
|||||||
// Component overflow check, crash if too many components are connected, to
|
// Component overflow check, crash if too many components are connected, to
|
||||||
// avoid confusion on the user's side due to components not showing up.
|
// avoid confusion on the user's side due to components not showing up.
|
||||||
if (componentCount > maxComponents) {
|
if (componentCount > maxComponents) {
|
||||||
|
beep("-..")
|
||||||
crash("gui.Error.ComponentOverflow")
|
crash("gui.Error.ComponentOverflow")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user