Add initial low spec CPUs

This commit is contained in:
Jakub 2026-02-07 22:47:15 +08:00
parent 92c90e5e5a
commit 50433e1173
99 changed files with 337 additions and 886 deletions

View file

@ -1,38 +1,5 @@
# OpenComputers II: Reimagined
# OC2:R Low Spec
[Searching for an Artist](#artists)
This is an addon for [OpenComputers II: Reimagined](https://github.com/North-Western-Development/oc2r) which adds lower spec tiers for CPUs at 500kHz, 750kHz, 1MHz, 2.5MHz, 5MHz and 12.5MHz.
*OpenComputers II: Reimagined* is a Minecraft mod adding virtual computers to the game. It is a fork of the mod originally made by [Sangar (fnuecke)], this fork is maintained North Western Development. These computers run a virtual machine emulating a 64-Bit RISC-V architecture capable of booting Linux. On top of this, a high-level Lua API is provided to communicate with various devices in the game world. This enables adding virtual devices using a simple, Java-friendly API, without having to implement actual kernel drivers.
The original mod was a successor to [OpenComputers]. At least in spirit. While many of the implementation details have changed quite dramatically, the core concepts of customizable hardware, persistence and sand-boxing are shared.
The underlying VM, which is written entirely in Java, is called [Sedna] and was written by [Sangar (fnuecke)] as well.
## Artists
We are looking for artists to assist with models and textures going forward. Artists will be entitled to a negotiated percentage of CurseForge rewards or any other donation platforms that may be employed. Artists will also receive special credits throughout the mod and it's repos.
## Why the Fork?
*OpenComputers II: Reimagined* aims to fix bugs with OC2 while adding new features and attempting to keep up with the latest popular versions of Minecraft. We did attempt to reach [Sangar (fnuecke)] on Twitter but got no response, so we've decided to continue with the fork and release separately on Curse under a new name.
The name change is simply an attempt to ensure it is well known that [Sangar (fnuecke)] is not responsible for this version, so they're not blasted with issues from it. We will be doing everything we can to ensure [Sangar (fnuecke)] does still get the credit they deserve for the mod though.
## Gameplay Documentation
For documentation on how the to get computers up and running, and how to use them, see the [documentation]. It is available as a manual item in the game.
## Development Documentation
The original section that was found here is preserved below, however it should be taken with a grain of salt as the current team has a ways to go in being 100% up to speed with where the device APIs are at the moment. So everything below is subject to change, though it is likely to remain mostly the same.
~~While the mod isn't quite yet ready for release due to some remaining technical and usability issues, the API should be mostly stable at this point. For most people the high level device API will be sufficient, and is much more accessible. It centers around the [`RPCDevice`][RPC Device]. For a sample block implementation, see the [redstone interface]. For a sample item implementation, see the [sound card]. If you wish to dive deeper, and provide emulated hardware that requires a Linux driver, this centers around the [`VMDevice`][VM Device]. For a sample block implementation, see the [disk drive]. For a sample item implementation, see the [network card].~~
[OpenComputers]: https://github.com/MightyPirates/OpenComputers
[RPC Device]: src/main/java/li/cil/oc2r/api/bus/device/rpc/RPCDevice.java
[redstone interface]: src/main/java/li/cil/oc2r/common/blockentity/RedstoneInterfaceBlockEntity.java
[sound card]: src/main/java/li/cil/oc2r/common/bus/device/rpc/item/SoundCardItemDevice.java
[VM Device]: src/main/java/li/cil/oc2r/api/bus/device/vm/VMDevice.java
[disk drive]: src/main/java/li/cil/oc2r/common/blockentity/DiskDriveBlockEntity.java
[network card]: src/main/java/li/cil/oc2r/common/bus/device/vm/item/NetworkInterfaceCardDevice.java
[documentation]: src/main/resources/assets/oc2r/doc/en_us/index.md
[GithubPackagesGradle]: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-gradle-registry
[Sangar (fnuecke)]: https://github.com/fnuecke
[Sedna]: https://github.com/fnuecke/sedna
Based on <https://github.com/North-Western-Development/oc2r-components>

0
gradlew vendored Normal file → Executable file
View file

Binary file not shown.

View file

@ -7,7 +7,7 @@ pluginManagement {
}
apply from: 'minecraft.gradle'
rootProject.name = "OC2RComponents-${minecraft_version}-${minecraft_sdk}"
rootProject.name = "OC2LowSpec-${minecraft_version}-${minecraft_sdk}"
def substituteLocal(final directoryName, final libraryName) {
final def path = new File("../${directoryName}");

View file

@ -0,0 +1,25 @@
package com.cyan.oc2ls;
import com.cyan.oc2ls.common.item.ItemGroup;
import com.cyan.oc2ls.common.item.Items;
import com.cyan.oc2ls.manual.Manuals;
import li.cil.oc2.common.ConfigManager;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.fml.DistExecutor;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@Mod("oc2ls")
public final class OC2LS {
public static String MOD_ID = "oc2ls";
public OC2LS() {
//ConfigManager.initialize();
Items.initialize();
DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> Manuals::initialize);
ItemGroup.TAB_REGISTER.register(FMLJavaModLoadingContext.get().getModEventBus());
}
}

View file

@ -0,0 +1,34 @@
package com.cyan.oc2ls.common.item;
import com.cyan.oc2ls.OC2LS;
import net.minecraft.core.registries.Registries;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.RegistryObject;
public final class ItemGroup {
public static final DeferredRegister<CreativeModeTab> TAB_REGISTER = DeferredRegister.create(Registries.CREATIVE_MODE_TAB, OC2LS.MOD_ID);
@SuppressWarnings("unused")
public static final RegistryObject<CreativeModeTab> COMMON_TAB = TAB_REGISTER.register("common", () -> CreativeModeTab.builder()
// Set name of tab to display
.title(Component.translatable("item_group." + OC2LS.MOD_ID + ".common"))
// Set icon of creative tab
.icon(() -> new ItemStack(Items.CPU_TIER_1.get()))
// Add default items to tab
.displayItems((params, output) -> {
// Items
output.accept(Items.CPU_TIER_1.get());
output.accept(Items.CPU_TIER_2.get());
output.accept(Items.CPU_TIER_3.get());
output.accept(Items.CPU_TIER_4.get());
output.accept(Items.CPU_TIER_5.get());
output.accept(Items.CPU_TIER_6.get());
})
.build()
);
}

View file

@ -0,0 +1,49 @@
package com.cyan.oc2ls.common.item;
import com.cyan.oc2ls.OC2LS;
import li.cil.oc2.common.item.CPUItem;
import net.minecraft.world.item.DyeColor;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import java.util.function.Function;
import java.util.function.Supplier;
public final class Items {
private static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, OC2LS.MOD_ID);
///////////////////////////////////////////////////////////////////
public static final RegistryObject<CPUItem> CPU_TIER_1 = register("cpu_tier_1", () ->
new CPUItem(500_000));
public static final RegistryObject<CPUItem> CPU_TIER_2 = register("cpu_tier_2", () ->
new CPUItem(750_000));
public static final RegistryObject<CPUItem> CPU_TIER_3 = register("cpu_tier_3", () ->
new CPUItem(1_000_000));
public static final RegistryObject<CPUItem> CPU_TIER_4 = register("cpu_tier_4", () ->
new CPUItem(2_500_000));
public static final RegistryObject<CPUItem> CPU_TIER_5 = register("cpu_tier_5", () ->
new CPUItem(5_000_000));
public static final RegistryObject<CPUItem> CPU_TIER_6 = register("cpu_tier_6", () ->
new CPUItem(12_500_000));
///////////////////////////////////////////////////////////////////
public static void initialize() {
ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus());
}
///////////////////////////////////////////////////////////////////
private static <T extends Item> RegistryObject<T> register(final String name, final Supplier<T> factory) {
return ITEMS.register(name, factory);
}
private static <TBlock extends Block, TItem extends Item> RegistryObject<TItem> register(final RegistryObject<TBlock> block, final Function<TBlock, TItem> factory) {
return register(block.getId().getPath(), () -> factory.apply(block.get()));
}
}

