MJUtils
Активный0.0
Установок
Последнее обновление
MJUtils
Набор инструментов для упрощения разработки модов Minecraft. Библиотека включает модульную систему для инициализации модификаций и аннотационную систему конфигураций.
Исходный код содержит подробную документацию по использованию всех функций.
Примеры использования модульной системы
Для подключения модулей и обработчиков конфигураций к основному классу мода:
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);
}
}
Создание простого модуля:
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("Привет! Я в pre init!");
}
// Все методы интерфейса, которые можно игнорировать, содержат стандартную
// реализацию: вы можете наследовать их только при необходимости
//
// @Override
// public void init(FMLInitializationEvent event) {
// System.out.println("Меня игнорируют :с");
// }
@Override
public void postInit(FMLPostInitializationEvent event) {
System.out.println("Привет! Я в post init!");
}
}
Пример создания аннотационной конфигурации:
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;
}
Для использования ResearchItemCopy необходимо добавить зависимость: "required-after:Thaumcraft;".
Обратитесь к документации для получения дополнительной информации о возможностях библиотеки.