From a54de62a6a962667ced4cb6e6fc6dc0701bb0907 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 14 Feb 2018 14:12:31 +0000 Subject: [PATCH] Some more basic methods for open computers --- .../compat/opencomputers/DriverMachine.java | 49 ++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/src/main/java/techreborn/compat/opencomputers/DriverMachine.java b/src/main/java/techreborn/compat/opencomputers/DriverMachine.java index 0f5060abd..343d39841 100644 --- a/src/main/java/techreborn/compat/opencomputers/DriverMachine.java +++ b/src/main/java/techreborn/compat/opencomputers/DriverMachine.java @@ -12,9 +12,13 @@ import li.cil.oc.api.prefab.AbstractManagedEnvironment; import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; +import reborncore.api.recipe.IRecipeCrafterProvider; import reborncore.api.tile.IUpgradeable; import reborncore.common.powerSystem.TilePowerAcceptor; +import java.util.Arrays; +import java.util.function.IntFunction; + public class DriverMachine implements DriverBlock { @Override public boolean worksWith(World world, BlockPos blockPos, EnumFacing enumFacing) { @@ -65,6 +69,49 @@ public class DriverMachine implements DriverBlock { return getObjects(machine instanceof IUpgradeable && machine.canBeUpgraded()); } + @Callback(value = "hasRecipeCrafter", getter = true, doc = "Returns true if the machine has a recipe crafter") + public Object[] hasRecipeCrafter(Context context, Arguments arguments) throws Exception{ + return getObjects(machine instanceof IRecipeCrafterProvider); + } + + @Callback(value = "getRecipeName", getter = true, doc = "Gets the name of the recipe that the machine crafts") + public Object[] getRecipeName(Context context, Arguments arguments) throws Exception{ + if(!(machine instanceof IRecipeCrafterProvider)){ + return null; + } + return getObjects(((IRecipeCrafterProvider) machine).getRecipeCrafter().recipeName); + } + + @Callback(value = "getInputSlots", getter = true, doc = "Gets the slot ids that the crafter uses to look for inputs") + public Object[] getInputSlots(Context context, Arguments arguments) throws Exception{ + if(!(machine instanceof IRecipeCrafterProvider)){ + return null; + } + return Arrays.stream(((IRecipeCrafterProvider) machine).getRecipeCrafter().inputSlots).mapToObj((IntFunction) value -> value).toArray(); + } + + @Callback(value = "getOutputSlots", getter = true, doc = "Gets the slot ids that the crafter uses for outputs") + public Object[] getOutputSlots(Context context, Arguments arguments) throws Exception{ + if(!(machine instanceof IRecipeCrafterProvider)){ + return null; + } + return Arrays.stream(((IRecipeCrafterProvider) machine).getRecipeCrafter().outputSlots).mapToObj((IntFunction) value -> value).toArray(); + } + + @Callback(value = "isActive", getter = true, doc = "Returns a boolean if the machine is actice") + public Object[] isActive(Context context, Arguments arguments) throws Exception{ + return getObjects(machine.isActive()); + } + + @Callback(value = "getFacing", getter = true, doc = "Gets the facing for the machine") + public Object[] getFacing(Context context, Arguments arguments) throws Exception{ + EnumFacing facing = machine.getFacing(); + if(facing == null){ + return null; + } + return getObjects(facing.getName()); + } + private Object[] getObjects(Object... objects){ return objects; } @@ -76,7 +123,7 @@ public class DriverMachine implements DriverBlock { @Override public int priority() { - return Integer.MAX_VALUE; + return 10; } } }