View file

@ -0,0 +1,31 @@
package com.cyan.oc2ls.manual;
import com.cyan.oc2ls.OC2LS;
import com.cyan.oc2ls.common.item.Items;
import li.cil.manual.api.ManualModel;
import li.cil.manual.api.Tab;
import li.cil.manual.api.prefab.tab.ItemStackTab;
import li.cil.manual.api.util.Constants;
import net.minecraft.network.chat.Component;
import net.minecraft.world.item.ItemStack;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
@OnlyIn(Dist.CLIENT)
public final class Manuals {
private static final DeferredRegister<Tab> TABS = DeferredRegister.create(Constants.TAB_REGISTRY, Constants.MOD_ID);
///////////////////////////////////////////////////////////////////
public static void initialize() {
TABS.register(FMLJavaModLoadingContext.get().getModEventBus());
TABS.register("oc2ls", () -> new ItemStackTab(
ManualModel.LANGUAGE_KEY + "/oc2ls/index.md",
Component.translatable("manual." + OC2LS.MOD_ID + ".items"),
new ItemStack(Items.CPU_TIER_1.get())));
}
}

View file

@ -4,12 +4,12 @@ issueTrackerURL = "https://github.com/Libre-Computers/LibreComponents/issues"
license = "MIT"
[[mods]]
modId = "oc2rc"
modId = "oc2ls"
version = "${file.jarVersion}"
displayName = "OC2R: Components"
authors = "The Realm 18 Studios"
displayName = "OC2R: Low Spec"
authors = "Cyan"
description = '''
Libre Drives all the extra components you need.
Low spec computing for OC2:R
'''
[[dependencies.oc2rc]]

