diff --git a/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java b/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java index 003807682..7b3244ab0 100755 --- a/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java +++ b/src/main/java/refinedstorage/api/autocrafting/ICraftingPattern.java @@ -2,7 +2,6 @@ package refinedstorage.api.autocrafting; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; /** @@ -15,11 +14,6 @@ public interface ICraftingPattern { */ ICraftingPatternContainer getContainer(World world); - /** - * @return The position of the container where the pattern is in - */ - BlockPos getContainerPosition(); - /** * @return The inputs */ @@ -40,6 +34,10 @@ public interface ICraftingPattern { */ String getId(); + /** + * @param requested The item requested + * @return The quantity returned per request + */ int getQuantityPerRequest(ItemStack requested); /** diff --git a/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java b/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java index 733543471..90da87a77 100755 --- a/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java +++ b/src/main/java/refinedstorage/api/autocrafting/ICraftingPatternContainer.java @@ -1,5 +1,6 @@ package refinedstorage.api.autocrafting; +import net.minecraft.util.math.BlockPos; import net.minecraftforge.items.IItemHandler; /** @@ -17,4 +18,14 @@ public interface ICraftingPatternContainer { * @return The {@link IItemHandler} that this container is facing */ IItemHandler getConnectedItems(); + + /** + * @return The patterns stored in this container + */ + IItemHandler getPatterns(); + + /** + * @return The position of this container + */ + BlockPos getPosition(); } diff --git a/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java index 1594d7873..c334450a2 100755 --- a/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java +++ b/src/main/java/refinedstorage/apiimpl/autocrafting/CraftingPattern.java @@ -10,6 +10,7 @@ import refinedstorage.api.autocrafting.ICraftingPattern; import refinedstorage.api.autocrafting.ICraftingPatternContainer; import refinedstorage.api.storage.CompareUtils; import refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactoryNormal; +import refinedstorage.apiimpl.autocrafting.registry.CraftingTaskFactoryProcessing; import refinedstorage.item.ItemPattern; import refinedstorage.tile.TileCrafter; @@ -46,11 +47,6 @@ public class CraftingPattern implements ICraftingPattern { return crafter; } - @Override - public BlockPos getContainerPosition() { - return crafterPos; - } - @Override public ItemStack[] getInputs() { return inputs; @@ -68,7 +64,7 @@ public class CraftingPattern implements ICraftingPattern { @Override public String getId() { - return processing ? "processing" : CraftingTaskFactoryNormal.ID; + return processing ? CraftingTaskFactoryProcessing.ID : CraftingTaskFactoryNormal.ID; } @Override diff --git a/src/main/java/refinedstorage/tile/TileController.java b/src/main/java/refinedstorage/tile/TileController.java index 4437206fb..ca10c0fdc 100755 --- a/src/main/java/refinedstorage/tile/TileController.java +++ b/src/main/java/refinedstorage/tile/TileController.java @@ -463,15 +463,15 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR patterns.clear(); for (INetworkNode node : nodeGraph.all()) { - if (node instanceof TileCrafter && node.canUpdate()) { - TileCrafter crafter = (TileCrafter) node; + if (node instanceof ICraftingPatternContainer && node.canUpdate()) { + ICraftingPatternContainer container = (ICraftingPatternContainer) node; - for (int i = 0; i < crafter.getPatterns().getSlots(); ++i) { - ItemStack pattern = crafter.getPatterns().getStackInSlot(i); + for (int i = 0; i < container.getPatterns().getSlots(); ++i) { + ItemStack pattern = container.getPatterns().getStackInSlot(i); if (pattern != null && ItemPattern.isValid(pattern)) { patterns.add(new CraftingPattern( - crafter.getPos(), + container.getPosition(), ItemPattern.isProcessing(pattern), ItemPattern.getInputs(pattern), ItemPattern.getOutputs(pattern), diff --git a/src/main/java/refinedstorage/tile/TileCrafter.java b/src/main/java/refinedstorage/tile/TileCrafter.java index d216b472f..7b8e5f69b 100755 --- a/src/main/java/refinedstorage/tile/TileCrafter.java +++ b/src/main/java/refinedstorage/tile/TileCrafter.java @@ -50,7 +50,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { public void onConnectionChange(INetworkMaster network, boolean state) { if (!state) { network.getCraftingTasks().stream() - .filter(task -> task.getPattern().getContainerPosition().equals(pos)) + .filter(task -> task.getPattern().getContainer(worldObj).getPosition().equals(pos)) .forEach(network::cancelCraftingTask); } @@ -85,6 +85,7 @@ public class TileCrafter extends TileNode implements ICraftingPatternContainer { return getItemHandler(getFacingTile(), getDirection().getOpposite()); } + @Override public IItemHandler getPatterns() { return patterns; }