YACL Synced
Активный0.0
Установок
Последнее обновление
Версии
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 обнаруживать расхождения конфигураций при подключении к серверу и отображать предупреждение.