▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/E-Utils
E-Utils

E-Utils

E-Utils - библиотека для Fabric, которая упрощает создание конфигов, команд и GUI. Разработчикам не придётся писать всё с нуля, а игроки просто кидают мод в папку mods.

Оцените первым
66.8K
7

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 сделает всё за вас.

Часто задаваемые вопросы

Совместимость

Minecraft: Java Edition

1.21.x1.20.x1.19.x1.18.x1.17.x1.16.x

Платформы

Поддерживаемые окружения

Сервер

Зависимости

Ссылки

Создатели

Детали

Лицензия:
Опубликован:1 год назад
Обновлён:4 месяца назад
Главная