//Add from internal buffer
List<AdjacentTile> crafters = locateCrafters();
boolean change = false;
for(AdjacentTile tile : crafters) {
for(int i = inv.getSizeInventory() - 1; i >= 0; i--) {
ItemIdentifierStack slot = inv.getIDStackInSlot(i);
if(slot == null) continue;
ForgeDirection insertion = tile.orientation.getOpposite();
if(_service.getUpgradeManager().hasSneakyUpgrade()) {
insertion = _service.getUpgradeManager().getSneakyOrientation();
}
ItemIdentifierStack toadd = slot.clone();
toadd.setStackSize(Math.min(toadd.getStackSize(), toadd.getItem().getMaxStackSize()));
if(_service.getOrderManager().hasOrders(RequestType.CRAFTING)) {
toadd.setStackSize(Math.min(toadd.getStackSize(), ((IInventory)tile.tile).getInventoryStackLimit()));
ItemStack added = InventoryHelper.getTransactorFor(tile.tile, tile.orientation.getOpposite()).add(toadd.makeNormalStack(), insertion, true);
slot.setStackSize(slot.getStackSize() - added.stackSize);
if(added.stackSize != 0) {
change = true;
}
} else {
_service.queueRoutedItem(SimpleServiceLocator.routedItemHelper.createNewTravelItem(toadd), tile.orientation.getOpposite());
slot.setStackSize(slot.getStackSize() - toadd.getStackSize());
change = true;
}
if(slot.getStackSize() <= 0) {
inv.clearInventorySlotContents(i);
} else {