Скачать YACL Synced — Minecraft Моды — MetaMods

YACL Synced

Активный

Установок

0

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

4 месяца назад

Версии

1.21 — 1.21.1
Клиент и сервер
Fabric
Neoforge
Библиотеки
Управление
Утилиты

YACL Synced

Это расширение для библиотеки YetAnotherConfigLib, которое реализует синхронизацию конфигураций между клиентом и сервером.

Важно: это библиотечная модификация, которая не работает самостоятельно без модов, зависящих от неё!

Что такое синхронизация?

YACL предоставляет разработчикам удобный инструмент для создания конфигурационных интерфейсов в Minecraft, но не поддерживает автоматическую синхронизацию между серверными и клиентскими настройками. YACL Synced добавляет именно эту функциональность, обеспечивая согласованность конфигураций в многопользовательской среде.

Для разработчиков

Установка

Для подключения библиотеки к проекту добавьте в build.gradle следующие репозитории и зависимости:

// build.gradle
repositories {
    // Требуется только для Forge (нужно для YACL)
    maven { 
        name = 'Kotlin for Forge'
        url = 'https://thedarkcolour.github.io/KotlinForForge/'
    }

    maven {
        name 'Xander Maven'
        url 'https://maven.isxander.dev/releases'
    }

    maven {
        name = "Tiger Maven"
        url = "https://maven.tigercrl.top/releases/"
    }
}

dependencies {
    modImplementation "top.tigercrl:YACLSynced-<common/fabric/neoforge>:<version>"
}

Использование

Конфигурации создаются похожим на YACL способом, но с использованием SyncedConfigClassHandler:

public class CommonConfig {
    public static final ConfigClassHandler<CommonConfig> HANDLER = SyncedConfigClassHandler.createBuilder(CommonConfig.class)
            .id(YACLPlatform.rl("yacl3-test", "config"))
            .serializer(config -> GsonConfigSerializerBuilder.create(config)
                    .setPath(YACLPlatform.getConfigDir().resolve("yacl-test-v2.json5"))
                    .setJson5(true)
                    .build())
            .build();

    // ...
}

На обеих сторонах можно использовать HANDLER.instance() для получения экземпляра конфигурации.

На клиентской стороне также доступны HANDLER.localInstance() и HANDLER.remoteInstance() для доступа к локальной и серверной конфигурациям.

Обнаружение несоответствий

Для автоматической генерации конфигурации можно использовать @OptionFlags для определения флагов опций.

Это аналогично использованию Option.Builder.flag(...OptionFlag flag) в YACL:

public class CommonConfig {
    @AutoGen(category = "test", group = "test")
    @SerialEntry(comment = "Эта опция требует перезапуска игры")
    @OptionFlags({OptionFlags.FlagType.GAME_RESTART})
    @BooleanFlag
    public boolean myOption = true;
}

Использование @OptionFlags позволяет YACL Synced обнаруживать расхождения конфигураций при подключении к серверу и отображать предупреждение.

Участники проекта
Tigercrl

Tigercrl

Разработчик

KING-VITIONNOT

KING-VITIONNOT

Разработчик

Создан: 21 июн 2025

ID: 222784