Merge branch 'master-MC1.7.10' of github.com:MightyPirates/OpenComputers into master-MC1.8

Conflicts:
	src/main/scala/li/cil/oc/server/agent/Inventory.scala
This commit is contained in:
Florian Nücke 2015-11-15 21:01:52 +01:00
commit 058ee1b6d9

View File

@ -1,6 +1,7 @@
package li.cil.oc.server.agent package li.cil.oc.server.agent
import li.cil.oc.api.internal import li.cil.oc.api.internal
import li.cil.oc.util.InventoryUtils
import net.minecraft.block.Block import net.minecraft.block.Block
import net.minecraft.entity.player.EntityPlayer import net.minecraft.entity.player.EntityPlayer
import net.minecraft.entity.player.InventoryPlayer import net.minecraft.entity.player.InventoryPlayer
@ -9,8 +10,6 @@ import net.minecraft.item.ItemStack
import net.minecraft.nbt.NBTTagCompound import net.minecraft.nbt.NBTTagCompound
import net.minecraft.nbt.NBTTagList import net.minecraft.nbt.NBTTagList
import scala.util.control.Breaks._
class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) { class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
def selectedItemStack = agent.mainInventory.getStackInSlot(agent.selectedSlot) def selectedItemStack = agent.mainInventory.getStackInSlot(agent.selectedSlot)
@ -23,11 +22,6 @@ class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
else inventorySlots.find(getStackInSlot(_) == null).getOrElse(-1) else inventorySlots.find(getStackInSlot(_) == null).getOrElse(-1)
} }
def getFirstEmptyStackAccepting(stack: ItemStack) = {
if (selectedItemStack == null && isItemValidForSlot(agent.selectedSlot, stack)) agent.selectedSlot
else inventorySlots.find(slot => getStackInSlot(slot) == null && isItemValidForSlot(slot, stack)).getOrElse(-1)
}
override def setCurrentItem(item: Item, itemDamage: Int, checkDamage: Boolean, create: Boolean) {} override def setCurrentItem(item: Item, itemDamage: Int, checkDamage: Boolean, create: Boolean) {}
override def changeCurrentItem(direction: Int) {} override def changeCurrentItem(direction: Int) {}
@ -57,54 +51,9 @@ class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
} }
override def addItemStackToInventory(stack: ItemStack) = { override def addItemStackToInventory(stack: ItemStack) = {
if (stack == null || stack.stackSize == 0) false val indices = 0 until getSizeInventory
else if (stack.isItemDamaged || (stack.stackSize == 1 && stack.getMaxStackSize == 1)) { val slots = indices.drop(agent.selectedSlot) ++ indices.take(agent.selectedSlot)
val slot = getFirstEmptyStackAccepting(stack) InventoryUtils.insertIntoInventory(stack, this, slots = Option(slots))
if (slot >= 0) {
setInventorySlotContents(slot, stack.splitStack(1))
true
}
else false
}
else {
val originalSize = stack.stackSize
breakable {
while (stack.stackSize > 0) {
if (stack.getMaxStackSize == 1) {
val slot = getFirstEmptyStackAccepting(stack)
if (slot >= 0) {
setInventorySlotContents(slot, stack.splitStack(1))
}
else break()
}
else {
val slot =
if (selectedItemStack == null) agent.selectedSlot
else inventorySlots.find(slot => {
val existing = getStackInSlot(slot)
existing != null && existing.isItemEqual(stack) &&
(!existing.getHasSubtypes || (existing.getItemDamage == stack.getItemDamage && ItemStack.areItemStackTagsEqual(existing, stack))) &&
(existing.stackSize < math.min(existing.getMaxStackSize, getInventoryStackLimit))
}).getOrElse(getFirstEmptyStackAccepting(stack))
if (slot >= 0) {
if (getStackInSlot(slot) == null) {
val amount = math.min(stack.stackSize, math.min(getInventoryStackLimit, stack.getMaxStackSize))
setInventorySlotContents(slot, stack.splitStack(amount))
}
else {
val existing = getStackInSlot(slot)
val space = math.min(getInventoryStackLimit, existing.getMaxStackSize) - existing.stackSize
val amount = math.min(stack.stackSize, space)
existing.stackSize += amount
stack.stackSize -= amount
}
}
else break()
}
}
}
stack.stackSize < originalSize
}
} }
override def func_146025_b(block: Block) = canHarvestBlock(block) override def func_146025_b(block: Block) = canHarvestBlock(block)