View file

@ -0,0 +1,18 @@
{
"item_group.oc2ls.common": "OC2R Components",
"manual.oc2ls.items": "OC2R Components",
"item.oc2ls.cpu_tier_1": "CPU Tier 1",
"item.oc2ls.cpu_tier_1.desc": "Processes computer instructions at 500kHz.",
"item.oc2ls.cpu_tier_2": "CPU Tier 2",
"item.oc2ls.cpu_tier_2.desc": "Processes computer instructions at 750kHz.",
"item.oc2ls.cpu_tier_3": "CPU Tier 3",
"item.oc2ls.cpu_tier_3.desc": "Processes computer instructions at 1MHz.",
"item.oc2ls.cpu_tier_4": "CPU Tier 4",
"item.oc2ls.cpu_tier_4.desc": "Processes computer instructions at 2.5MHz.",
"item.oc2ls.cpu_tier_5": "CPU Tier 5",
"item.oc2ls.cpu_tier_5.desc": "Processes computer instructions at 5MHz.",
"item.oc2ls.cpu_tier_6": "CPU Tier 6",
"item.oc2ls.cpu_tier_6.desc": "Processes computer instructions at 12.5MHz."
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/memory_small"
"layer0": "oc2ls:item/cpu_tier_1"
}
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/memory_large"
"layer0": "oc2ls:item/cpu_tier_2"
}
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/memory_medium"
"layer0": "oc2ls:item/cpu_tier_3"
}
}

View file

@ -1,6 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/memory_extra_large"
"layer0": "oc2ls:item/cpu_tier_4"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2ls:item/cpu_tier_5"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2ls:item/cpu_tier_4"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2ls:item/cpu_tier_6"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2ls:item/cpu_tier_5"
}
}

View file

Before

Width:  |  Height:  |  Size: 325 B

After

Width:  |  Height:  |  Size: 325 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 338 B

After

Width:  |  Height:  |  Size: 338 B

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 338 B

View file

@ -1,12 +1,14 @@
# Hard Drive
![Going in circles](item:librecomponents:hard_drive_large)
# Central Processing Unit
![Going in circles](item:librecomponents:cpu_tier_4)
We add the following:
- 32MB
- 64MB
- 128MB
- 256MB
- 500kHz
- 750kHz
- 1MHz
- 2.5MHz
- 5MHz
- 12.5MHz
Computers *have to be shut down* before installing or removing this component. Installing it while the computer is running will have no effect, removing it may lead to system errors.

