
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;".
Обратитесь к документации для получения дополнительной информации о возможностях библиотеки.