diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index bacd63c7d..1b7b5f9ff 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -161,7 +161,9 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor while (it.hasNext()) { CraftingTask task = it.next(); - if (task.attemptCraft(this)) { + task.attemptCraft(this); + + if (task.isDone()) { it.remove(); push(task.getResult()); @@ -675,14 +677,15 @@ public class TileController extends TileBase implements IEnergyReceiver, INetwor public void onCraftingRequested(int id, int quantity) { if (id >= 0 && id < itemGroups.size() && quantity > 0) { - System.out.println("Start for " + quantity); - for (int i = 0; i < quantity; ++i) { + while (quantity > 0) { ItemStack pattern = getPatternForItem(itemGroups.get(id).toItemStack()); if (pattern != null) { addCraftingTask(CraftingTask.createFromPattern(pattern)); + + quantity -= ItemPattern.getResult(pattern).stackSize; } else { - System.out.println("Pattern not found !"); + break; } } } diff --git a/src/main/java/refinedstorage/tile/autocrafting/CraftingIngredient.java b/src/main/java/refinedstorage/tile/autocrafting/CraftingIngredient.java index 613af679b..c2622a8d7 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/CraftingIngredient.java +++ b/src/main/java/refinedstorage/tile/autocrafting/CraftingIngredient.java @@ -5,7 +5,7 @@ import net.minecraft.item.ItemStack; public class CraftingIngredient { private ItemStack stack; private boolean satisfied; - private boolean subtaskCreated; + private boolean childTaskCreated; public CraftingIngredient(ItemStack stack) { this.stack = stack; @@ -23,11 +23,11 @@ public class CraftingIngredient { this.satisfied = true; } - public boolean isSubtaskCreated() { - return subtaskCreated; + public boolean isChildTaskCreated() { + return childTaskCreated; } - public void setSubtaskCreated() { - subtaskCreated = true; + public void setChildTaskCreated() { + childTaskCreated = true; } } diff --git a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java b/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java index 73945e608..23d1eb308 100755 --- a/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java +++ b/src/main/java/refinedstorage/tile/autocrafting/CraftingTask.java @@ -20,30 +20,28 @@ public class CraftingTask { return result; } - public boolean attemptCraft(TileController controller) { + public void attemptCraft(TileController controller) { for (CraftingIngredient ingredient : ingredients) { if (!ingredient.isSatisfied()) { ItemStack took = controller.take(ingredient.getStack().copy()); if (took != null) { - System.out.println("Ingredient " + ingredient.getStack() + " SATISFIED"); ingredient.setSatisfied(); - } else if (!ingredient.isSubtaskCreated()) { - System.out.println("Ingredient " + ingredient.getStack() + " NOT SATISFIED, creating subtask"); - + } else if (!ingredient.isChildTaskCreated()) { ItemStack pattern = controller.getPatternForItem(ingredient.getStack()); if (pattern != null) { - System.out.println("Found a pattern for this!"); - CraftingTask subTask = CraftingTask.createFromPattern(pattern); - ingredient.setSubtaskCreated(); - controller.addCraftingTask(subTask); + CraftingTask childTask = CraftingTask.createFromPattern(pattern); + ingredient.setChildTaskCreated(); + controller.addCraftingTask(childTask); break; } } } } + } + public boolean isDone() { for (CraftingIngredient ingredient : ingredients) { if (!ingredient.isSatisfied()) { return false; @@ -54,14 +52,12 @@ public class CraftingTask { } public static CraftingTask createFromPattern(ItemStack pattern) { - System.out.println("Creating crafting task for " + ItemPattern.getResult(pattern)); List ingredients = new ArrayList(); for (int i = 0; i < 9; ++i) { ItemStack ingredient = ItemPattern.getSlot(pattern, i); if (ingredient != null) { - System.out.println("Ingredient #" + i + ": " + ingredient); ingredients.add(new CraftingIngredient(ingredient)); } }