View file

@ -0,0 +1,4 @@
# Items
This index lists all documented items.
- [CPU](cpu.md)

View file

@ -1,9 +0,0 @@
# Floppy
![It's not the floppy that bends](item:librecomponents:floppy)
We add the following:
- 2MB
- 5MB
[Return](index.md)

View file

@ -1,13 +0,0 @@
# Memory
![Random Access Memories](item:librecomponents:memory_large)
We add the following:
- 32MB
- 64MB
- 128MB
- 256MB
Computers *have to be shut down* before installing or removing this component. Installing it while the computer is running will have no effect, removing it may lead to system errors.
[Return](index.md)

View file

@ -1,22 +0,0 @@
{
"item_group.oc2rc.common": "OC2R Components",
"manual.oc2rc.items": "OC2R Components",
"item.oc2rc.cpu_tier_1": "CPU уровень 5",
"item.oc2rc.cpu_tier_1.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_2": "CPU уровень 6",
"item.oc2rc.cpu_tier_2.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_3": "CPU уровень 7",
"item.oc2rc.cpu_tier_3.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_4": "CPU уровень 8",
"item.oc2rc.cpu_tier_4.desc": "Processes computer instructions.",
"item.oc2rc.floppy": "Дискета",
"item.oc2rc.floppy.desc": "Съемный накопитель для переноса данных между компьютерами.",
"item.oc2rc.floppy_modern": "Современная дискета",
"item.oc2rc.floppy_modern.desc": "Новая версия портативного хранилища, используемого для передачи данных между компьютерами.",
"item.oc2rc.hard_drive": "Жесткий диск",
"item.oc2rc.hard_drive.desc": "Накопитель для операционных систем и данных.",
"item.oc2rc.memory": "Память",
"item.oc2rc.memory.desc": "Оперативное Запоминающее Устройство (ОЗУ). Используется в компьютерах и роботах."
}

View file

@ -1,22 +0,0 @@
{
"item_group.oc2rc.common": "OC2R Components",
"manual.oc2rc.items": "OC2R Components",
"item.oc2rc.cpu_tier_1": "CPU Tier 5",
"item.oc2rc.cpu_tier_1.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_2": "CPU Tier 6",
"item.oc2rc.cpu_tier_2.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_3": "CPU Tier 7",
"item.oc2rc.cpu_tier_3.desc": "Processes computer instructions.",
"item.oc2rc.cpu_tier_4": "CPU Tier 8",
"item.oc2rc.cpu_tier_4.desc": "Processes computer instructions.",
"item.oc2rc.floppy": "软盘",
"item.oc2rc.floppy.desc": "Portable storage used to transfer data between Computers.",
"item.oc2rc.floppy_modern": "现代软盘",
"item.oc2rc.floppy_modern.desc": "用于在计算机之间传输数据的较新版本的便携式存储。",
"item.oc2rc.hard_drive": "硬盘",
"item.oc2rc.hard_drive.desc": "Mass storage for operating systems and data.",
"item.oc2rc.memory": "内存条",
"item.oc2rc.memory.desc": "Random Access Memory (RAM) used in Computers and Robots."
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/floppy_base",
"layer1": "oc2rc:item/floppy_normal"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/floppy_base",
"layer1": "oc2rc:item/floppy_modern"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/hard_drive_base",
"layer1": "oc2rc:item/hard_drive_extra_large"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/hard_drive_base",
"layer1": "oc2rc:item/hard_drive_large"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/hard_drive_base",
"layer1": "oc2rc:item/hard_drive_medium"
}
}

View file

@ -1,7 +0,0 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "oc2rc:item/hard_drive_base",
"layer1": "oc2rc:item/hard_drive_small"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 973 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 974 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -13,7 +13,7 @@
"tag": "forge:ingots/copper"
},
"T": {
"item": "oc2r:cpu_tier_4"
"item": "oc2r:transistor"
},
"S": {
"item": "oc2r:silicon_wafer"
@ -23,6 +23,6 @@
}
},
"result": {
"item": "oc2rc:cpu_tier_1"
"item": "oc2ls:cpu_tier_1"
}
}

