mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
Also updated IItemHandler javadocs to reflect returning EMPTY instead of NULL.
This commit is contained in:
1 parent
cec90d7f48
commit
c0eea379a4
4 files changed
+50
-16
No files matched your search
@@ -62,7 +62,7 @@ public interface IItemHandler
|
||||
* @param slot Slot to insert into.
|
||||
* @param stack ItemStack to insert.
|
||||
* @param simulate If true, the insertion is only simulated
|
||||
* @return The remaining ItemStack that was not inserted (if the entire stack is accepted, then return null).
|
||||
* @return The remaining ItemStack that was not inserted (if the entire stack is accepted, then return ItemStack.EMPTY).
|
||||
* May be the same as the input ItemStack if unchanged, otherwise a new ItemStack.
|
||||
**/
|
||||
@Nonnull
|
||||
@@ -76,7 +76,7 @@ public interface IItemHandler
|
||||
* @param slot Slot to extract from.
|
||||
* @param amount Amount to extract (may be greater than the current stacks max limit)
|
||||
* @param simulate If true, the extraction is only simulated
|
||||
* @return ItemStack extracted from the slot, must be null, if nothing can be extracted
|
||||
* @return ItemStack extracted from the slot, must be ItemStack.EMPTY, if nothing can be extracted
|
||||
**/
|
||||
@Nonnull
|
||||
ItemStack extractItem(int slot, int amount, boolean simulate);
|
||||
|
||||
@@ -131,6 +131,10 @@ public class VanillaDoubleChestItemHandler extends WeakReference<TileEntityChest
|
||||
((IItemHandlerModifiable) singleHandler).setStackInSlot(targetSlot, stack);
|
||||
}
|
||||
}
|
||||
|
||||
chest = getChest(!accessingUpperChest);
|
||||
if (chest != null)
|
||||
chest.markDirty();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -140,7 +144,19 @@ public class VanillaDoubleChestItemHandler extends WeakReference<TileEntityChest
|
||||
boolean accessingUpperChest = slot < 27;
|
||||
int targetSlot = accessingUpperChest ? slot : slot - 27;
|
||||
TileEntityChest chest = getChest(accessingUpperChest);
|
||||
return chest != null ? chest.getSingleChestHandler().insertItem(targetSlot, stack, simulate) : stack;
|
||||
if (chest == null)
|
||||
return stack;
|
||||
|
||||
int starting = stack.getCount();
|
||||
ItemStack ret = chest.getSingleChestHandler().insertItem(targetSlot, stack, simulate);
|
||||
if (ret.getCount() != starting && !simulate)
|
||||
{
|
||||
chest = getChest(!accessingUpperChest);
|
||||
if (chest != null)
|
||||
chest.markDirty();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -150,7 +166,18 @@ public class VanillaDoubleChestItemHandler extends WeakReference<TileEntityChest
|
||||
boolean accessingUpperChest = slot < 27;
|
||||
int targetSlot = accessingUpperChest ? slot : slot - 27;
|
||||
TileEntityChest chest = getChest(accessingUpperChest);
|
||||
return chest != null ? chest.getSingleChestHandler().extractItem(targetSlot, amount, simulate) : ItemStack.EMPTY;
|
||||
if (chest == null)
|
||||
return ItemStack.EMPTY;
|
||||
|
||||
ItemStack ret = chest.getSingleChestHandler().extractItem(targetSlot, amount, simulate);
|
||||
if (!ret.isEmpty() && !simulate)
|
||||
{
|
||||
chest = getChest(!accessingUpperChest);
|
||||
if (chest != null)
|
||||
chest.markDirty();
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -112,7 +112,7 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
{
|
||||
ItemStack copy = stack.copy();
|
||||
copy.grow(stackInSlot.getCount());
|
||||
inv.setInventorySlotContents(slot1, copy);
|
||||
setInventorySlotContents(slot1, copy);
|
||||
}
|
||||
|
||||
return ItemStack.EMPTY;
|
||||
@@ -125,7 +125,7 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
{
|
||||
ItemStack copy = stack.splitStack(m);
|
||||
copy.grow(stackInSlot.getCount());
|
||||
inv.setInventorySlotContents(slot1, copy);
|
||||
setInventorySlotContents(slot1, copy);
|
||||
return stack;
|
||||
}
|
||||
else
|
||||
@@ -147,7 +147,7 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
stack = stack.copy();
|
||||
if (!simulate)
|
||||
{
|
||||
inv.setInventorySlotContents(slot1, stack.splitStack(m));
|
||||
setInventorySlotContents(slot1, stack.splitStack(m));
|
||||
return stack;
|
||||
}
|
||||
else
|
||||
@@ -159,7 +159,7 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
else
|
||||
{
|
||||
if (!simulate)
|
||||
inv.setInventorySlotContents(slot1, stack);
|
||||
setInventorySlotContents(slot1, stack);
|
||||
return ItemStack.EMPTY;
|
||||
}
|
||||
}
|
||||
@@ -172,7 +172,12 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
int slot1 = getSlot(inv, slot, side);
|
||||
|
||||
if (slot1 != -1)
|
||||
inv.setInventorySlotContents(slot1, stack);
|
||||
setInventorySlotContents(slot1, stack);
|
||||
}
|
||||
|
||||
private void setInventorySlotContents(int slot, ItemStack stack) {
|
||||
inv.markDirty(); //Notify vanilla of updates, We change the handler to be responsible for this instead of the caller. So mimic vanilla behavior
|
||||
inv.setInventorySlotContents(slot, stack);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -211,7 +216,9 @@ public class SidedInvWrapper implements IItemHandlerModifiable
|
||||
else
|
||||
{
|
||||
int m = Math.min(stackInSlot.getCount(), amount);
|
||||
return inv.decrStackSize(slot1, m);
|
||||
ItemStack ret = inv.decrStackSize(slot1, m);
|
||||
inv.markDirty();
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user