Обзор
Это API конфигурации, предназначенное для обеспечения совместимости с различными библиотеками конфигурации, а также для удобства использования в проектах с мультизагрузчиком, в основном для применения в моих модах.
Оно отличается простым аннотационным синтаксисом, чтобы максимально упростить создание новых файлов конфигурации.
Если вы пользователь мода, эта информация, скорее всего, не очень полезна для вас. Если же вы разработчик модов и хотели бы использовать Lexiconfig в своих проектах, перейдите к разделу Разработка.
На данный момент отсутствует поддержка других библиотек конфигурации, но по мере обновлений будут добавлены дополнительные интеграции для обеспечения бесконфликтной работы и плавного взаимодействия между ними.
Текущий и планируемый статус интеграций с различными библиотеками/API конфигурации:
❌ - Не интегрировано ✅ - Интегрировано ❓ - В процессе
Статус | Мод |
---|---|
❌ | Cloth Config |
❌ | oωo config |
✅ | Configured |
❌ | Forge Config Screens |
Разработка
Этот мод содержит API, который можно использовать для размещения новых lexicon, прослушивания событий и т.д.
Зависимости
build.gradle
dependencies {
implementation "com.codinglitch.lexiconfig:lexiconfig-api:API_VERSION_HERE"
}
Актуальную версию API можно посмотреть на https://versions.codinglitch.com.
Использование
Для размещения ваших собственных lexicon сначала необходимо создать свою Библиотеку. Для этого создайте новый класс, расширяющий класс Library, и аннотируйте его аннотацией LexiconLibrary.
@LexiconLibrary
public class MyNewLibrary extends Library {
@Override
public void shelveLexicons() {
}
}
В среде Forge дополнительные изменения не требуются. При разработке для Fabric необходимо добавить этот класс как точку входа в fabric.mod.json.
fabric.mod.json
//...
"entrypoints": {
"lexiconfig": [
"com.path.to.MyNewLibrary"
]
}
//...
Следующий шаг — создание и размещение ваших lexicon. Создайте класс для lexicon с соответствующими аннотациями:
@Lexicon(name = MY_LEXICON_TITLE) // предпочтительно использовать ваш mod id в качестве имени
public class MyLexicon extends LexiconData {
@LexiconEntry(comment = "Комментарий к простому полю!")
public String mySimpleField = "content";
@LexiconPage(comment = "Комментарий к новой категории!")
public MyNewPage myNewPage = new MyNewPage();
public static class MyNewPage extends LexiconPageData {
@LexiconEntry(comment = "Это поле внутри страницы lexicon!")
public Boolean myPageField = true;
}
}
Заключительный шаг — размещение lexicon. Добавьте его экземпляр как поле в библиотеке и разместите в методе shelveLexicons.
@LexiconLibrary
public class MyNewLibrary extends Library {
public static MyLexicon MY_LEXICON = new MyLexicon();
@Override
public void shelveLexicons() {
LexiconfigApi.shelveLexicon(MY_LEXICON);
}
}