Skip to content

Commit 6eb20e7

Browse files
dot-mikeclaude
andcommitted
feat(rs): add getCrafters() to RS Bridge
Lists every autocrafter on the network with its name, position, visibility and the patterns it holds, resolving each pattern slot via the RS public API. RS-only; not added to the shared IStorageSystemPeripheral interface. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent d802ae5 commit 6eb20e7

2 files changed

Lines changed: 40 additions & 0 deletions

File tree

src/main/java/de/srendi/advancedperipherals/common/addons/computercraft/peripheral/RSBridgePeripheral.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -370,6 +370,15 @@ public final MethodResult getDrives() {
370370
return MethodResult.of(RSApi.listDrives(getNetwork()));
371371
}
372372

373+
// RS-only, not on IStorageSystemPeripheral: the ME Bridge has no equivalent.
374+
@LuaFunction(mainThread = true)
375+
public final MethodResult getCrafters() {
376+
if (!isAvailable())
377+
return notConnected(null);
378+
379+
return MethodResult.of(RSApi.getCrafters(getNetwork(), getLevel()));
380+
}
381+
373382
@Override
374383
@LuaFunction(mainThread = true)
375384
public final MethodResult importItem(IComputerAccess computer, IArguments arguments) throws LuaException {

src/main/java/de/srendi/advancedperipherals/common/addons/refinedstorage/RSApi.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
import com.refinedmods.refinedstorage.api.storage.StateTrackedStorage;
1818
import com.refinedmods.refinedstorage.api.storage.Storage;
1919
import com.refinedmods.refinedstorage.api.storage.composite.CompositeStorage;
20+
import com.refinedmods.refinedstorage.common.api.RefinedStorageApi;
21+
import com.refinedmods.refinedstorage.common.api.autocrafting.Autocrafter;
2022
import com.refinedmods.refinedstorage.common.api.storage.SerializableStorage;
2123
import com.refinedmods.refinedstorage.common.api.support.network.InWorldNetworkNodeContainer;
2224
import com.refinedmods.refinedstorage.common.api.support.resource.PlatformResourceKey;
@@ -42,6 +44,7 @@
4244
import de.srendi.advancedperipherals.common.util.inventory.ItemUtil;
4345
import mekanism.api.MekanismAPI;
4446
import mekanism.api.chemical.ChemicalStack;
47+
import net.minecraft.world.Container;
4548
import net.minecraft.world.item.ItemStack;
4649
import net.neoforged.neoforge.capabilities.RegisterCapabilitiesEvent;
4750
import net.neoforged.neoforge.fluids.FluidStack;
@@ -383,6 +386,34 @@ public static List<Object> listDrives(Network network) {
383386
return drives;
384387
}
385388

389+
public static List<Object> getCrafters(Network network, net.minecraft.world.level.Level level) {
390+
List<Object> crafters = new ArrayList<>();
391+
392+
GraphNetworkComponent graphNetworkComponent = network.getComponent(GraphNetworkComponent.class);
393+
AutocraftingNetworkComponent autocrafting = network.getComponent(AutocraftingNetworkComponent.class);
394+
395+
for (Autocrafter autocrafter : graphNetworkComponent.getContainers(Autocrafter.class)) {
396+
Map<String, Object> properties = new HashMap<>();
397+
properties.put("name", autocrafter.getAutocrafterName().getString());
398+
properties.put("position", LuaConverter.posToObject(autocrafter.getLocalPosition()));
399+
properties.put("visible", autocrafter.isVisibleToTheAutocrafterManager());
400+
401+
List<Object> patterns = new ArrayList<>();
402+
Container container = autocrafter.getPatternContainer();
403+
for (int i = 0; i < container.getContainerSize(); i++) {
404+
ItemStack stack = container.getItem(i);
405+
if (stack.isEmpty())
406+
continue;
407+
Pattern pattern = RefinedStorageApi.INSTANCE.getPattern(stack, level).orElse(null);
408+
if (pattern != null)
409+
patterns.add(parsePattern(pattern, autocrafting));
410+
}
411+
properties.put("patterns", patterns);
412+
crafters.add(properties);
413+
}
414+
return crafters;
415+
}
416+
386417
/**
387418
* Finds a pattern from filters.
388419
*

0 commit comments

Comments
 (0)