| package li.cil.oc.common.tileentity |
| |
| import li.cil.oc.Settings |
| import li.cil.oc.api.network.Visibility |
| import li.cil.oc.common.tileentity.traits.{BundledRedstoneAware, Environment} |
| import li.cil.oc.server.component |
| import li.cil.oc.util.ExtendedNBT._ |
| import li.cil.oc.util.mods.BundledRedstone |
| import net.minecraft.nbt.NBTTagCompound |
| import net.minecraftforge.common.util.ForgeDirection |
| |
| class Redstone extends Environment with BundledRedstoneAware { |
| val instance = if (BundledRedstone.isAvailable) new component.Redstone[BundledRedstoneAware](this) with component.RedstoneBundled else new component.Redstone(this) |
| val node = instance.node |
| if (node != null) { |
| node.setVisibility(Visibility.Network) |
| _isOutputEnabled = true |
| } |
| |
| override def canUpdate = isServer |
| |
| // ----------------------------------------------------------------------- // |
| |
| override def readFromNBT(nbt: NBTTagCompound) { |
| super.readFromNBT(nbt) |
| instance.load(nbt.getCompoundTag(Settings.namespace + "redstone")) |
| } |
| |
| override def writeToNBT(nbt: NBTTagCompound) { |
| super.writeToNBT(nbt) |
| nbt.setNewCompoundTag(Settings.namespace + "redstone", instance.save) |
| } |
| |
| // ----------------------------------------------------------------------- // |
| |
| override protected def onRedstoneInputChanged(side: ForgeDirection) { |
| super.onRedstoneInputChanged(side) |
| node.sendToReachable("computer.signal", "redstone_changed", Int.box(side.ordinal())) |
| } |
| } |