Make controller consume pattern container API
This commit is contained in:
@@ -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);
|
||||
|
||||
/**
|
||||
|
@@ -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();
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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),
|
||||
|
@@ -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;
|
||||
}
|
||||
|
Reference in New Issue
Block a user