View file

@ -13,7 +13,7 @@
"tag": "forge:ingots/copper"
},
"T": {
"item": "oc2rc:cpu_tier_1"
"item": "oc2ls:cpu_tier_1"
},
"S": {
"item": "oc2r:silicon_wafer"
@ -23,6 +23,6 @@
}
},
"result": {
"item": "oc2rc:cpu_tier_2"
"item": "oc2ls:cpu_tier_2"
}
}

View file

@ -13,7 +13,7 @@
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2rc:cpu_tier_2"
"item": "oc2ls:cpu_tier_2"
},
"S": {
"item": "oc2r:silicon_wafer"
@ -23,6 +23,6 @@
}
},
"result": {
"item": "oc2rc:cpu_tier_3"
"item": "oc2ls:cpu_tier_3"
}
}

View file

@ -13,7 +13,7 @@
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2rc:cpu_tier_3"
"item": "oc2ls:cpu_tier_3"
},
"S": {
"item": "oc2r:silicon_wafer"
@ -23,6 +23,6 @@
}
},
"result": {
"item": "oc2rc:cpu_tier_4"
"item": "oc2ls:cpu_tier_4"
}
}

View file

@ -0,0 +1,28 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"NNN",
"TST",
"GBG"
],
"key": {
"N": {
"tag": "forge:gems/emerald"
},
"G": {
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2ls:cpu_tier_4"
},
"S": {
"item": "oc2r:silicon_wafer"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2ls:cpu_tier_5"
}
}

View file

@ -0,0 +1,28 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"NNN",
"TST",
"GBG"
],
"key": {
"N": {
"tag": "forge:gems/emerald"
},
"G": {
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2ls:cpu_tier_3"
},
"S": {
"item": "oc2r:silicon_wafer"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2ls:cpu_tier_4"
}
}

View file

@ -0,0 +1,28 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"NNN",
"TST",
"GBG"
],
"key": {
"N": {
"tag": "forge:gems/emerald"
},
"G": {
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2ls:cpu_tier_5"
},
"S": {
"item": "oc2r:silicon_wafer"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2ls:cpu_tier_6"
}
}

View file

@ -0,0 +1,28 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"NNN",
"TST",
"GBG"
],
"key": {
"N": {
"tag": "forge:gems/emerald"
},
"G": {
"tag": "forge:ingots/gold"
},
"T": {
"item": "oc2ls:cpu_tier_4"
},
"S": {
"item": "oc2r:silicon_wafer"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2ls:cpu_tier_5"
}
}

View file

@ -1,17 +1,11 @@
{
"replace": false,
"values": [
"oc2rc:hard_drive_small",
"oc2rc:hard_drive_medium",
"oc2rc:hard_drive_large",
"oc2rc:hard_drive_extra_large",
"oc2rc:memory_small",
"oc2rc:memory_medium",
"oc2rc:memory_large",
"oc2rc:memory_extra_large",
"oc2rc:cpu_tier_1",
"oc2rc:cpu_tier_2",
"oc2rc:cpu_tier_3",
"oc2rc:cpu_tier_4"
"oc2ls:cpu_tier_1",
"oc2ls:cpu_tier_2",
"oc2ls:cpu_tier_3",
"oc2ls:cpu_tier_4",
"oc2ls:cpu_tier_5",
"oc2ls:cpu_tier_6"
]
}

View file

@ -1,9 +1,11 @@
{
"replace": false,
"values": [
"oc2rc:cpu_tier_1",
"oc2rc:cpu_tier_2",
"oc2rc:cpu_tier_3",
"oc2rc:cpu_tier_4"
"oc2ls:cpu_tier_1",
"oc2ls:cpu_tier_2",
"oc2ls:cpu_tier_3",
"oc2ls:cpu_tier_4",
"oc2ls:cpu_tier_5",
"oc2ls:cpu_tier_6"
]
}

View file

