mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-14 09:46:53 -04:00
Made inventory trait a bit more flexible.
This commit is contained in:
parent
b34ec529bd
commit
cefa0464dc
@ -11,6 +11,8 @@ import net.minecraftforge.common.util.Constants.NBT
|
||||
trait Inventory extends IInventory {
|
||||
def items: Array[Option[ItemStack]]
|
||||
|
||||
def updateItems(slot: Int, stack: ItemStack) = items(slot) = Option(stack)
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
override def getStackInSlot(slot: Int) =
|
||||
@ -45,7 +47,7 @@ trait Inventory extends IInventory {
|
||||
}
|
||||
|
||||
val oldStack = items(slot)
|
||||
items(slot) = None
|
||||
updateItems(slot, null)
|
||||
if (oldStack.isDefined) {
|
||||
onItemRemoved(slot, oldStack.get)
|
||||
}
|
||||
@ -53,7 +55,7 @@ trait Inventory extends IInventory {
|
||||
if (stack.stackSize > getInventoryStackLimit) {
|
||||
stack.stackSize = getInventoryStackLimit
|
||||
}
|
||||
items(slot) = Some(stack)
|
||||
updateItems(slot, stack)
|
||||
}
|
||||
|
||||
if (items(slot).isDefined) {
|
||||
@ -84,7 +86,7 @@ trait Inventory extends IInventory {
|
||||
nbt.getTagList(Settings.namespace + "items", NBT.TAG_COMPOUND).foreach((slotNbt: NBTTagCompound) => {
|
||||
val slot = slotNbt.getByte("slot")
|
||||
if (slot >= 0 && slot < items.length) {
|
||||
items(slot) = Option(ItemUtils.loadStack(slotNbt.getCompoundTag("item")))
|
||||
updateItems(slot, ItemUtils.loadStack(slotNbt.getCompoundTag("item")))
|
||||
}
|
||||
})
|
||||
}
|
||||
|
@ -11,7 +11,9 @@ trait ItemStackInventory extends Inventory {
|
||||
// The item stack that provides the inventory.
|
||||
def container: ItemStack
|
||||
|
||||
lazy val items = Array.fill[Option[ItemStack]](getSizeInventory)(None)
|
||||
private lazy val inventory = Array.fill[Option[ItemStack]](getSizeInventory)(None)
|
||||
|
||||
override def items = inventory
|
||||
|
||||
// Initialize the list automatically if we have a container.
|
||||
if (container != null) {
|
||||
@ -24,14 +26,14 @@ trait ItemStackInventory extends Inventory {
|
||||
container.setTagCompound(new NBTTagCompound())
|
||||
}
|
||||
for (i <- 0 until items.length) {
|
||||
items(i) = None
|
||||
updateItems(i, null)
|
||||
}
|
||||
if (container.getTagCompound.hasKey(Settings.namespace + "items")) {
|
||||
val list = container.getTagCompound.getTagList(Settings.namespace + "items", NBT.TAG_COMPOUND)
|
||||
for (i <- 0 until (list.tagCount min items.length)) {
|
||||
val tag = list.getCompoundTagAt(i)
|
||||
if (!tag.hasNoTags) {
|
||||
items(i) = Option(ItemUtils.loadStack(tag))
|
||||
updateItems(i, ItemUtils.loadStack(tag))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -83,7 +83,7 @@ class Assembler extends traits.Environment with traits.PowerAcceptor with traits
|
||||
requiredEnergy = totalRequiredEnergy
|
||||
ServerPacketSender.sendRobotAssembling(this, assembling = true)
|
||||
|
||||
for (slot <- 0 until getSizeInventory) items(slot) = None
|
||||
for (slot <- 0 until getSizeInventory) updateItems(slot, null)
|
||||
markDirty()
|
||||
|
||||
true
|
||||
|
@ -9,7 +9,9 @@ import net.minecraft.nbt.NBTTagCompound
|
||||
import net.minecraftforge.common.util.ForgeDirection
|
||||
|
||||
trait Inventory extends TileEntity with inventory.Inventory {
|
||||
lazy val items = Array.fill[Option[ItemStack]](getSizeInventory)(None)
|
||||
private lazy val inventory = Array.fill[Option[ItemStack]](getSizeInventory)(None)
|
||||
|
||||
def items = inventory
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user