diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java index cf3289b59..5d9ad74dc 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java @@ -13,6 +13,7 @@ import com.refinedmods.refinedstorage.neoforge.support.resource.VariantUtil; import dan200.computercraft.api.lua.IArguments; import dan200.computercraft.api.lua.LuaException; +import dan200.computercraft.api.lua.LuaFunction; import dan200.computercraft.api.lua.MethodResult; import dan200.computercraft.api.peripheral.IComputerAccess; import de.srendi.advancedperipherals.common.addons.APAddon; @@ -160,6 +161,15 @@ public List getDrivesImpl() { return RSApi.listDrives(getNetwork()); } + // RS-only, not on IStorageSystemPeripheral: the ME Bridge has no equivalent. + @LuaFunction(mainThread = true) + public final MethodResult getCrafters() { + if (!isAvailable()) { + return NOT_CONNECTED_RESULT; + } + return MethodResult.of(RSApi.getCrafters(getNetwork(), getLevel())); + } + @Override public double getStoredEnergyImpl() { return getNetwork().getComponent(EnergyNetworkComponent.class).getStored(); diff --git a/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RSApi.java b/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RSApi.java index 6a4782f50..fc4cad666 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RSApi.java +++ b/src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RSApi.java @@ -17,6 +17,8 @@ import com.refinedmods.refinedstorage.api.storage.StateTrackedStorage; import com.refinedmods.refinedstorage.api.storage.Storage; import com.refinedmods.refinedstorage.api.storage.composite.CompositeStorage; +import com.refinedmods.refinedstorage.common.api.RefinedStorageApi; +import com.refinedmods.refinedstorage.common.api.autocrafting.Autocrafter; import com.refinedmods.refinedstorage.common.api.storage.SerializableStorage; import com.refinedmods.refinedstorage.common.api.support.network.InWorldNetworkNodeContainer; import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey; @@ -39,6 +41,7 @@ import de.srendi.advancedperipherals.common.util.inventory.GenericFilter; import de.srendi.advancedperipherals.common.util.inventory.ItemFilter; import de.srendi.advancedperipherals.common.util.inventory.ItemUtil; +import net.minecraft.world.Container; import net.minecraft.world.item.ItemStack; import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent; import net.neoforged.neoforge.fluids.FluidStack; @@ -288,6 +291,34 @@ public static List listDrives(Network network) { return drives; } + public static List getCrafters(Network network, net.minecraft.world.level.Level level) { + List crafters = new ArrayList<>(); + + GraphNetworkComponent graphNetworkComponent = network.getComponent(GraphNetworkComponent.class); + AutocraftingNetworkComponent autocrafting = network.getComponent(AutocraftingNetworkComponent.class); + + for (Autocrafter autocrafter : graphNetworkComponent.getContainers(Autocrafter.class)) { + Map properties = new HashMap<>(); + properties.put("name", autocrafter.getAutocrafterName().getString()); + properties.put("position", LuaConverter.posToLua(autocrafter.getLocalPosition())); + properties.put("visible", autocrafter.isVisibleToTheAutocrafterManager()); + + List patterns = new ArrayList<>(); + Container container = autocrafter.getPatternContainer(); + for (int i = 0; i < container.getContainerSize(); i++) { + ItemStack stack = container.getItem(i); + if (stack.isEmpty()) + continue; + Pattern pattern = RefinedStorageApi.INSTANCE.getPattern(stack, level).orElse(null); + if (pattern != null) + patterns.add(parsePattern(pattern, autocrafting)); + } + properties.put("patterns", patterns); + crafters.add(properties); + } + return crafters; + } + /** * Finds a pattern from filters. * diff --git a/src/main/java/de/srendi/advancedperipherals/common/smartglasses/modules/overlay/propertytypes/StringProperty.java b/src/main/java/de/srendi/advancedperipherals/common/smartglasses/modules/overlay/propertytypes/StringProperty.java index 95fa5064c..3052fd934 100644 --- a/src/main/java/de/srendi/advancedperipherals/common/smartglasses/modules/overlay/propertytypes/StringProperty.java +++ b/src/main/java/de/srendi/advancedperipherals/common/smartglasses/modules/overlay/propertytypes/StringProperty.java @@ -11,5 +11,5 @@ @Target(ElementType.FIELD) @ObjectProperty(StringType.class) public @interface StringProperty { - boolean utf8() default false; + boolean utf8() default false; }