Fixed assembler breaking its own inventory. Also fixed Disassembler crashing on creative-tier components and a few more potential null stacks.

Fixes #2339.
Fixes #2348.
This commit is contained in:
Vexatos 2017-04-22 15:03:03 +02:00
parent 20b59d6cd5
commit a2791ae8a6
4 changed files with 8 additions and 8 deletions

View File

@ -191,7 +191,7 @@ object Items extends ItemAPI {
// ----------------------------------------------------------------------- //
private def safeGetStack(name: String) = Option(get(name)).map(_.createItemStack(1)).orNull
private def safeGetStack(name: String) = Option(get(name)).map(_.createItemStack(1)).getOrElse(ItemStack.EMPTY)
def createConfiguredDrone(): ItemStack = {
val data = new DroneData()
@ -212,7 +212,7 @@ object Items extends ItemAPI {
safeGetStack(Constants.ItemName.CPUTier3),
safeGetStack(Constants.ItemName.RAMTier6),
safeGetStack(Constants.ItemName.RAMTier6)
)
).filter(!_.isEmpty)
data.createItemStack()
}
@ -232,7 +232,7 @@ object Items extends ItemAPI {
safeGetStack(Constants.ItemName.CPUTier3),
safeGetStack(Constants.ItemName.RAMTier6),
safeGetStack(Constants.ItemName.RAMTier6)
)
).filter(!_.isEmpty)
data.createItemStack()
}
@ -268,12 +268,12 @@ object Items extends ItemAPI {
safeGetStack(Constants.ItemName.LuaBios),
safeGetStack(Constants.ItemName.OpenOS),
safeGetStack(Constants.ItemName.HDDTier3)
)
).filter(!_.isEmpty)
data.containers = Array(
safeGetStack(Constants.ItemName.CardContainerTier3),
safeGetStack(Constants.ItemName.UpgradeContainerTier3),
safeGetStack(Constants.BlockName.DiskDrive)
)
).filter(!_.isEmpty)
data.createItemStack()
}

View File

@ -67,7 +67,7 @@ object AssemblerTemplates {
def assemble(inventory: IInventory) = IMC.tryInvokeStatic(assembler, inventory)(null: Array[AnyRef]) match {
case Array(stack: ItemStack, energy: java.lang.Number) => (stack, energy.doubleValue(): Double)
case Array(stack: ItemStack) => (stack, 0.0)
case _ => (null, 0.0)
case _ => (ItemStack.EMPTY, 0.0)
}
}

View File

@ -97,7 +97,7 @@ class Assembler extends traits.Environment with traits.PowerAcceptor with traits
requiredEnergy = totalRequiredEnergy
ServerPacketSender.sendRobotAssembling(this, assembling = true)
for (slot <- 0 until getSizeInventory) updateItems(slot, null)
for (slot <- 0 until getSizeInventory) updateItems(slot, ItemStack.EMPTY)
markDirty()
true

View File

@ -65,7 +65,7 @@ object ItemUtils {
else Tier.None
}
def caseNameWithTierSuffix(name: String, tier: Int): String = name + (if (tier == Tier.Four) "Creative" else (tier + 1).toString)
def caseNameWithTierSuffix(name: String, tier: Int): String = name + (if (tier == Tier.Four) "creative" else (tier + 1).toString)
def loadTag(data: Array[Byte]): NBTTagCompound = {
val bais = new ByteArrayInputStream(data)