OtterLib
Библиотечный мод OtterLib для Minecraft - упрощает разработку модов и плагинов для Fabric, Spigot и Paper. Встроенные инструменты для чата, локализации, конфигов и GUI экранов настроек.
Что такое OtterLib
OtterLib - библиотечный мод для Майнкрафт, написанный специально для разработчиков. Если вы обычный игрок и увидели этот проект в списке зависимостей какого-то мода - не пугайтесь, OtterLib просто должна стоять в папке mods, чтобы основной мод заработал. Сами по себе библиотеки вроде этой ничего не меняют в геймплее, они дают функционал другим модам.
А вот если вы разработчик - тут начинается самое интересное. OtterLib решает сразу несколько рутинных задач, которые обычно приходится писать с нуля для каждого проекта.
Поддерживаемые загрузчики
Мод работает сразу на трёх платформах:
- Fabric - для клиентских и серверных модов
- Spigot - для плагинов
- Paper - для плагинов на улучшенном ядре Paper
Это удобно, если вы пишете кросс-платформенный проект. Один API - три платформы. Не нужно дублировать код под каждый загрузчик.
Возможности библиотеки
Простой Chat Builder
Встроенный конструктор чат-сообщений. Позволяет программно создавать цветные, жирные, перечёркнутые, радужные тексты без возни с JSON-форматированием Minecraft.
Пример использования:
java player.sendMessage(new CTxT("Hello").color(Color.BLUE).bold(true).strikethrough(true) .append(new CTxT("World!!!!!!!!!").✨(new ✨(true)).underline(true).italic(true)).b());
По факту - обёртка над ванильной системой компонентов, но сильно упрощает жизнь. Особенно если вам нужен радужный текст или сложная цепочка стилей.
Серверная локализация
OtterLib даёт кастомный ридер языковых файлов. Главная фишка - серверная локализация работает на всех поддерживаемых загрузчиках, включая Spigot и Paper. В ванильном Bukkit с этим обычно проблемы.
Есть поддержка вторичной директории для языковых файлов. Это значит, что игроки могут переопределять переводы без редактирования основного файла мода.
Сохранение и загрузка файлов
Библиотека добавляет интерфейс для создания конфиг-файлов с поддержкой сохранения, загрузки и обновления версий. Если вы когда-то писали систему конфигов для мода - знаете, какая это боль. Особенно когда нужно мигрировать старый конфиг на новую версию.
OtterLib решает это через метод обновления:
java @Override public void update(JsonElement Element) { JsonObject file = Element.getAsJsonObject(); if (file.get("version").getAsDouble() == 1.0) { this.version = 1.1; this.test = file.get("test-bool").getAsBoolean(); } }
Проверяете версию в JSON, при необходимости переносите значения из старых ключей в новые. Просто и понятно.
Экран настроек
Отдельная фишка OtterLib - кастомный экран конфигурации для клиентской части. Можно создать GUI с кнопками для редактирования нескольких конфиг-файлов, ссылками на соцсети, баннерами и прочими элементами оформления.
Пример создания экрана:
java client.setScreen(new ConfigScreen(client.currentScreen, Text.of("test"), new CustomImage(Identifier.of(FabricTest.MOD_ID, "textures/gui/banner.png"),240, 60), List.of( SimpleButton.Templates.fileEditor(new CTxT("Test File"), FabricTest.testFile, new CustomImage(Identifier.of(FabricTest.MOD_ID, "button/server_button"),246,26)).build(), SimpleButton.Templates.fileEditor(new CTxT("Test File No Image"), FabricTest.testFile).build(), SimpleButton.Templates.wiki(new CTxT("Help")).openLink("https://oth3r.one").size(30,30).build(), SimpleButton.Templates.wiki(new CTxT("Help")).openLink("https://oth3r.one").size(30,30).build(), SimpleButton.Templates.warning(new CTxT("Help")).openLink("https://oth3r.one").size(150,15).hideText(false).build() ), List.of( new SimpleButton.Builder(new CTxT("Donate")) .miniIcon(new CustomImage(Identifier.of(Assets.ID, "icon/donate"),15,15)).build(), SimpleButton.Templates.donate(new CTxT("Donate")).openLink(URI.create("https://ko-fi.com/oth3r")).build(), SimpleButton.Templates.done(new CTxT("Done")).build(), SimpleButton.Templates.wiki(new CTxT("Wiki")).openLink("https://oth3r.one").build() )));
Есть готовые шаблоны кнопок: fileEditor для редактирования конфигов, wiki для ссылок, donate для донатов, done для закрытия экрана. Кнопки можно кастомизировать иконками, размерами и поведением.
Интеграция в проект
Чтобы использовать OtterLib в своём моде, добавьте репозиторий и зависимость в build.gradle:
repositories {
maven {
name "oth3rMavenSnapshots"
url "https://maven.oth3r.one/snapshots"
}
}
Подключение под каждый загрузчик, где ${project.otterlib_version} - текущая версия OtterLib для конкретного загрузчика (например 0.2.0.0+1.21.6, 0.2.0.0+1.20-1.21.6):
// fabric
modImplementation "one.oth3r:otterlib:${project.otterlib_version}-fabric"
// spigot
implementation "one.oth3r:otterlib:${project.otterlib_version}-spigot"
// paper
implementation "one.oth3r:otterlib:${project.otterlib_version}-paper"
Версии библиотеки привязаны к версиям Minecraft. Проверяйте актуальную версию в maven-репозитории перед обновлением.
Кому это нужно
Если вы игрок - OtterLib просто должна лежать в папке mods, если этого требует другой мод. Скачайте OtterLib для нужной версии Minecraft и положите в папку mods вместе с основным модом.
Если вы разработчик модов или плагинов для Майнкрафт - библиотека сэкономит вам время на рутине. Чат-билдер, локализация, конфиги, GUI - всё в одном месте. Особенно полезно, если вы пишете под несколько платформ одновременно.
Совместимость и нюансы
Библиотека нетребовательна к ресурсам и не влияет на FPS. Конфликты с другими модами маловероятны, поскольку OtterLib не меняет игровой процесс. Если основной мод требует конкретную версию OtterLib - ставьте именно её, более старые или новые версии могут не подойти.
Для серверов на Spigot и Paper библиотека ставится как плагин в папку plugins. Для Fabric - как обычный мод в папку mods. Убедитесь, что версия библиотеки совпадает с версией Minecraft сервера.
Скриншоты OtterLib
Часто задаваемые вопросы
Совместимость
Зависимости
Создатели
Детали
Версии плагина OtterLib
Доступно 52 версий. Сначала показаны самые популярные и самые свежие.