blob: 19700b379f35da23caa0d859adba8ca3080055d8 [file] [log] [blame] [raw]
package li.cil.oc.common.container
import li.cil.oc.common.InventorySlots
import li.cil.oc.common.inventory.ServerInventory
import li.cil.oc.server.component
import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.player.InventoryPlayer
import net.minecraft.nbt.NBTTagCompound
class Server(playerInventory: InventoryPlayer, serverInventory: ServerInventory, val server: Option[component.Server] = None) extends Player(playerInventory, serverInventory) {
for (i <- 0 to 1) {
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(76, 7 + i * slotSize, slot.slot, slot.tier)
}
val verticalSlots = math.min(3, 1 + serverInventory.tier)
for (i <- 0 to verticalSlots) {
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(100, 7 + i * slotSize, slot.slot, slot.tier)
}
for (i <- 0 to verticalSlots) {
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(124, 7 + i * slotSize, slot.slot, slot.tier)
}
for (i <- 0 to verticalSlots) {
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(148, 7 + i * slotSize, slot.slot, slot.tier)
}
for (i <- 2 to verticalSlots) {
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(76, 7 + i * slotSize, slot.slot, slot.tier)
}
{
val slot = InventorySlots.server(serverInventory.tier)(getInventory.size)
addSlotToContainer(26, 34, slot.slot, slot.tier)
}
// Show the player's inventory.
addPlayerInventorySlots(8, 84)
override def canInteractWith(player: EntityPlayer) = {
if (server.isDefined) super.canInteractWith(player)
else player == playerInventory.player
}
var isRunning = false
var isItem = true
override def updateCustomData(nbt: NBTTagCompound): Unit = {
super.updateCustomData(nbt)
isRunning = nbt.getBoolean("isRunning")
isItem = nbt.getBoolean("isItem")
}
override protected def detectCustomDataChanges(nbt: NBTTagCompound): Unit = {
super.detectCustomDataChanges(nbt)
server match {
case Some(s) => nbt.setBoolean("isRunning", s.machine.isRunning)
case _ => nbt.setBoolean("isItem", true)
}
}
}