Иконка ресурса

MJUtils 1.6.1

Нет прав для скачивания
Версия(и) Minecraft
1.7.10
MJUtils

Набор утилит для упрощенного написания модов. Содержит в себе модульную систему инициализации модов и систему обработки конфигураций через аннотации.

Исходный код имеет документацию.

Если вы пользуетесь связанными с 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;
}


Используйте документацию, чтобы найти все применения библиотеки.
  • Чего!?
Реакции: xmafee и BestFoxy
Автор
MJaroslav
Скачивания
10
Просмотры
1,110
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя MJaroslav

Последние обновления

  1. Небольшие фиксы.

    Конфигурация хуков перенесена в директорию ./config. Исправлено: не работали ограничения int...
Сверху