Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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;
Expand Down Expand Up @@ -288,6 +291,34 @@ public static List<Object> listDrives(Network network) {
return drives;
}

public static List<Object> getCrafters(Network network, net.minecraft.world.level.Level level) {
List<Object> crafters = new ArrayList<>();

GraphNetworkComponent graphNetworkComponent = network.getComponent(GraphNetworkComponent.class);
AutocraftingNetworkComponent autocrafting = network.getComponent(AutocraftingNetworkComponent.class);

for (Autocrafter autocrafter : graphNetworkComponent.getContainers(Autocrafter.class)) {
Map<String, Object> properties = new HashMap<>();
properties.put("name", autocrafter.getAutocrafterName().getString());
properties.put("position", LuaConverter.posToLua(autocrafter.getLocalPosition()));
properties.put("visible", autocrafter.isVisibleToTheAutocrafterManager());

List<Object> 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.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,5 +11,5 @@
@Target(ElementType.FIELD)
@ObjectProperty(StringType.class)
public @interface StringProperty {
boolean utf8() default false;
boolean utf8() default false;
}
Loading