- Версия(и) Minecraft
- 1.7.10
MJUtils
Набор утилит для упрощенного написания модов. Содержит в себе модульную систему инициализации модов и систему обработки конфигураций через аннотации.
Исходный код имеет документацию.
Если вы пользуетесь связанными с Thaumcraft вещами, то добавьте его в зависимости мода: "required-after:Thaumcraft;".
Если вы найдете ошибки (в том числе и грамматические, например, в документации), можете отправить pull request.
Пример модульной системы
Добавим обработчики для модулей и конфигураций в главный класс мода:
Теперь можно создать простой модуль:
И пример создания конфигурации по аннотациям:
Используйте документацию, чтобы найти все применения библиотеки.
Набор утилит для упрощенного написания модов. Содержит в себе модульную систему инициализации модов и систему обработки конфигураций через аннотации.
Исходный код имеет документацию.
Если вы пользуетесь связанными с Thaumcraft вещами, то добавьте его в зависимости мода: "required-after:Thaumcraft;".
Если вы найдете ошибки (в том числе и грамматические, например, в документации), можете отправить pull request.
Пример модульной системы
Добавим обработчики для модулей и конфигураций в главный класс мода:
Java:
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 {
// Обработчик аннотаций конфигураций.
private static AnnotationBasedConfiguration config;
// Обработчик для модулей.
private static ModuleSystem modSys;
@EventHandler
public void construct(FMLConstructionEvent event) {
// Вторым аргументом является логгер.
config = new AnnotationBasedConfiguration("your_modid", null);
// Третим аргументом является прокси.
modSys = new ModuleSystem(MODID, config, null);
// Найти все модули и создать их объекты...
modSys.initSystem(event);
}
// НЕ ЗАБУДЬТЕ ВЫЗВАТЬ ВСЕ МЕТОДЫ ИНИЦИАЛИЗАЦИИ:
@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);
}
}
Теперь можно создать простой модуль:
Java:
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;
// Все классы с Module аннотацией должны реализовывать Modular
// интерфейс.
@Module("your_modid")
public class ModuleExample implements Modular {
@Override
public void preInit(FMLPreInitializationEvent event) {
System.out.println("Привет, я пре инициализация!");
}
// Все методы интерфейсов, которыми можно пренебречь
// имеют default реализацию и их можно не наследовать.
//
// @Override
// public void init(FMLInitializationEvent event) {
// System.out.println("Меня игнорируют :c");
// }
@Override
public void postInit(FMLPostInitializationEvent event) {
System.out.println("Привет, я пост инициализация!");
}
}
И пример создания конфигурации по аннотациям:
Java:
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;
}
Используйте документацию, чтобы найти все применения библиотеки.