mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-14 01:39:36 -04:00
Merge branch 'master-MC1.10' into master-MC1.11
# Conflicts: # src/main/resources/assets/opencomputers/lang/en_US.lang # src/main/scala/li/cil/oc/Localization.scala # src/main/scala/li/cil/oc/client/gui/Drive.scala # src/main/scala/li/cil/oc/server/PacketHandler.scala # src/main/scala/li/cil/oc/server/component/Drive.scala
This commit is contained in:
commit
9e910060e2
@ -201,6 +201,8 @@ oc:gui.Chat.WarningRecipes=There were errors loading one or more recipes. Some i
|
|||||||
oc:gui.Chat.WarningSimpleComponent=An addon (yours?) using the §aSimpleComponent§f interface did §esomething wrong§f. Component logic could not be injected. Please check your log file for more information.
|
oc:gui.Chat.WarningSimpleComponent=An addon (yours?) using the §aSimpleComponent§f interface did §esomething wrong§f. Component logic could not be injected. Please check your log file for more information.
|
||||||
oc:gui.Drive.Managed=Managed
|
oc:gui.Drive.Managed=Managed
|
||||||
oc:gui.Drive.Unmanaged=Unmanaged
|
oc:gui.Drive.Unmanaged=Unmanaged
|
||||||
|
oc:gui.Drive.ReadOnlyLock=Lock
|
||||||
|
oc:gui.Drive.ReadOnlyLockWarning=§lRead Only§r lock. Cannot be removed unless the drive is wiped.
|
||||||
oc:gui.Drive.Warning=§lWarning§r: switching modes will result in a loss of all data currently stored on the disk!
|
oc:gui.Drive.Warning=§lWarning§r: switching modes will result in a loss of all data currently stored on the disk!
|
||||||
oc:gui.Error.ComponentOverflow=Too many components connected to the computer.
|
oc:gui.Error.ComponentOverflow=Too many components connected to the computer.
|
||||||
oc:gui.Error.InternalError=Internal error, please see the log file. This is probably a bug.
|
oc:gui.Error.InternalError=Internal error, please see the log file. This is probably a bug.
|
||||||
@ -283,6 +285,7 @@ oc:tooltip.diskdrive.CC=ComputerCraft floppies are §asupported§7.
|
|||||||
oc:tooltip.diskdrive=Allows reading and writing floppies. Can be installed in robots to allow inserting floppies later on.
|
oc:tooltip.diskdrive=Allows reading and writing floppies. Can be installed in robots to allow inserting floppies later on.
|
||||||
oc:tooltip.diskdrivemountable=Provides the same functionality as a normal disk drive, but must be installed in a rack.
|
oc:tooltip.diskdrivemountable=Provides the same functionality as a normal disk drive, but must be installed in a rack.
|
||||||
oc:tooltip.diskusage=Disk usage: %s/%s Byte
|
oc:tooltip.diskusage=Disk usage: %s/%s Byte
|
||||||
|
oc:tooltip.disklocked=Locked by: %s
|
||||||
oc:tooltip.diskmodemanaged=Mode: Managed
|
oc:tooltip.diskmodemanaged=Mode: Managed
|
||||||
oc:tooltip.diskmodeunmanaged=Mode: Unmanaged
|
oc:tooltip.diskmodeunmanaged=Mode: Unmanaged
|
||||||
oc:tooltip.drone=Drones are light-weight, fast reconnaissance units with limited cargo space.
|
oc:tooltip.drone=Drones are light-weight, fast reconnaissance units with limited cargo space.
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 326 B After Width: | Height: | Size: 764 B |
@ -117,6 +117,10 @@ object Localization {
|
|||||||
def Unmanaged: String = localizeImmediately("gui.Drive.Unmanaged")
|
def Unmanaged: String = localizeImmediately("gui.Drive.Unmanaged")
|
||||||
|
|
||||||
def Warning: String = localizeImmediately("gui.Drive.Warning")
|
def Warning: String = localizeImmediately("gui.Drive.Warning")
|
||||||
|
|
||||||
|
def ReadOnlyLock: String = localizeImmediately("gui.Drive.ReadOnlyLock")
|
||||||
|
|
||||||
|
def LockWarning: String = localizeImmediately("gui.Drive.ReadOnlyLockWarning")
|
||||||
}
|
}
|
||||||
|
|
||||||
object Raid {
|
object Raid {
|
||||||
@ -162,6 +166,8 @@ object Localization {
|
|||||||
|
|
||||||
def Materials: String = localizeImmediately("tooltip.materials")
|
def Materials: String = localizeImmediately("tooltip.materials")
|
||||||
|
|
||||||
|
def DiskLock(lockInfo: String): String = if (lockInfo.isEmpty) "" else localizeImmediately("tooltip.disklocked", lockInfo)
|
||||||
|
|
||||||
def Tier(tier: Int): String = localizeImmediately("tooltip.tier", tier.toString)
|
def Tier(tier: Int): String = localizeImmediately("tooltip.tier", tier.toString)
|
||||||
|
|
||||||
def PrintBeaconBase: String = localizeImmediately("tooltip.print.BeaconBase")
|
def PrintBeaconBase: String = localizeImmediately("tooltip.print.BeaconBase")
|
||||||
|
@ -35,6 +35,12 @@ object PacketSender {
|
|||||||
pb.sendToServer()
|
pb.sendToServer()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def sendDriveLock(): Unit = {
|
||||||
|
val pb = new SimplePacketBuilder(PacketType.DriveLock)
|
||||||
|
|
||||||
|
pb.sendToServer()
|
||||||
|
}
|
||||||
|
|
||||||
def sendDronePower(e: Drone, power: Boolean) {
|
def sendDronePower(e: Drone, power: Boolean) {
|
||||||
val pb = new SimplePacketBuilder(PacketType.DronePower)
|
val pb = new SimplePacketBuilder(PacketType.DronePower)
|
||||||
|
|
||||||
|
@ -10,19 +10,21 @@ import net.minecraft.entity.player.InventoryPlayer
|
|||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
|
|
||||||
class Drive(playerInventory: InventoryPlayer, val driveStack: () => ItemStack) extends GuiScreen with traits.Window {
|
class Drive(playerInventory: InventoryPlayer, val driveStack: () => ItemStack) extends GuiScreen with traits.Window {
|
||||||
override val windowHeight = 85
|
override val windowHeight = 120
|
||||||
|
|
||||||
override def backgroundImage = Textures.GUI.Drive
|
override def backgroundImage = Textures.GUI.Drive
|
||||||
|
|
||||||
protected var managedButton: ImageButton = _
|
protected var managedButton: ImageButton = _
|
||||||
protected var unmanagedButton: ImageButton = _
|
protected var unmanagedButton: ImageButton = _
|
||||||
|
protected var lockedButton: ImageButton = _
|
||||||
|
|
||||||
protected override def actionPerformed(button: GuiButton) {
|
protected override def actionPerformed(button: GuiButton) {
|
||||||
if (button.id == 0) {
|
if (button.id == 0) {
|
||||||
ClientPacketSender.sendDriveMode(false)
|
ClientPacketSender.sendDriveMode(false)
|
||||||
}
|
} else if (button.id == 1) {
|
||||||
if (button.id == 1) {
|
|
||||||
ClientPacketSender.sendDriveMode(true)
|
ClientPacketSender.sendDriveMode(true)
|
||||||
|
} else if (button.id == 2) {
|
||||||
|
ClientPacketSender.sendDriveLock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -30,18 +32,24 @@ class Drive(playerInventory: InventoryPlayer, val driveStack: () => ItemStack) e
|
|||||||
super.initGui()
|
super.initGui()
|
||||||
managedButton = new ImageButton(0, guiLeft + 11, guiTop + 11, 74, 18, Textures.GUI.ButtonDriveMode, text = Localization.Drive.Managed, textColor = 0x608060, canToggle = true)
|
managedButton = new ImageButton(0, guiLeft + 11, guiTop + 11, 74, 18, Textures.GUI.ButtonDriveMode, text = Localization.Drive.Managed, textColor = 0x608060, canToggle = true)
|
||||||
unmanagedButton = new ImageButton(1, guiLeft + 91, guiTop + 11, 74, 18, Textures.GUI.ButtonDriveMode, text = Localization.Drive.Unmanaged, textColor = 0x608060, canToggle = true)
|
unmanagedButton = new ImageButton(1, guiLeft + 91, guiTop + 11, 74, 18, Textures.GUI.ButtonDriveMode, text = Localization.Drive.Unmanaged, textColor = 0x608060, canToggle = true)
|
||||||
|
lockedButton = new ImageButton(2, guiLeft + 11, guiTop + windowHeight - 42, 44, 18, Textures.GUI.ButtonDriveMode, text = Localization.Drive.ReadOnlyLock, textColor = 0x608060, canToggle = true)
|
||||||
add(buttonList, managedButton)
|
add(buttonList, managedButton)
|
||||||
add(buttonList, unmanagedButton)
|
add(buttonList, unmanagedButton)
|
||||||
|
add(buttonList, lockedButton)
|
||||||
}
|
}
|
||||||
|
|
||||||
override def updateScreen(): Unit = {
|
override def updateScreen(): Unit = {
|
||||||
unmanagedButton.toggled = new DriveData(driveStack()).isUnmanaged
|
val data = new DriveData(driveStack())
|
||||||
|
unmanagedButton.toggled = data.isUnmanaged
|
||||||
managedButton.toggled = !unmanagedButton.toggled
|
managedButton.toggled = !unmanagedButton.toggled
|
||||||
|
lockedButton.toggled = data.isLocked
|
||||||
|
lockedButton.enabled = !data.isLocked
|
||||||
super.updateScreen()
|
super.updateScreen()
|
||||||
}
|
}
|
||||||
|
|
||||||
override def drawScreen(mouseX: Int, mouseY: Int, dt: Float): Unit = {
|
override def drawScreen(mouseX: Int, mouseY: Int, dt: Float): Unit = {
|
||||||
super.drawScreen(mouseX, mouseY, dt)
|
super.drawScreen(mouseX, mouseY, dt)
|
||||||
fontRenderer.drawSplitString(Localization.Drive.Warning, guiLeft + 7, guiTop + 37, xSize - 16, 0x404040)
|
fontRenderer.drawSplitString(Localization.Drive.Warning, guiLeft + 11, guiTop + 37, xSize - 20, 0x404040)
|
||||||
|
fontRenderer.drawSplitString(Localization.Drive.LockWarning, guiLeft + 61, guiTop + windowHeight - 48, xSize - 68, 0x404040)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ object PacketType extends Enumeration {
|
|||||||
// Client -> Server
|
// Client -> Server
|
||||||
ComputerPower,
|
ComputerPower,
|
||||||
CopyToAnalyzer,
|
CopyToAnalyzer,
|
||||||
|
DriveLock,
|
||||||
DriveMode,
|
DriveMode,
|
||||||
DronePower,
|
DronePower,
|
||||||
KeyDown,
|
KeyDown,
|
||||||
|
@ -11,14 +11,24 @@ class DriveData extends ItemData(null) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
var isUnmanaged = false
|
var isUnmanaged = false
|
||||||
|
var lockInfo: String = ""
|
||||||
|
|
||||||
|
def isLocked: Boolean = {
|
||||||
|
lockInfo != null && !lockInfo.isEmpty
|
||||||
|
}
|
||||||
|
|
||||||
private final val UnmanagedTag = Settings.namespace + "unmanaged"
|
private final val UnmanagedTag = Settings.namespace + "unmanaged"
|
||||||
|
private val LockTag = Settings.namespace + "lock"
|
||||||
|
|
||||||
override def load(nbt: NBTTagCompound) {
|
override def load(nbt: NBTTagCompound) {
|
||||||
isUnmanaged = nbt.getBoolean(UnmanagedTag)
|
isUnmanaged = nbt.getBoolean(UnmanagedTag)
|
||||||
|
lockInfo = if (nbt.hasKey(LockTag)) {
|
||||||
|
nbt.getString(LockTag)
|
||||||
|
} else ""
|
||||||
}
|
}
|
||||||
|
|
||||||
override def save(nbt: NBTTagCompound) {
|
override def save(nbt: NBTTagCompound) {
|
||||||
nbt.setBoolean(UnmanagedTag, isUnmanaged)
|
nbt.setBoolean(UnmanagedTag, isUnmanaged)
|
||||||
|
nbt.setString(LockTag, lockInfo)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import li.cil.oc.Localization
|
|||||||
import li.cil.oc.OpenComputers
|
import li.cil.oc.OpenComputers
|
||||||
import li.cil.oc.Settings
|
import li.cil.oc.Settings
|
||||||
import li.cil.oc.common.GuiType
|
import li.cil.oc.common.GuiType
|
||||||
|
import li.cil.oc.common.item.data.DriveData
|
||||||
import net.minecraft.entity.player.EntityPlayer
|
import net.minecraft.entity.player.EntityPlayer
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.util.ActionResult
|
import net.minecraft.util.ActionResult
|
||||||
@ -34,7 +35,9 @@ trait FileSystemLike extends Delegate {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
tooltip.add(Localization.Tooltip.DiskMode(nbt.getBoolean(Settings.namespace + "unmanaged")))
|
val data = new DriveData(stack)
|
||||||
|
tooltip.add(Localization.Tooltip.DiskMode(data.isUnmanaged))
|
||||||
|
tooltip.add(Localization.Tooltip.DiskLock(data.lockInfo))
|
||||||
}
|
}
|
||||||
super.tooltipLines(stack, player, tooltip, advanced)
|
super.tooltipLines(stack, player, tooltip, advanced)
|
||||||
}
|
}
|
||||||
|
@ -72,10 +72,13 @@ object DriverFileSystem extends Item {
|
|||||||
val sound = Settings.resourceDomain + ":" + (if (isFloppy) "floppy_access" else "hdd_access")
|
val sound = Settings.resourceDomain + ":" + (if (isFloppy) "floppy_access" else "hdd_access")
|
||||||
val drive = new DriveData(stack)
|
val drive = new DriveData(stack)
|
||||||
val environment = if (drive.isUnmanaged) {
|
val environment = if (drive.isUnmanaged) {
|
||||||
new Drive(capacity max 0, platterCount, label, Option(host), Option(sound), speed)
|
new Drive(capacity max 0, platterCount, label, Option(host), Option(sound), speed, drive.isLocked)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
val fs = oc.api.FileSystem.fromSaveDirectory(address, capacity max 0, Settings.get.bufferChanges)
|
var fs = oc.api.FileSystem.fromSaveDirectory(address, capacity max 0, Settings.get.bufferChanges)
|
||||||
|
if (drive.isLocked) {
|
||||||
|
fs = oc.api.FileSystem.asReadOnly(fs)
|
||||||
|
}
|
||||||
oc.api.FileSystem.asManagedEnvironment(fs, label, host, sound, speed)
|
oc.api.FileSystem.asManagedEnvironment(fs, label, host, sound, speed)
|
||||||
}
|
}
|
||||||
if (environment != null && environment.node != null) {
|
if (environment != null && environment.node != null) {
|
||||||
|
@ -35,6 +35,7 @@ object PacketHandler extends CommonPacketHandler {
|
|||||||
p.packetType match {
|
p.packetType match {
|
||||||
case PacketType.ComputerPower => onComputerPower(p)
|
case PacketType.ComputerPower => onComputerPower(p)
|
||||||
case PacketType.CopyToAnalyzer => onCopyToAnalyzer(p)
|
case PacketType.CopyToAnalyzer => onCopyToAnalyzer(p)
|
||||||
|
case PacketType.DriveLock => onDriveLock(p)
|
||||||
case PacketType.DriveMode => onDriveMode(p)
|
case PacketType.DriveMode => onDriveMode(p)
|
||||||
case PacketType.DronePower => onDronePower(p)
|
case PacketType.DronePower => onDronePower(p)
|
||||||
case PacketType.KeyDown => onKeyDown(p)
|
case PacketType.KeyDown => onKeyDown(p)
|
||||||
@ -85,13 +86,37 @@ object PacketHandler extends CommonPacketHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def onDriveLock(p: PacketParser): Unit = p.player match {
|
||||||
|
case player: EntityPlayerMP =>
|
||||||
|
val heldItem = player.getHeldItem(EnumHand.MAIN_HAND)
|
||||||
|
Delegator.subItem(heldItem) match {
|
||||||
|
case Some(drive: FileSystemLike) =>
|
||||||
|
val data = new DriveData(heldItem)
|
||||||
|
if (!data.isLocked) {
|
||||||
|
data.lockInfo = player.getName match {
|
||||||
|
case name: String if name != null && !name.isEmpty => name
|
||||||
|
case _ => "notch" // meaning: "unknown"
|
||||||
|
}
|
||||||
|
data.save(heldItem)
|
||||||
|
}
|
||||||
|
case _ => // Invalid packet
|
||||||
|
}
|
||||||
|
case _ => // Invalid Packet
|
||||||
|
}
|
||||||
|
|
||||||
def onDriveMode(p: PacketParser): Unit = p.player match {
|
def onDriveMode(p: PacketParser): Unit = p.player match {
|
||||||
case player: EntityPlayerMP =>
|
case player: EntityPlayerMP =>
|
||||||
Delegator.subItem(player.getHeldItem(EnumHand.MAIN_HAND)) match {
|
val heldItem = player.getHeldItem(EnumHand.MAIN_HAND)
|
||||||
|
Delegator.subItem(heldItem) match {
|
||||||
case Some(drive: FileSystemLike) =>
|
case Some(drive: FileSystemLike) =>
|
||||||
val data = new DriveData(player.getHeldItem(EnumHand.MAIN_HAND))
|
val data = new DriveData(heldItem)
|
||||||
data.isUnmanaged = p.readBoolean()
|
val newIsUnmanaged = p.readBoolean()
|
||||||
data.save(player.getHeldItem(EnumHand.MAIN_HAND))
|
if (data.isUnmanaged != newIsUnmanaged) {
|
||||||
|
fs.FileSystem.removeAddress(heldItem)
|
||||||
|
data.lockInfo = ""
|
||||||
|
}
|
||||||
|
data.isUnmanaged = newIsUnmanaged
|
||||||
|
data.save(heldItem)
|
||||||
case _ => // Invalid packet.
|
case _ => // Invalid packet.
|
||||||
}
|
}
|
||||||
case _ => // Invalid packet.
|
case _ => // Invalid packet.
|
||||||
|
@ -29,7 +29,7 @@ import net.minecraftforge.common.DimensionManager
|
|||||||
|
|
||||||
import scala.collection.convert.WrapAsJava._
|
import scala.collection.convert.WrapAsJava._
|
||||||
|
|
||||||
class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Option[EnvironmentHost], val sound: Option[String], val speed: Int) extends AbstractManagedEnvironment with DeviceInfo {
|
class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Option[EnvironmentHost], val sound: Option[String], val speed: Int, val isLocked: Boolean) extends AbstractManagedEnvironment with DeviceInfo {
|
||||||
override val node = Network.newNode(this, Visibility.Network).
|
override val node = Network.newNode(this, Visibility.Network).
|
||||||
withComponent("drive", Visibility.Neighbors).
|
withComponent("drive", Visibility.Neighbors).
|
||||||
withConnector().
|
withConnector().
|
||||||
@ -75,6 +75,7 @@ class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Op
|
|||||||
|
|
||||||
@Callback(doc = """function(value:string):string -- Sets the label of the drive. Returns the new value, which may be truncated.""")
|
@Callback(doc = """function(value:string):string -- Sets the label of the drive. Returns the new value, which may be truncated.""")
|
||||||
def setLabel(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
def setLabel(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
||||||
|
if (isLocked) throw new Exception("drive is read only")
|
||||||
if (label == null) throw new Exception("drive does not support labeling")
|
if (label == null) throw new Exception("drive does not support labeling")
|
||||||
if (args.checkAny(0) == null) label.setLabel(null)
|
if (args.checkAny(0) == null) label.setLabel(null)
|
||||||
else label.setLabel(args.checkString(0))
|
else label.setLabel(args.checkString(0))
|
||||||
@ -102,6 +103,7 @@ class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Op
|
|||||||
|
|
||||||
@Callback(direct = true, doc = """function(sector:number, value:string) -- Write the specified contents to the specified sector.""")
|
@Callback(direct = true, doc = """function(sector:number, value:string) -- Write the specified contents to the specified sector.""")
|
||||||
def writeSector(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
def writeSector(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
||||||
|
if (isLocked) throw new Exception("drive is read only")
|
||||||
context.consumeCallBudget(writeSectorCosts(speed))
|
context.consumeCallBudget(writeSectorCosts(speed))
|
||||||
val sectorData = args.checkByteArray(1)
|
val sectorData = args.checkByteArray(1)
|
||||||
val sector = moveToSector(context, checkSector(args, 0))
|
val sector = moveToSector(context, checkSector(args, 0))
|
||||||
@ -121,6 +123,7 @@ class Drive(val capacity: Int, val platterCount: Int, val label: Label, host: Op
|
|||||||
|
|
||||||
@Callback(direct = true, doc = """function(offset:number, value:number) -- Write a single byte to the specified offset.""")
|
@Callback(direct = true, doc = """function(offset:number, value:number) -- Write a single byte to the specified offset.""")
|
||||||
def writeByte(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
def writeByte(context: Context, args: Arguments): Array[AnyRef] = this.synchronized {
|
||||||
|
if (isLocked) throw new Exception("drive is read only")
|
||||||
context.consumeCallBudget(writeByteCosts(speed))
|
context.consumeCallBudget(writeByteCosts(speed))
|
||||||
val offset = args.checkInteger(0) - 1
|
val offset = args.checkInteger(0) - 1
|
||||||
val value = args.checkInteger(1).toByte
|
val value = args.checkInteger(1).toByte
|
||||||
|
@ -11,6 +11,8 @@ import li.cil.oc.Settings
|
|||||||
import li.cil.oc.api
|
import li.cil.oc.api
|
||||||
import li.cil.oc.api.fs.Label
|
import li.cil.oc.api.fs.Label
|
||||||
import li.cil.oc.api.network.EnvironmentHost
|
import li.cil.oc.api.network.EnvironmentHost
|
||||||
|
import li.cil.oc.common.item.Delegator
|
||||||
|
import li.cil.oc.common.item.traits.FileSystemLike
|
||||||
import li.cil.oc.server.component
|
import li.cil.oc.server.component
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
import net.minecraft.nbt.NBTTagCompound
|
import net.minecraft.nbt.NBTTagCompound
|
||||||
@ -110,6 +112,23 @@ object FileSystem extends api.detail.FileSystemAPI {
|
|||||||
else null
|
else null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def removeAddress(fsStack: ItemStack): Boolean = {
|
||||||
|
Delegator.subItem(fsStack) match {
|
||||||
|
case Some(drive: FileSystemLike) => {
|
||||||
|
val data = li.cil.oc.integration.opencomputers.Item.dataTag(fsStack)
|
||||||
|
if (data.hasKey("node")) {
|
||||||
|
val nodeData = data.getCompoundTag("node")
|
||||||
|
if (nodeData.hasKey("address")) {
|
||||||
|
nodeData.removeTag("address")
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case _ =>
|
||||||
|
}
|
||||||
|
false
|
||||||
|
}
|
||||||
|
|
||||||
def fromMemory(capacity: Long): api.fs.FileSystem = new RamFileSystem(capacity)
|
def fromMemory(capacity: Long): api.fs.FileSystem = new RamFileSystem(capacity)
|
||||||
|
|
||||||
override def asReadOnly(fileSystem: api.fs.FileSystem) =
|
override def asReadOnly(fileSystem: api.fs.FileSystem) =
|
||||||
|
Loading…
x
Reference in New Issue
Block a user