Registry helper
Registry helper is a class that is responsible of holding registries and helping developer handle some of the registrations (Menu types for example).
- Create class
ModRegistriesInit.java(in packageregistry)Directorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModRegistriesInit.java
- ExampleMod.java
- …
ModRegistriesInit.java import dev.tauri.jsg.core.common.registry.helper.RegistryHelper;import net.minecraftforge.eventbus.api.IEventBus;public class ModRegistriesInit {// create a constant object of the RegistryHelperpublic static final RegistryHelper REGISTRY_HELPER = new RegistryHelper("your_mod_id");// declare init methodpublic static void init() {// we will be putting stuff here...}// and register methodpublic static void register(IEventBus bus) {REGISTRY_HELPER.register(bus); // IMPORTANT!}} - Inside your main class update the constructor:
Directorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModRegistriesInit.java
- ExampleMod.java
- …
ExampleMod.java @Mod("your_mod_id")public class ExampleMod implements JSGAddon {public ExampleMod(){// ...ModRegistriesInit.init(); // inicialize the registries (load all constants etc.)// ...some other registrations and stuff// if you don't have already one, get the IEventBusIEventBus eventBus = FMLJavaModLoadingContext.get().getModEventBus();// IMPORTANT!ModRegistriesInit.register(eventBus); // register the registries// ...}} - Now you have set up a registry helper for your mod!
Registering an item
Section titled “Registering an item”- Create class
ModItems.javaDirectorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModItems.java
- ModRegistriesInit.java
- ExampleMod.java
- …
ModItems.java import dev.tauri.jsg.core.common.item.JSGItem;import dev.tauri.jsg.core.common.registry.helper.builder.item.ItemRegistryHelperGeneric;import net.minecraftforge.registries.RegistryObject;import dev.tauri.jsg.core.common.registry.CoreTabs; // only needed when using CoreTabspublic class ModItems {// create item registry helperpublic static final ItemRegistryHelperGeneric ITEM_HELPER = new ItemRegistryHelperGeneric(ModRegistriesInit.REGISTRY_HELPER::item);// register your itempublic static final RegistryObject<JSGItem> MY_AWESOME_ITEM = ITEM_HELPER.builder("my_awesome_item").buildGeneric();// register more items...public static final RegistryObject<JSGItem> ANOTHER_COOL_ITEM = ITEM_HELPER.builder("another_cool_item").buildGeneric();// item without generic tooltippublic static final RegistryObject<JSGItem> ITEM_WITHOUT_TOOLTIP = ITEM_HELPER.builder("item_without_tooltip").clearTooltip().buildGeneric();// item inside core tabpublic static final RegistryObject<JSGItem> ITEM_IN_TAB = ITEM_HELPER.builder("item_in_tab").setInTabs(List.of(CoreTabs.TAB_RESOURCES)).buildGeneric();// this method will be called from the init() in ModRegistriesInit.javapublic static void init() {}} - Update your
ModRegistriesInit.javaDirectorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModItems.java
- ModRegistriesInit.java
- ExampleMod.java
- …
ModRegistriesInit.java public class ModRegistriesInit {// ...public static void init() {// ...ModItems.init(); // init the mod items}// ...}
Registering a block
Section titled “Registering a block”- Create class
ModBlocks.javaDirectorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModBlocks.java
- ModRegistriesInit.java
- ExampleMod.java
- …
ModBlocks.java import dev.tauri.jsg.core.common.registry.helper.builder.block.BlockRegistryHelperGeneric;import dev.tauri.jsg.core.common.registry.CoreTabs; // only needed when using CoreTabsimport net.minecraft.world.level.block.Block;import net.minecraftforge.registries.RegistryObject;public class ModBlocks {// create block registry helperpublic static final BlockRegistryHelperGeneric BLOCK_HELPER = new BlockRegistryHelperGeneric(ModRegistriesInit.REGISTRY_HELPER::block);// register your blockpublic static final RegistryObject<Block> MY_AWESOME_BLOCK = BLOCK_HELPER.builder("my_awesome_block").buildGeneric();// this method will be called from the init() in ModRegistriesInit.javapublic static void init() {}} - Update your
ModRegistriesInit.javaDirectorylibs/
- …
Directorysrc/main/java/your/namespace/your_mod_id/
Directorycommon/
Directoryregistry/
- ModBlocks.java
- ModRegistriesInit.java
- ExampleMod.java
- …
ModRegistriesInit.java public class ModRegistriesInit {// ...public static void init() {// ...ModBlocks.init(); // init the mod blocks}// ...}