@Override public ItemStack transferStackInSlot(EntityPlayer player, int slotIndex) { ItemStack originalStack = null; Slot slot = (Slot) this.inventorySlots.get(slotIndex); if (slot != null && slot.getHasStack()) { ItemStack stack = slot.getStack(); originalStack = stack.copy(); if (slotIndex == 2) { if (!mergeItemStack(stack, 3, 39, true)) { return null; } slot.onSlotChange(stack, originalStack); } else if (slotIndex > 1) { boolean inserted = false; for (int i = 1; i >= 0; i--) { if (campfireEnt.canInsertItem(i, stack, 0)) { inserted = true; if (!mergeItemStack(stack, i, i + 1, false)) { return null; } break; } } if (!inserted) { if (slotIndex >= 3 && slotIndex < 30) // Player inventory { if (!mergeItemStack(stack, 30, 39, false)) { return null; } } else if (slotIndex >= 30 && slotIndex < 39 && !mergeItemStack(stack, 3, 30, false)) { return null; } } } else if (!mergeItemStack(stack, 3, 39, false)) { return null; } if (stack.stackSize == 0) { slot.putStack(null); } else { slot.onSlotChanged(); } if (stack.stackSize == originalStack.stackSize) { return null; } slot.onPickupFromSlot(player, stack); } return originalStack; }