@ -1,7 +0,0 @@
{
"replace": false,
"values": [
"oc2rc:floppy",
"oc2rc:floppy_modern"
]
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"oc2rc:hard_drive_small",
"oc2rc:hard_drive_medium",
"oc2rc:hard_drive_large",
"oc2rc:hard_drive_extra_large"
]
}

View file

@ -1,9 +0,0 @@
{
"replace": false,
"values": [
"oc2rc:memory_small",
"oc2rc:memory_medium",
"oc2rc:memory_large",
"oc2rc:memory_extra_large"
]
}

View file

@ -1,34 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:floppy"
]
},
"criteria": {
"has_disk_drive": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:disk_drive"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:floppy"
}
}
},
"requirements": [
[
"has_disk_drive",
"has_the_recipe"
]
]
}

View file

@ -1,34 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:floppy_modern"
]
},
"criteria": {
"has_disk_drive": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:disk_drive"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:floppy_modern"
}
}
},
"requirements": [
[
"has_disk_drive",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:hard_drive_extra_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:hard_drive_extra_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:hard_drive_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:hard_drive_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:hard_drive_medium"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:hard_drive_medium"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:hard_drive_small"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:hard_drive_small"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:memory_extra_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:memory_extra_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:memory_large"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:memory_large"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:memory_medium"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:memory_medium"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,47 +0,0 @@
{
"parent": "minecraft:recipes/root",
"rewards": {
"recipes": [
"librecomponents:memory_small"
]
},
"criteria": {
"has_computer": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:computer"
]
}
]
}
},
"has_robot": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"oc2:robot"
]
}
]
}
},
"has_the_recipe": {
"trigger": "minecraft:recipe_unlocked",
"conditions": {
"recipe": "librecomponents:memory_small"
}
}
},
"requirements": [
[
"has_computer",
"has_robot",
"has_the_recipe"
]
]
}

View file

@ -1,24 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ITI",
"QBQ"
],
"key": {
"I": {
"item": "oc2r:floppy_modern"
},
"T": {
"item": "oc2r:transistor"
},
"Q": {
"tag": "forge:gems/quartz"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2rc:floppy"
}
}

View file

@ -1,25 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ITI",
"QBQ",
"QBQ"
],
"key": {
"I": {
"item": "oc2rc:floppy"
},
"T": {
"item": "oc2r:transistor"
},
"Q": {
"tag": "forge:gems/quartz"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2rc:floppy_modern"
}
}

View file

@ -1,25 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ETE",
"DBD",
"EBE"
],
"key": {
"D": {
"item": "oc2rc:hard_drive_large"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2rc:hard_drive_extra_large"
}
}

View file

@ -1,24 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"DTD",
"EBE"
],
"key": {
"D": {
"item": "oc2rc:hard_drive_medium"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2rc:hard_drive_large"
}
}

View file

@ -1,24 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"GTG",
"EBE"
],
"key": {
"G": {
"item": "oc2rc:hard_drive_small"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2rc:hard_drive_medium"
}
}

View file

@ -1,24 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ITI",
"EBE"
],
"key": {
"I": {
"item": "oc2r:hard_drive_extra_large"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2rc:hard_drive_small"
}
}

View file

@ -1,25 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"DTD",
"EBE",
"DTD"
],
"key": {
"D": {
"item": "oc2rc:memory_large"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
},
"E": {
"tag": "forge:gems/emerald"
}
},
"result": {
"item": "oc2rc:memory_extra_large"
}
}

View file

@ -1,21 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"DTD",
" B "
],
"key": {
"D": {
"item": "oc2rc:memory_medium"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2rc:memory_large"
}
}

View file

@ -1,21 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"GTG",
" B "
],
"key": {
"G": {
"item": "oc2rc:memory_small"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2rc:memory_medium"
}
}

View file

@ -1,21 +0,0 @@
{
"type": "minecraft:crafting_shaped",
"pattern": [
"ITI",
" B "
],
"key": {
"I": {
"item": "oc2r:memory_extra_large"
},
"T": {
"item": "oc2r:transistor"
},
"B": {
"item": "oc2r:circuit_board"
}
},
"result": {
"item": "oc2rc:memory_small"
}
}