diff --git a/build.gradle b/build.gradle index 6547bbe..c174096 100644 --- a/build.gradle +++ b/build.gradle @@ -31,7 +31,7 @@ def getGitRef() { } version = "${semver}+${getGitRef()}" -group = "li.cil.oc2r" +group = "com.therealm18studios.librecomponents" java.toolchain.languageVersion = JavaLanguageVersion.of(17) diff --git a/src/main/java/com/therealm18studios/lc/LibreComponents.java b/src/main/java/com/therealm18studios/lc/LibreComponents.java index c7ae1bd..2b8bd7b 100644 --- a/src/main/java/com/therealm18studios/lc/LibreComponents.java +++ b/src/main/java/com/therealm18studios/lc/LibreComponents.java @@ -2,7 +2,10 @@ package com.therealm18studios.lc; import com.therealm18studios.lc.common.item.ItemGroup; import com.therealm18studios.lc.common.item.Items; +import com.therealm18studios.lc.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; @@ -16,6 +19,7 @@ public final class LibreComponents { ConfigManager.initialize(); Items.initialize(); + DistExecutor.unsafeRunWhenOn(Dist.CLIENT, () -> Manuals::initialize); ItemGroup.TAB_REGISTER.register(FMLJavaModLoadingContext.get().getModEventBus()); } } diff --git a/src/main/java/com/therealm18studios/lc/common/item/ItemGroup.java b/src/main/java/com/therealm18studios/lc/common/item/ItemGroup.java index e9fa4ab..c200f08 100644 --- a/src/main/java/com/therealm18studios/lc/common/item/ItemGroup.java +++ b/src/main/java/com/therealm18studios/lc/common/item/ItemGroup.java @@ -16,7 +16,7 @@ public final class ItemGroup { // Set name of tab to display .title(Component.translatable("item_group." + LibreComponents.MOD_ID + ".common")) // Set icon of creative tab - .icon(() -> new ItemStack(li.cil.oc2.common.item.Items.COMPUTER.get())) + .icon(() -> new ItemStack(Items.HARD_DRIVE_EXTRA_LARGE.get())) // Add default items to tab .displayItems((params, output) -> { // Items diff --git a/src/main/java/com/therealm18studios/lc/common/item/Items.java b/src/main/java/com/therealm18studios/lc/common/item/Items.java index fa72fff..148083e 100644 --- a/src/main/java/com/therealm18studios/lc/common/item/Items.java +++ b/src/main/java/com/therealm18studios/lc/common/item/Items.java @@ -1,91 +1,71 @@ package com.therealm18studios.lc.common.item; import com.therealm18studios.lc.LibreComponents; -import li.cil.oc2.common.item.*; +import li.cil.oc2.common.item.MemoryItem; +import li.cil.oc2.common.item.HardDriveItem; +import li.cil.oc2.common.item.CPUItem; +import li.cil.oc2.common.item.FloppyItem; 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 ITEMS; - public static final RegistryObject MEMORY_SMALL; - public static final RegistryObject MEMORY_MEDIUM; - public static final RegistryObject MEMORY_LARGE; - public static final RegistryObject MEMORY_EXTRA_LARGE; - public static final RegistryObject HARD_DRIVE_SMALL; - public static final RegistryObject HARD_DRIVE_MEDIUM; - public static final RegistryObject HARD_DRIVE_LARGE; - public static final RegistryObject HARD_DRIVE_EXTRA_LARGE; - public static final RegistryObject CPU_TIER_1; - public static final RegistryObject CPU_TIER_2; - public static final RegistryObject CPU_TIER_3; - public static final RegistryObject CPU_TIER_4; - public static final RegistryObject FLOPPY; - public static final RegistryObject FLOPPY_MODERN; + private static final DeferredRegister ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, LibreComponents.MOD_ID); - public Items() { - } + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject MEMORY_SMALL = register("memory_small", () -> + new MemoryItem(33554432)); + public static final RegistryObject MEMORY_MEDIUM = register("memory_medium", () -> + new MemoryItem(67108864)); + public static final RegistryObject MEMORY_LARGE = register("memory_large", () -> + new MemoryItem(134217728)); + public static final RegistryObject MEMORY_EXTRA_LARGE = register("memory_extra_large", () -> + new MemoryItem(268435456)); + + public static final RegistryObject HARD_DRIVE_SMALL = register("hard_drive_small", () -> + new HardDriveItem(33554432, DyeColor.LIGHT_GRAY)); + public static final RegistryObject HARD_DRIVE_MEDIUM = register("hard_drive_medium", () -> + new HardDriveItem(67108864, DyeColor.GREEN)); + public static final RegistryObject HARD_DRIVE_LARGE = register("hard_drive_large", () -> + new HardDriveItem(134217728, DyeColor.CYAN)); + public static final RegistryObject HARD_DRIVE_EXTRA_LARGE = register("hard_drive_extra_large", () -> + new HardDriveItem(268435456, DyeColor.YELLOW)); + + public static final RegistryObject CPU_TIER_1 = register("cpu_tier_1", () -> + new CPUItem(250000000)); + public static final RegistryObject CPU_TIER_2 = register("cpu_tier_2", () -> + new CPUItem(300000000)); + public static final RegistryObject CPU_TIER_3 = register("cpu_tier_3", () -> + new CPUItem(350000000)); + public static final RegistryObject CPU_TIER_4 = register("cpu_tier_4", () -> + new CPUItem(400000000)); + + public static final RegistryObject FLOPPY = register("floppy", () -> + new FloppyItem(2949120)); + public static final RegistryObject FLOPPY_MODERN = register("floppy_modern", () -> + new FloppyItem(5898240)); + + /////////////////////////////////////////////////////////////////// public static void initialize() { ITEMS.register(FMLJavaModLoadingContext.get().getModEventBus()); } - private static RegistryObject register(String name) { - return register(name, ModItem::new); - } + /////////////////////////////////////////////////////////////////// - private static RegistryObject register(String name, Supplier factory) { + private static RegistryObject register(final String name, final Supplier factory) { return ITEMS.register(name, factory); } - static { - ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, LibreComponents.MOD_ID); - MEMORY_SMALL = register("memory_small", () -> { - return new MemoryItem(33554432); - }); - MEMORY_MEDIUM = register("memory_medium", () -> { - return new MemoryItem(67108864); - }); - MEMORY_LARGE = register("memory_large", () -> { - return new MemoryItem(134217728); - }); - MEMORY_EXTRA_LARGE = register("memory_extra_large", () -> { - return new MemoryItem(268435456); - }); - HARD_DRIVE_SMALL = register("hard_drive_small", () -> { - return new HardDriveItem(33554432, DyeColor.PINK); - }); - HARD_DRIVE_MEDIUM = register("hard_drive_medium", () -> { - return new HardDriveItem(67108864, DyeColor.RED); - }); - HARD_DRIVE_LARGE = register("hard_drive_large", () -> { - return new HardDriveItem(134217728, DyeColor.BLUE); - }); - HARD_DRIVE_EXTRA_LARGE = register("hard_drive_extra_large", () -> { - return new HardDriveItem(268435456, DyeColor.BLACK); - }); - CPU_TIER_1 = register("cpu_tier_1", () -> { - return new CPUItem(250000000); - }); - CPU_TIER_2 = register("cpu_tier_2", () -> { - return new CPUItem(300000000); - }); - CPU_TIER_3 = register("cpu_tier_3", () -> { - return new CPUItem(350000000); - }); - CPU_TIER_4 = register("cpu_tier_4", () -> { - return new CPUItem(400000000); - }); - FLOPPY = register("floppy", () -> { - return new FloppyItem(2949120); - }); - FLOPPY_MODERN = register("floppy_modern", () -> { - return new FloppyItem(5898240); - }); + private static RegistryObject register(final RegistryObject block, final Function factory) { + return register(block.getId().getPath(), () -> factory.apply(block.get())); } } diff --git a/src/main/java/com/therealm18studios/lc/manual/Manuals.java b/src/main/java/com/therealm18studios/lc/manual/Manuals.java new file mode 100644 index 0000000..3f0895f --- /dev/null +++ b/src/main/java/com/therealm18studios/lc/manual/Manuals.java @@ -0,0 +1,51 @@ +package com.therealm18studios.lc.manual; + +import com.therealm18studios.lc.LibreComponents; +import com.therealm18studios.lc.common.item.Items; +import li.cil.manual.api.ManualModel; +import li.cil.manual.api.Tab; +import li.cil.manual.api.prefab.Manual; +import li.cil.manual.api.prefab.provider.NamespaceDocumentProvider; +import li.cil.manual.api.prefab.provider.NamespacePathProvider; +import li.cil.manual.api.prefab.tab.ItemStackTab; +import li.cil.manual.api.provider.DocumentProvider; +import li.cil.manual.api.provider.PathProvider; +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; +import net.minecraftforge.registries.RegistryObject; + +@OnlyIn(Dist.CLIENT) +public final class Manuals { + + private static final DeferredRegister MANUALS = DeferredRegister.create(Constants.MANUAL_REGISTRY, Constants.MOD_ID); + private static final DeferredRegister PATH_PROVIDERS = DeferredRegister.create(Constants.PATH_PROVIDER_REGISTRY, Constants.MOD_ID); + private static final DeferredRegister CONTENT_PROVIDERS = DeferredRegister.create(Constants.DOCUMENT_PROVIDER_REGISTRY, Constants.MOD_ID); + private static final DeferredRegister TABS = DeferredRegister.create(Constants.TAB_REGISTRY, Constants.MOD_ID); + + /////////////////////////////////////////////////////////////////// + + public static final RegistryObject MANUAL = MANUALS.register("manual", Manual::new); + + /////////////////////////////////////////////////////////////////// + + public static void initialize() { + MANUALS.register(FMLJavaModLoadingContext.get().getModEventBus()); + + PATH_PROVIDERS.register(FMLJavaModLoadingContext.get().getModEventBus()); + CONTENT_PROVIDERS.register(FMLJavaModLoadingContext.get().getModEventBus()); + TABS.register(FMLJavaModLoadingContext.get().getModEventBus()); + + PATH_PROVIDERS.register("path_provider", () -> new NamespacePathProvider(LibreComponents.MOD_ID)); + CONTENT_PROVIDERS.register("content_provider", () -> new NamespaceDocumentProvider(LibreComponents.MOD_ID, "doc")); + + TABS.register("librecomponents", () -> new ItemStackTab( + ManualModel.LANGUAGE_KEY + "/librecomponents/index.md", + Component.translatable("manual." + LibreComponents.MOD_ID + ".items"), + new ItemStack(Items.HARD_DRIVE_EXTRA_LARGE.get()))); + } +} diff --git a/src/main/resources/assets/librecomponents/doc/en_us/librecomponents.md b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents.md new file mode 100644 index 0000000..e3a0c1b --- /dev/null +++ b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents.md @@ -0,0 +1,5 @@ +# The Component Handbook +Hello, greetings, welcome! If you've come here, you either stumbled in by accident, are interested in [item](librecomponents/index.md) information? + +If you're looking for information on a particular item, have a look at the respective glossaries: +- [List of items](librecomponents/index.md) diff --git a/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/floppy.md b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/floppy.md new file mode 100644 index 0000000..307acf9 --- /dev/null +++ b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/floppy.md @@ -0,0 +1,7 @@ +# Floppy +![It's not the floppy that bends](item:librecomponents:floppy) + +We add the following: + +- 2MB +- 5MB diff --git a/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/hard_drive.md b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/hard_drive.md new file mode 100644 index 0000000..7d9df23 --- /dev/null +++ b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/hard_drive.md @@ -0,0 +1,11 @@ +# Hard Drive +![Going in circles](item:librecomponents:hard_drive_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. diff --git a/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/index.md b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/index.md new file mode 100644 index 0000000..c4f6dfe --- /dev/null +++ b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/index.md @@ -0,0 +1,6 @@ +# Items +This index lists all documented items. + +- [Floppy](floppy.md) +- [Hard Drive](hard_drive.md) +- [Memory](memory.md) diff --git a/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/memory.md b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/memory.md new file mode 100644 index 0000000..1e6cada --- /dev/null +++ b/src/main/resources/assets/librecomponents/doc/en_us/librecomponents/memory.md @@ -0,0 +1,11 @@ +# 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. diff --git a/src/main/resources/assets/librecomponents/lang/en_us.json b/src/main/resources/assets/librecomponents/lang/en_us.json index 2ac0e35..0af94bc 100644 --- a/src/main/resources/assets/librecomponents/lang/en_us.json +++ b/src/main/resources/assets/librecomponents/lang/en_us.json @@ -1,6 +1,8 @@ { "item_group.librecomponents.common": "Libre Components", + "manual.librecomponents.items": "Libre Components", + "item.librecomponents.cpu_tier_1": "CPU Tier 5", "item.librecomponents.cpu_tier_1.desc": "Processes computer instructions.", "item.librecomponents.cpu_tier_2": "CPU Tier 6",