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

MJUtils 1.6.1

Нет прав для скачивания

MJaroslav

Динозавр
1,008
30
174
MJaroslav добавил(а) новый ресурс:

MJUtils - Библиотека с утилитами, аннотациями конфигурации и модульной системой инициализации.

MJUtils

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

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

Если вы пользуетесь связанными с Thaumcraft вещами, то добавьте его в зависимости мода: "required-after:Thaumcraft;".

Если вы найдете ошибки (в том числе и грамматические, например, в документации), можете отправить pull request.

Пример модульной...

Узнать больше об этом ресурсе...
 
6,870
301
1,413
Где актуальность? Где описания преимуществ?
 

MJaroslav

Динозавр
1,008
30
174
@hohserg, просто обновил свою либу, чтобы написать что-то с контентом.

А описание, пожалуй, да, нужно переделать.
 

MJaroslav

Динозавр
1,008
30
174

MJaroslav

Динозавр
1,008
30
174
Ну я к тому, что один раз вызвать для модульной системы и теперь каждому модулю этого делать не надо (мун)
 

MJaroslav

Динозавр
1,008
30
174
В стопицотый раз переписываю всю либу, пока что остановился на таком варианте модулей:

Главный класс мода:
package com.github.mjaroslav.mjutils.example;

import com.github.mjaroslav.mjutils.example.common.CommonProxy;
import com.github.mjaroslav.mjutils.example.lib.ModInfo;
import com.github.mjaroslav.mjutils.modular.ModuleLoader;
import com.github.mjaroslav.mjutils.modular.SubscribeLoader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.SidedProxy;

@Mod(modid = ModInfo.modId, name = ModInfo.name, version = ModInfo.version, dependencies = ModInfo.dependencies,
        guiFactory = ModInfo.guiFactory)
public class MJUtilsExample {
    @SidedProxy(clientSide = ModInfo.clientProxy, serverSide = ModInfo.serverProxy)
    public static CommonProxy proxy; // Автоматически цепляется прокси, если он унаследован от Proxy из пакета модульной системы.

    @SubscribeLoader
    public static ModuleLoader loader; // Просто создаем статик поле загрузчика модулей и подписываем его.
}

Пример модуля, в котором также присутствует конфиг аннотаций:
package com.github.mjaroslav.mjutils.example.common.modular;

import com.github.mjaroslav.mjutils.configurator.AnnotationConfigurator;
import com.github.mjaroslav.mjutils.example.lib.CategoryRoot;
import com.github.mjaroslav.mjutils.example.lib.ModInfo;
import com.github.mjaroslav.mjutils.modular.SubscribeModule;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import lombok.extern.log4j.Log4j2;

@SubscribeModule
@Log4j2
public class ExampleModule { // Теперь не нужно ничего наследовать и/или реализовывать. Нужно просто подписать класс.
    public static final AnnotationConfigurator config = new AnnotationConfigurator(ModInfo.modId, ModInfo.modId, CategoryRoot.class);

    public void listen(FMLPreInitializationEvent event) { // Да, тупо создаем listen метод с любым FMLState эвентом (+ IMC).
        config.load();
        log.info("Hello world from ExampleModule!");
    }
}

Как доделаю весь остальной контент (а я думаю, мне осталось немного), залью, задокументирую (гайд сделаю) и, скорее всего, сделаю ребрендинг.
 
6,870
301
1,413
Можно ли сделать ExampleModule енумом с одним значением? Это должно быть удобно как альтернатива статических слушателей событий в более свежих версиях
 

GoogleTan

Картошка :3
1,323
41
297
Порт на 1.14+ и будет топчик.
 
6,870
301
1,413
Java:
@SubscribeModule
@Log4j2
public enum ExampleModule { // Теперь не нужно ничего наследовать и/или реализовывать. Нужно просто подписать класс.
 
6,870
301
1,413
Сверху