Added some special code for mods using InventoryPlayer.currentItem instead of InventoryPlayer.getCurrentItem.

Such as OpenBlocks' /dev/null. Oh well, it *almost* worked out of the box, just placing didn't.
This commit is contained in:
Florian Nücke 2015-05-29 11:52:07 +02:00
parent 806ed9ab85
commit 94ae4e43a5
2 changed files with 17 additions and 5 deletions

View File

@ -142,13 +142,21 @@ class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
override def getSizeInventory = agent.mainInventory.getSizeInventory override def getSizeInventory = agent.mainInventory.getSizeInventory
override def getStackInSlot(slot: Int) = agent.mainInventory.getStackInSlot(slot) override def getStackInSlot(slot: Int) =
if (slot < 0) agent.equipmentInventory.getStackInSlot(~slot)
else agent.mainInventory.getStackInSlot(slot)
override def decrStackSize(slot: Int, amount: Int) = agent.mainInventory.decrStackSize(slot, amount) override def decrStackSize(slot: Int, amount: Int) =
if (slot < 0) agent.equipmentInventory.decrStackSize(~slot, amount)
else agent.mainInventory.decrStackSize(slot, amount)
override def getStackInSlotOnClosing(slot: Int) = agent.mainInventory.getStackInSlotOnClosing(slot) override def getStackInSlotOnClosing(slot: Int) =
if (slot < 0) agent.equipmentInventory.getStackInSlotOnClosing(~slot)
else agent.mainInventory.getStackInSlotOnClosing(slot)
override def setInventorySlotContents(slot: Int, stack: ItemStack) = agent.mainInventory.setInventorySlotContents(slot, stack) override def setInventorySlotContents(slot: Int, stack: ItemStack) =
if (slot < 0) agent.equipmentInventory.setInventorySlotContents(~slot, stack)
else agent.mainInventory.setInventorySlotContents(slot, stack)
override def getInventoryName = agent.mainInventory.getInventoryName override def getInventoryName = agent.mainInventory.getInventoryName
@ -158,5 +166,7 @@ class Inventory(val agent: internal.Agent) extends InventoryPlayer(null) {
override def isUseableByPlayer(player: EntityPlayer) = agent.mainInventory.isUseableByPlayer(player) override def isUseableByPlayer(player: EntityPlayer) = agent.mainInventory.isUseableByPlayer(player)
override def isItemValidForSlot(slot: Int, stack: ItemStack) = agent.mainInventory.isItemValidForSlot(slot, stack) override def isItemValidForSlot(slot: Int, stack: ItemStack) =
if (slot < 0) agent.equipmentInventory.isItemValidForSlot(~slot, stack)
else agent.mainInventory.isItemValidForSlot(slot, stack)
} }

View File

@ -404,10 +404,12 @@ class Player(val agent: internal.Agent) extends FakePlayer(agent.world.asInstanc
val itemsBefore = adjacentItems val itemsBefore = adjacentItems
val stack = inventory.getStackInSlot(slot) val stack = inventory.getStackInSlot(slot)
val oldStack = if (stack != null) stack.copy() else null val oldStack = if (stack != null) stack.copy() else null
this.inventory.currentItem = if (inventory == agent.mainInventory) slot else ~slot
try { try {
f(stack) f(stack)
} }
finally { finally {
this.inventory.currentItem = 0
val newStack = inventory.getStackInSlot(slot) val newStack = inventory.getStackInSlot(slot)
if (newStack != null) { if (newStack != null) {
if (newStack.stackSize <= 0) { if (newStack.stackSize <= 0) {