Mineuniverse
Log in Register
Mods

MJUtils

Mod-lib for MJaroslav's mods.
by MJaroslav
Claim this project
54,643 downloads
0 likes
Updated Jun 30, 2026
0 hypes

MJUtils

A set of tools to simplify writing mods. It contains a modular system for initialization of mods and a system of configurations by annotations.

The source code contains the documentation.

If you are using ResearchItemCopy, you must add the following dependency: "required-after:Thaumcraft;".

You can send a pull request if you find grammar errors.

 

Modular system examples

Add module and configuration handlers to the main mod class:

package your.path;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLConstructionEvent;
import mjaroslav.mcmods.mjutils.module.ModuleSystem;
import mjaroslav.mcmods.mjutils.module.AnnotationBasedConfiguration;

@Mod(modid = "your_modid", version = "0.0.0", name = "Module example mod")
public class ModExample {
    // Handler for annotation configurations.
    private static AnnotationBasedConfiguration config;
    // Handler for work with modules.
    private static ModuleSystem modSys;
    
    @EventHandler
    public void construct(FMLConstructionEvent event) {
        // The second argument is logger.
        config = new AnnotationBasedConfiguration("your_modid", null);
        // The third argument is a proxy.
        modSys = new ModuleSystem(MODID, config, null);
        // Find all modules and create their instances..
        modSys.initSystem(event);
    }
    
    // DON'F FORGET CALL ALL INITIALIZATION METHODS:
    @EventHandler
    public void preInit(FMLPreInitializationEvent event) {
        modSys.preInit(event);
    }
    
    @EventHandler
    public void init(FMLInitializationEvent event) {
        modSys.init(event);
    }
    
    @EventHandler
    public void postInit(FMLPostInitializationEvent event) {
        modSys.postInit(event);
    }
}

 Now you can create simple module:

package your.path;

import cpw.mods.fml.common.event.FMLPreInitializationEvent;
//import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import mjaroslav.mcmods.mjutils.module.Modular;
import mjaroslav.mcmods.mjutils.module.Module;

// All classes with Module annotation must implement the Modular
// interface.
@Module("your_modid")
public class ModuleExample implements Modular {
    @Override
    public void preInit(FMLPreInitializationEvent event) {
        System.out.println("Hi! I'm in pre init!");
    }
    
//    All interface methods that can be neglected contain the default
//    implementation: you can inherit them only when necessary.
//    
//    @Override
//    public void init(FMLInitializationEvent event) {
//        System.out.println("I'm ignored :c");
//    }
    
    @Override
    public void postInit(FMLPostInitializationEvent event) {
        System.out.println("Hi! I'm in post init!");
    }
}

 An example of creating an annotation configuration:

 

package your.path;

import mjaroslav.mcmods.mjutils.module.ConfigurationCategory;
import mjaroslav.mcmods.mjutils.module.ConfigurationProperty;

@ConfigurationCategory(modID = "your_modid", name = ConfigurationCategory.GENERAL_NAME,
        comment = ConfigurationCategory.GENERAL_COMMENT)
public class CategoryGeneral {
    @ConfigurationCategory(name = "subcategory")
    public static class SubCategory {
        @ConfigurationProperty(defaultBoolean = true)
        public static boolean test;

        @ConfigurationProperty(name = "test2", defaultInt = 1)
        public static int test1;
    }
    
    @ConfigurationProperty(defaultDouble = Math.E)
    public static double e;
}

 Use the documentation to find out more info about library usages.

No files available for download.

More from MJaroslav

ThaumOres
75,900
BookStealer
6,897
UnbreakEn
35,144
Villager Mantle Fix
31,525
Realistic Brewing Stand
28,624
Train Diesel Fix
23,679

You Might Also Like

Vivecraft
A Minecraft VR mod on a loader of your choice!
9,988,339
Athena
A crossplatform (Forge/Fabric) solution to connected block textures for 1.19.4+
99,799,527
Lodestone
A collection of code used throughout projects under the Lodestar team.
9,914,417
TheDragonLib
A library for most of sokratis12GR's Mods
9,910,232
Multi Mob Library
A library mod containing essential files for Daveyx0's mob mods
9,892,767
FTB Library (Forge) (Legacy)
FTB Library is a library mod that is used for some of our mods.
98,265,314