
E-Utils
E-Utils - библиотека для Fabric, которая упрощает создание конфигов, команд и GUI. Разработчикам не придётся писать всё с нуля, а игроки просто кидают мод в папку mods.
E-Utils (EverlastingUtils) - это серверная утилита и API-библиотека для Fabric, которая решает извечную проблему мододелов: рутинную работу с конфигами, командами и интерфейсами. Вместо того чтобы каждый раз изобретать велосипед, разработчики могут взять готовые компоненты и сосредоточиться на уникальном контенте. Для обычных игроков всё просто: если какой-то мод требует E-Utils, просто киньте его в папку mods и забудьте. Никакой магии, только стабильность.
Что даёт E-Utils
Библиотека закрывает три главные боли при создании модов для Майнкрафт:
- Конфиги - типобезопасная система с поддержкой JSONC, автообновлением и живой перезагрузкой. Серверные админы могут менять настройки на лету, без перезапуска.
- Планировщик задач - сервер-ориентированный шедулер, который корректно обрабатывает синхронные и асинхронные таски. Никаких утечек потоков и конфликтов с тикрейтом.
- Команды и GUI - удобные билдеры для Brigadier и инвентарных интерфейсов. Минимум кода, максимум гибкости.
Всё это завязано на Fabric API и Fabric Language Kotlin, так что без них не обойтись.
Как это работает на практике
Конфиги без головной боли
Система ConfigManager позволяет описать структуру конфига через data-класс на Kotlin. Библиотека сама создаёт файл, добавляет комментарии и следит за версиями. Если вышло обновление мода - старые настройки не слетят, они аккуратно смержатся с новыми.
data class MyConfig(
override val version: String = "1.0.0",
override val configId: String = "mymod",
var debugMode: Boolean = false,
var welcomeMessage: String = "<green>Welcome to my server!"
) : ConfigData
val configManager = ConfigManager(
currentVersion = "1.0.0",
defaultConfig = MyConfig(),
configClass = MyConfig::class,
metadata = ConfigMetadata(
headerComments = listOf("Main configuration for MyMod."),
sectionComments = mapOf("debugMode" to "Enables detailed console logging.")
)
)
val isDebug = configManager.getCurrentConfig().debugMode
Планировщик, который не подведёт
SchedulerManager привязан к жизненному циклу сервера. Если сервер перезагрузился - пул потоков пересоздаётся, старые задачи не зависают. Можно запускать как синхронные таски (для работы с миром), так и асинхронные (для тяжёлых операций вроде запросов к БД).
SchedulerManager.scheduleAtFixedRate(
id = "mymod-broadcast-task",
server = server,
initialDelay = 0,
period = 5,
unit = TimeUnit.MINUTES,
runAsync = false,
task = {
server.playerManager.broadcast(Text.literal("It has been 5 minutes!"), false)
}
)
Команды и GUI за пару строк
CommandManager оборачивает Brigadier в человекочитаемый билдер. Права проверяются автоматически - поддерживаются и ванильные OP-уровни, и Fabric Permissions API.
val commandManager = CommandManager(modId = "mymod")
commandManager.command("hello", permission = "mymod.hello") {
executes { context ->
context.source.sendFeedback({ Text.literal("Hello, world!") }, false)
1
}
subcommand("admin") {
executes { context -> /* ... */ }
}
}
commandManager.register()
А CustomGui позволяет создавать инвентарные интерфейсы с динамическими кнопками, MiniMessage-форматированием и колбэками на клик.
CustomGui.openGuiFormatted(
player = player,
title = "<gradient:gold:yellow>My Awesome GUI",
layout = listOf(
CustomGui.createFormattedButton(
ItemStack(Items.DIAMOND),
"<blue>Click Me!",
listOf("<gray>This is a button."),
player
)
),
onInteract = { context ->
if (context.slotIndex == 0) {
player.sendMessage(Text.literal("You clicked the button!"))
CustomGui.closeGui(player)
}
},
onClose = { /* ... */ }
)
Для разработчиков: как подключить
Если вы пишете мод на Fabric и хотите использовать E-Utils, добавьте в build.gradle.kts:
repositories {
maven { url = "https://api.modrinth.com/maven" }
}
dependencies {
modImplementation("maven.modrinth:e-utils:1.1.2")
}
И не забудьте прописать зависимость в fabric.mod.json:
"depends": {
"everlastingutils": ">=1.1.2"
}
Вердикт
E-Utils - это не мод, который меняет геймплей, а инструмент для разработчиков. Если вы собираете сборку модов для Майнкрафт и видите в списке зависимостей E-Utils - просто скачайте его. Он не добавит новых блоков или мобов, но без него не заработает половина контента. Для кодера же это настоящая находка: меньше шаблонного кода, больше времени на фичи.
Скачать E-Utils стоит хотя бы ради того, чтобы не мучиться с конфигами вручную. Особенно если ваш мод использует десятки параметров - система автообновления спасёт от конфликтов версий. Ну а планировщик пригодится любому, кто пишет серверные механики: от экономики до мини-игр.
Как поиграть с друзьями с модом E-Utils?
Мод E-Utils куда интереснее в компании: поднимите сервер Майнкрафт с уже установленным модом, позовите друзей и играйте по своим правилам. Хостинг Майнкрафт для мода E-Utils будет готов за пару минут - BungeeHost сделает всё за вас.
