Introduce ICraftingPatternProvider
This commit is contained in:
20
src/main/java/refinedstorage/api/autocrafting/ICraftingPatternProvider.java
Executable file
20
src/main/java/refinedstorage/api/autocrafting/ICraftingPatternProvider.java
Executable file
@@ -0,0 +1,20 @@
|
|||||||
|
package refinedstorage.api.autocrafting;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Implement this interface on pattern items.
|
||||||
|
* When you implement this interface on your patterns, they will be insertable in crafters.
|
||||||
|
*
|
||||||
|
* @todo: Serialization from controller!
|
||||||
|
*/
|
||||||
|
public interface ICraftingPatternProvider {
|
||||||
|
/**
|
||||||
|
* Creates a crafting pattern.
|
||||||
|
*
|
||||||
|
* @param stack The pattern stack
|
||||||
|
* @param container The container where the pattern is in
|
||||||
|
* @return The crafting pattern
|
||||||
|
*/
|
||||||
|
ICraftingPattern create(ItemStack stack, ICraftingPatternContainer container);
|
||||||
|
}
|
||||||
@@ -13,13 +13,17 @@ import net.minecraft.util.text.TextFormatting;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import refinedstorage.RefinedStorageItems;
|
import refinedstorage.RefinedStorageItems;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
||||||
import refinedstorage.api.storage.CompareUtils;
|
import refinedstorage.api.storage.CompareUtils;
|
||||||
|
import refinedstorage.apiimpl.autocrafting.CraftingPattern;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
public class ItemPattern extends ItemBase {
|
public class ItemPattern extends ItemBase implements ICraftingPatternProvider {
|
||||||
public static final String NBT_INPUTS = "Inputs";
|
public static final String NBT_INPUTS = "Inputs";
|
||||||
public static final String NBT_OUTPUTS = "Outputs";
|
public static final String NBT_OUTPUTS = "Outputs";
|
||||||
public static final String NBT_BYPRODUCTS = "Byproducts";
|
public static final String NBT_BYPRODUCTS = "Byproducts";
|
||||||
@@ -173,4 +177,15 @@ public class ItemPattern extends ItemBase {
|
|||||||
|
|
||||||
return pattern.getTagCompound().getBoolean(NBT_PROCESSING);
|
return pattern.getTagCompound().getBoolean(NBT_PROCESSING);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ICraftingPattern create(ItemStack stack, ICraftingPatternContainer container) {
|
||||||
|
return new CraftingPattern(
|
||||||
|
container.getPosition(),
|
||||||
|
isProcessing(stack),
|
||||||
|
getInputs(stack),
|
||||||
|
getOutputs(stack),
|
||||||
|
getByproducts(stack)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ import refinedstorage.RefinedStorageBlocks;
|
|||||||
import refinedstorage.api.RefinedStorageAPI;
|
import refinedstorage.api.RefinedStorageAPI;
|
||||||
import refinedstorage.api.autocrafting.ICraftingPattern;
|
import refinedstorage.api.autocrafting.ICraftingPattern;
|
||||||
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
||||||
import refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
|
import refinedstorage.api.autocrafting.registry.ICraftingTaskFactory;
|
||||||
import refinedstorage.api.autocrafting.task.ICraftingTask;
|
import refinedstorage.api.autocrafting.task.ICraftingTask;
|
||||||
import refinedstorage.api.network.*;
|
import refinedstorage.api.network.*;
|
||||||
@@ -50,7 +51,6 @@ import refinedstorage.integration.ic2.IControllerEnergyIC2;
|
|||||||
import refinedstorage.integration.ic2.IntegrationIC2;
|
import refinedstorage.integration.ic2.IntegrationIC2;
|
||||||
import refinedstorage.integration.tesla.ControllerEnergyTesla;
|
import refinedstorage.integration.tesla.ControllerEnergyTesla;
|
||||||
import refinedstorage.integration.tesla.IntegrationTesla;
|
import refinedstorage.integration.tesla.IntegrationTesla;
|
||||||
import refinedstorage.item.ItemPattern;
|
|
||||||
import refinedstorage.network.MessageGridFluidDelta;
|
import refinedstorage.network.MessageGridFluidDelta;
|
||||||
import refinedstorage.network.MessageGridFluidUpdate;
|
import refinedstorage.network.MessageGridFluidUpdate;
|
||||||
import refinedstorage.network.MessageGridItemDelta;
|
import refinedstorage.network.MessageGridItemDelta;
|
||||||
@@ -467,16 +467,10 @@ public class TileController extends TileBase implements INetworkMaster, IEnergyR
|
|||||||
ICraftingPatternContainer container = (ICraftingPatternContainer) node;
|
ICraftingPatternContainer container = (ICraftingPatternContainer) node;
|
||||||
|
|
||||||
for (int i = 0; i < container.getPatterns().getSlots(); ++i) {
|
for (int i = 0; i < container.getPatterns().getSlots(); ++i) {
|
||||||
ItemStack pattern = container.getPatterns().getStackInSlot(i);
|
ItemStack stack = container.getPatterns().getStackInSlot(i);
|
||||||
|
|
||||||
if (pattern != null && ItemPattern.isValid(pattern)) {
|
if (stack != null) {
|
||||||
patterns.add(new CraftingPattern(
|
patterns.add(((ICraftingPatternProvider) stack.getItem()).create(stack, container));
|
||||||
container.getPosition(),
|
|
||||||
ItemPattern.isProcessing(pattern),
|
|
||||||
ItemPattern.getInputs(pattern),
|
|
||||||
ItemPattern.getOutputs(pattern),
|
|
||||||
ItemPattern.getByproducts(pattern)
|
|
||||||
));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -7,16 +7,15 @@ import net.minecraftforge.items.CapabilityItemHandler;
|
|||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
import net.minecraftforge.items.wrapper.CombinedInvWrapper;
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageItems;
|
|
||||||
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
import refinedstorage.api.autocrafting.ICraftingPatternContainer;
|
||||||
|
import refinedstorage.api.autocrafting.ICraftingPatternProvider;
|
||||||
import refinedstorage.api.network.INetworkMaster;
|
import refinedstorage.api.network.INetworkMaster;
|
||||||
import refinedstorage.inventory.ItemHandlerBasic;
|
import refinedstorage.inventory.ItemHandlerBasic;
|
||||||
import refinedstorage.inventory.ItemHandlerUpgrade;
|
import refinedstorage.inventory.ItemHandlerUpgrade;
|
||||||
import refinedstorage.item.ItemPattern;
|
|
||||||
import refinedstorage.item.ItemUpgrade;
|
import refinedstorage.item.ItemUpgrade;
|
||||||
|
|
||||||
public class TileCrafter extends TileNode implements ICraftingPatternContainer {
|
public class TileCrafter extends TileNode implements ICraftingPatternContainer {
|
||||||
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, this, stack -> (stack.getItem() == RefinedStorageItems.PATTERN && ItemPattern.isValid(stack))) {
|
private ItemHandlerBasic patterns = new ItemHandlerBasic(9, this, stack -> stack.getItem() instanceof ICraftingPatternProvider) {
|
||||||
@Override
|
@Override
|
||||||
protected void onContentsChanged(int slot) {
|
protected void onContentsChanged(int slot) {
|
||||||
super.onContentsChanged(slot);
|
super.onContentsChanged(slot);
|
||||||
|
|||||||
Reference in New Issue
Block a user