From 8b03986d15ba337363d36fb0823de69a05e79d07 Mon Sep 17 00:00:00 2001
From: modmuss50 <modmuss50@gmail.com>
Date: Mon, 16 Dec 2019 19:48:18 +0000
Subject: [PATCH] Use RebornCore's ExtendedRecipeRemainder in the auto crafting
 table

---
 .../tier1/AutoCraftingTableBlockEntity.java   | 42 +++++++++----------
 1 file changed, 21 insertions(+), 21 deletions(-)

diff --git a/src/main/java/techreborn/blockentity/machine/tier1/AutoCraftingTableBlockEntity.java b/src/main/java/techreborn/blockentity/machine/tier1/AutoCraftingTableBlockEntity.java
index 1a73280b1..cbf084500 100644
--- a/src/main/java/techreborn/blockentity/machine/tier1/AutoCraftingTableBlockEntity.java
+++ b/src/main/java/techreborn/blockentity/machine/tier1/AutoCraftingTableBlockEntity.java
@@ -43,6 +43,7 @@ import reborncore.client.containerBuilder.IContainerProvider;
 import reborncore.client.containerBuilder.builder.BuiltContainer;
 import reborncore.client.containerBuilder.builder.ContainerBuilder;
 import reborncore.common.powerSystem.PowerAcceptorBlockEntity;
+import reborncore.common.recipes.ExtendedRecipeRemainder;
 import reborncore.common.util.IInventoryAccess;
 import reborncore.common.util.ItemUtils;
 import reborncore.common.util.RebornInventory;
@@ -137,11 +138,6 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
 						}
 						if (stacksInSlots[i] > requiredSize) {
 							if (ingredient.test(stack)) {
-								if (stack.getItem().getRecipeRemainder() != null) {
-									if (!hasRoomForExtraItem(new ItemStack(stack.getItem().getRecipeRemainder()))) {
-										continue;
-									}
-								}
 								foundIngredient = true;
 								checkedSlots.add(i);
 								stacksInSlots[i]--;
@@ -195,14 +191,23 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
 			// Looks for the best slot to take it from
 			ItemStack bestSlot = inventory.getInvStack(i);
 			if (ingredient.test(bestSlot)) {
-				handleContainerItem(bestSlot);
-				bestSlot.decrement(1);
+				ItemStack remainderStack = getRemainderItem(bestSlot);
+				if(remainderStack.isEmpty()) {
+					bestSlot.decrement(1);
+				} else {
+					inventory.setInvStack(i, remainderStack);
+				}
+
 			} else {
 				for (int j = 0; j < 9; j++) {
 					ItemStack stack = inventory.getInvStack(j);
 					if (ingredient.test(stack)) {
-						handleContainerItem(stack);
-						stack.decrement(1);
+						ItemStack remainderStack = getRemainderItem(stack);
+						if(remainderStack.isEmpty()) {
+							stack.decrement(1);
+						} else {
+							inventory.setInvStack(j, remainderStack);
+						}
 						break;
 					}
 				}
@@ -218,19 +223,14 @@ public class AutoCraftingTableBlockEntity extends PowerAcceptorBlockEntity
 		return true;
 	}
 
-	private void handleContainerItem(ItemStack stack) {
-		if (stack.getItem().hasRecipeRemainder()) {
-			ItemStack containerItem = new ItemStack(stack.getItem().getRecipeRemainder());
-			ItemStack extraOutputSlot = inventory.getInvStack(10);
-			if (hasOutputSpace(containerItem, 10)) {
-				if (extraOutputSlot.isEmpty()) {
-					inventory.setInvStack(10, containerItem.copy());
-				} else if (ItemUtils.isItemEqual(extraOutputSlot, containerItem, true, true)
-						&& extraOutputSlot.getMaxCount() < extraOutputSlot.getCount() + containerItem.getCount()) {
-					extraOutputSlot.increment(1);
-				}
-			}
+	private ItemStack getRemainderItem(ItemStack stack) {
+		if(stack.getItem() instanceof ExtendedRecipeRemainder) {
+			return ((ExtendedRecipeRemainder) stack.getItem()).getRemainderStack(stack);
+
+		} else if (stack.getItem().hasRecipeRemainder()) {
+			return new ItemStack(stack.getItem().getRecipeRemainder());
 		}
+		return ItemStack.EMPTY;
 	}
 
 	public int getProgress() {