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.