Download MJUtils — Minecraft Mods — MetaMods

MJUtils

Active

Downloads

1

Last update

6 years ago
Client
Fabric
Quilt
Forge
Neoforge
Libraries

MJUtils

A toolkit designed to simplify Minecraft mod development. The library features a modular system for mod initialization and an annotation-based configuration system.

Source code includes comprehensive documentation for all features.

Examples of Modular System Usage

To integrate modules and configuration handlers into 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 {
    // Annotation configuration handler
    private static AnnotationBasedConfiguration config;
    // Module work handler
    private static ModuleSystem modSys;

    @EventHandler
    public void construct(FMLConstructionEvent event) {
        // Second argument is logger
        config = new AnnotationBasedConfiguration("your_modid", null);
        // Third argument is proxy
        modSys = new ModuleSystem(MODID, config, null);
        // Find all modules and create their instances
        modSys.initSystem(event);
    }

    // DON'T FORGET TO 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);
    }
}

Creating a 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("Hello! I'm in pre init!");
    }

//    All interface methods that can be ignored contain default
//    implementation: you can inherit them only when necessary
//
// @Override // public void init(FMLInitializationEvent event) { // System.out.println("I'm ignored :с"); // } @Override public void postInit(FMLPostInitializationEvent event) { System.out.println("Hello! I'm in post init!"); } }

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;
}

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

Refer to the documentation for additional information about library capabilities.

Project members
MJaroslav

MJaroslav

Created: 6 May 2019

ID: 32035