прогрузить ForgeConfigSpec сразу после регистрации

Версия Minecraft
1.18.1
API
Forge
627
72
178
всем привет. использую конфиг ForgeConfigSpec, чтобы держать несколько булевых переменных, и основываясь на них регистрировать предметы через DeferredRegister прямо из конструктора главного класса. возникла такая проблема, что после вызова ModLoadingContext.registerConfig фордж не сразу подгружает данные из конфига и использует только дефолтные значения, собственно это и не даёт мне сделать рабочую проверку на возможность регистрации предметов. вопрос: могу ли я вызвать прогрузку своего конфига в нужный мне момент? или куда я могу сдвинуть регистрацию через DeferredRegister, чтобы она вызывалась позже прогрузки конфига?1646425213359.png
Java:
ModLoadingContext.get().registerConfig(ModConfig.Type.COMMON, AmethystToolsModConfig.spec);
        ITEMS_REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus());
        ENTITY_REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus());
        RECIPES_REGISTRY.register(FMLJavaModLoadingContext.get().getModEventBus());
 
Последнее редактирование:
Решение
всё гораздо проще, в исходниках Tetra нашёл другой способ регистрации конфига. создаём в классе конфига такой метод
Java:
    public static void setup() {
        CommentedFileConfig configData = CommentedFileConfig.builder(FMLPaths.CONFIGDIR.get().resolve("сonfigname.toml"))
                .sync()
                .autosave()
                .preserveInsertionOrder()
                .writingMode(WritingMode.REPLACE)
                .build();
        configData.load();
        spec.setConfig(configData);

    }
и вызываем его вместо ModLoadingContext.get().registerConfig. вуаля, конфиг прогружается еще до вызова регистрации. проблема решена
36
3
9
Поидее, DeferredRegister отрабатывает во время события регистрации предмета. Если там ещё не доступен конфиг, то регистрировать позже не вариант. Вряд ли можно заставить его загрузить значения раньше. Но можно сделать доп. конфиг для только предметов в json формате - в майне всё для этого есть из коробки.
 
627
72
178
всё гораздо проще, в исходниках Tetra нашёл другой способ регистрации конфига. создаём в классе конфига такой метод
Java:
    public static void setup() {
        CommentedFileConfig configData = CommentedFileConfig.builder(FMLPaths.CONFIGDIR.get().resolve("сonfigname.toml"))
                .sync()
                .autosave()
                .preserveInsertionOrder()
                .writingMode(WritingMode.REPLACE)
                .build();
        configData.load();
        spec.setConfig(configData);

    }
и вызываем его вместо ModLoadingContext.get().registerConfig. вуаля, конфиг прогружается еще до вызова регистрации. проблема решена
 
Сверху