MAC (ModList And Config)

MAC (ModList And Config)

Mod list and config UI for Hytale.

5.0 тысяч загрузок
Обновлён 8 дней назад

Скриншоты

Описание

alt text

MAC (Modlist and Config)

MAC добавляет в игру список модов с богатыми метаданными и редактором конфигураций, к которому другие плагины могут подключиться с помощью небольшого регистрационного вызова. Он обнаруживает моды, показывает статус / иконки и раскрывает настройки плагина как редактируемые поля.


Особенности

  • Список модов с именем, версией, авторами, описанием, веб-сайтом, включенным / отключенным значком пакета активов
  • Сортировка списков + фильтры + поиск
  • Редактор Config с живыми перезагрузками (boolean, number, slider, enum, color, file, string, array, object)
  • Можно увидеть незарегистрированные конфигурации (для редактирования)
  • Разделители разделов конфигураций (титулы/подзаголовки)
  • Inline tooltip bubbles для конфигурационных полей
  • Страница администратора для контроля доступа, режима только просмотра и списка разрешений мод
  • Пермодовые иконки и значки резервного копирования для Hytale/Hypixel и отсутствующие активы
  • Узлы разрешений:
    • lyivx.mac
    • lyivx.mac.config
    • lyivx.mac.admin

Как использовать

  • Откройте MAC UI: /мак
  • Откройте конфигурацию мода напрямую:
    • /mac конфигурация LYIVX: MAC
    • /mac конфигурация LYIVX_OreGenerator
  • Откройте admin UI: /mac admin
  • Алиасы для /мак: Модлист, Моды

установка

Бросьте мод MAC в папку модов. Он включает в себя пакет активов и загружается автоматически.


Для разработчиков: добавление конфигураций в ваш плагин

MAC считывает схему конфигурирования, зарегистрированную в коде, и автоматически генерирует файл конфигурирования на диске. Дефолты поступают из цепочки сборщиков (без файлов конфигурации ресурсов).

1) Регистрация схемы конфигурации

Использовать PluginConfig.register(...) В настройках плагина:

PluginConfig<MySettings> config = PluginConfig.register()
Это.getLogger(),
новый плагин-идентификатор (this.getManifest()),
MySettings.class,
Оригинальное название: New,
Строитель -> строитель
.add.booleanField("Enable Feature").defaultsTo(true)
.add.slider("Max Count", 1, 100, 1.defaultsTo(50))
.add.enumField ("режим", "безопасный", "быстрый", "дикий").defaultsTo ("безопасный")
.add.color("Accent Color").defaultsTo("#1aa3a3")
.add.file("Icon File", "Common/UI/Custom", "png").defaultsTo(")
.add.stringField("Footer Note").defaultsTo("")
);

Файл конфигурирования записывается в: Config/<GROUP>/<NAME>_Config.json

Порядок схемы сохраняется в UI.

Разделители разделов Config

Вы можете добавить заголовки в групповые поля:

строитель
.add.section ("Игра")
.add.booleanField("Enable Feature").defaultsTo(true)
.add.section ("Дисплей")
.add.color("Accent Color").defaultsTo("#1aa3a3");

Конфигурация подсказок

Прикрепите инструментарий к последнему добавленному полю:

строитель
.add.booleanField («Включить функцию»)
.tooltip («Включает/выключает функцию»).
.defaultsTo(правда)

Объектные и массивные поля

Вы можете вставлять поля в качестве объектов и добавлять массивы с элементами управления надстройкой/удалением:

импортировать net.lyivx.mac.config.ConfigField;

строитель
.add.objectField("Настройки Моба", mob -> mob)
.add.booleanField("Enabled").defaultsTo(true)
.add.numberField("Spawn Rate").defaultsTo(1.5)
)
.add.arrayField("Whitelist", ConfigField.stringField("Name"))
.add.arrayField("Уровни", ConfigField.numberField("Уровень"));

Решетки представляются как подзаряды с + Добавить и - для удаления предметов. Объекты отображают свои поля как вложенные подзаголовки под заголовком.

Настройки по умолчанию

Класс настроек может быть простым полем без инициализаторов. Дефолты определяются с .defaultsTo(...) Строитель схемы.


Иконы

MAC ищет значок per-mod в: UI/Custom/<GROUP>_<NAME>.png Это соответствует путям значков Better Modlist для совместимости: https://www.curseforge.com/hytale/mods/better-modlist Таким образом, разработчикам нужно только одно местоположение значка.

Отступления:

  • Hytale/Hypixel group -> Icons/ItemCategories/Hypixel.png
  • Пропавшая икона -> Icons/ItemCategories/Natural.png

Настройка модуля (собственная конфигурация MAC)

Конфигураторы MAC:

  • Показать Hytale
  • Только с описаниями
  • Показать только Configs
  • Макс Видимые входы
  • Цвета значков (версия/включение/отключение/активы)

Этот файл: Config/LYIVX/MAC_Config.json

Настройки администратора (MAC admin config)

Конфигураторы администратора:

  • Включить режим белого списка (ограничение / использование mac)
  • Доступ только для не включенных в белый список пользователей
  • Mod letlist для пользователей только для просмотра

Этот файл: Конфигурация/LYIVX/MAC_Admin.json

Разрешения

Узлы командного разрешения MAC:

  • lyivx.mac.command.mac
  • lyivx.mac.command.mac.config
  • lyivx.mac.command.mac.admin

Заметки

  • UI конфигурирования редактирует только ключи, присутствующие в зарегистрированной схеме.
  • Неизвестные ключи сохраняются в памяти, но при обнаружении удаляются из файла на диске.

Важный

  • Если вы используете систему конфигурирования MAC, ваш мод зависит от установки MAC. Это означает, что другие браузеры модалей / конфигураций не будут работать для вашего мода, если не присутствует MAC. Будущие обновления направлены на поддержку конфигураций, которые работают без необходимости использования MAC в качестве жесткой зависимости. Полный пример

импортировать com.hypixel.hytale.common.plugin.PluginIdentifier;
Импорт com.hypixel.hytale.logger.HytaleLogger
импортировать net.lyivx.mac.config.ConfigBuilder;
импортировать net.lyivx.mac.config.ConfigField;
импортировать net.lyivx.mac.config.PluginConfig;

Публичный заключительный класс ExampleConfig {
Публичный статический класс Настройки {
публичный струнное название;
Публичный булеан позволяет Особенность;
Public Int MaxCount;
публичный струнный режим;
публичный Струнный акцентЦвет;
Публичная струнная иконкаФайл;
публичный Струнный футер Заметьте.
публичный вложенные настройки;
Общественный java.util. Список <String> предметы;
Общественный java.util. List<Item> objectArray;
?

Статический класс Nested {
публичный булевый флаг;
публичный уровень;
?

Общественный статический класс Пункт {
публичный струнное имя;
публичный счет;
?

публичный статический регистр PluginConfig<Settings> (логгер HytaleLogger, идентификатор PluginIdentifier)
Возврат плагинаConfig.register()
лесоруб
идентификатор,
Settings.class,
Настройки::новые,
Строитель -> строитель
.add.section ("Основы")
.add.stringField ("Название")
.tooltip («Пример инструмента на строке»).
.defaultsTo("Пример")
.add.booleanField("Enable Feature").defaultsTo(true)
.add.numberField("Amount").defaultsTo(1.5)
.add.section ("Дисплей")
.add.slider("Max Count", 1, 100, 1.defaultsTo(50))
.add.enumField ("режим", "безопасный", "быстрый", "дикий").defaultsTo ("безопасный")
.add.section ("Стиль")
.add.color("Accent Color").defaultsTo("#1aa3a3")
.add.file("Icon File", "Common/UI/Custom", "png").defaultsTo(")
.add.stringField("Footer Note").defaultsTo("")
.add.section ("Необходимо")
.add.objectField("Настройки", вложенные -> вложенный
.add.booleanField("Flag").defaultsTo(true)
.add.numberField("Уровень").defaultsTo(3)
)
.add.arrayField("Предметы", ConfigField.stringField("Предмет"))
.add.section ("Мечты")
.add.arrayField("Объектный массив",ConfigField.objectField("Предмет")
Новый ConfigBuilder()
.add.stringField("Name").defaultsTo("Item")
.add.numberField("Count").defaultsTo(1)
.build()
)
)
);
?
?
Показать оригинальное описание (English)

alt text

MAC (Modlist And Config)

MAC adds an in-game mod list with rich metadata and a config editor that other plugins can hook into with a small registration call. It discovers mods, shows status/icons, and exposes your plugin settings as editable fields.


Features

  • Mod list with name, version, authors, description, website, enabled/disabled, asset pack badge
  • Grouped list sorting + filters + search
  • Config editor with live reloads (boolean, number, slider, enum, color, file, string, array, object)
  • Can see un registered configs (for editing)
  • Config section dividers (titles/subtitles)
  • Inline tooltip bubbles for config fields
  • Admin page for access control, view-only mode, and mod allowlist
  • Per-mod icons and fallback icons for Hytale/Hypixel and missing assets
  • Permission nodes:
    • lyivx.mac
    • lyivx.mac.config
    • lyivx.mac.admin

How to use

  • Open the MAC UI: /mac
  • Open a mod config directly:
    • /mac config LYIVX:MAC
    • /mac config LYIVX_OreGenerator
  • Open the admin UI: /mac admin
  • Aliases for /mac: /modlist, /mods

Installation

Drop the MAC mod into your mods folder. It includes an asset pack and will load automatically.


For developers: adding configs to your plugin

MAC reads a config schema registered in code and generates the on-disk config file automatically. Defaults come from the builder chain (no resource config files).

1) Register a config schema

Use PluginConfig.register(...) in your plugin setup:

PluginConfig<MySettings> config = PluginConfig.register(
    this.getLogger(),
    new PluginIdentifier(this.getManifest()),
    MySettings.class,
    MySettings::new,
    builder -> builder
        .add.booleanField("Enable Feature").defaultsTo(true)
        .add.slider("Max Count", 1, 100, 1).defaultsTo(50)
        .add.enumField("Mode", "safe", "fast", "wild").defaultsTo("safe")
        .add.color("Accent Color").defaultsTo("#1aa3a3")
        .add.file("Icon File", "Common/UI/Custom", "png").defaultsTo("")
        .add.stringField("Footer Note").defaultsTo("")
);

The config file is written to: config/<GROUP>/<NAME>_Config.json

The schema order is preserved in the UI.

Config section dividers

You can add titled sections to group fields:

builder
    .add.section("Gameplay")
    .add.booleanField("Enable Feature").defaultsTo(true)
    .add.section("Display")
    .add.color("Accent Color").defaultsTo("#1aa3a3");

Config tooltips

Attach a tooltip to the last-added field:

builder
    .add.booleanField("Enable Feature")
    .tooltip("Turns the feature on/off.")
    .defaultsTo(true);

Object and array fields

You can nest fields as objects and add arrays with add/remove controls:

import net.lyivx.mac.config.ConfigField;

builder
    .add.objectField("Mob Settings", mob -> mob
        .add.booleanField("Enabled").defaultsTo(true)
        .add.numberField("Spawn Rate").defaultsTo(1.5)
    )
    .add.arrayField("Whitelist", ConfigField.stringField("Name"))
    .add.arrayField("Levels", ConfigField.numberField("Level"));

Arrays are rendered as sub-entries with + to add and - to remove items. Objects render their fields as nested sub-entries under a header.

Settings defaults

Your settings class can be plain fields with no initializers. Defaults are defined with .defaultsTo(...) in the schema builder.


Icons

MAC looks for a per-mod icon at: UI/Custom/<GROUP>_<NAME>.png This matches Better Modlist icon paths for compatibility: https://www.curseforge.com/hytale/mods/better-modlist so devs only need one icon location.

Fallbacks:

  • Hytale/Hypixel group -> Icons/ItemCategories/Hypixel.png
  • Missing icon -> Icons/ItemCategories/Natural.png

Modlist settings (MAC's own config)

The MAC config controls:

  • Show Hytale
  • Only With Descriptions
  • Only Show Configs
  • Max Visible Entries
  • Badge colors (version/enabled/disabled/assets)

This file is: config/LYIVX/MAC_Config.json

Admin settings (MAC admin config)

The admin config controls:

  • Enable whitelist mode (restrict /mac usage)
  • View-only access for non-whitelisted users
  • Mod allowlist for view-only users

This file is: config/LYIVX/MAC_Admin.json

Permissions

MAC command permission nodes:

  • lyivx.mac.command.mac
  • lyivx.mac.command.mac.config
  • lyivx.mac.command.mac.admin

Notes

  • The config UI only edits keys present in the registered schema.
  • Unknown keys are preserved in memory but removed from the on-disk file when detected.

Important

  • If you use MAC's config system, your mod depends on MAC being installed. That means other modlist/config browsers won't work for your mod unless MAC is present. Future updates aim to support configs that work without requiring MAC as a hard dependency. Full example

import com.hypixel.hytale.common.plugin.PluginIdentifier;
import com.hypixel.hytale.logger.HytaleLogger;
import net.lyivx.mac.config.ConfigBuilder;
import net.lyivx.mac.config.ConfigField;
import net.lyivx.mac.config.PluginConfig;

public final class ExampleConfig {
    public static class Settings {
        public String title;
        public boolean enableFeature;
        public int maxCount;
        public String mode;
        public String accentColor;
        public String iconFile;
        public String footerNote;
        public Nested settings;
        public java.util.List<String> items;
        public java.util.List<Item> objectArray;
    }

    public static class Nested {
        public boolean flag;
        public int level;
    }

    public static class Item {
        public String name;
        public int count;
    }

    public static PluginConfig<Settings> register(HytaleLogger logger, PluginIdentifier identifier) {
        return PluginConfig.register(
            logger,
            identifier,
            Settings.class,
            Settings::new,
            builder -> builder
                .add.section("Basics")
                .add.stringField("Title")
                .tooltip("Example tooltip on a string.")
                .defaultsTo("Example")
                .add.booleanField("Enable Feature").defaultsTo(true)
                .add.numberField("Amount").defaultsTo(1.5)
                .add.section("Display")
                .add.slider("Max Count", 1, 100, 1).defaultsTo(50)
                .add.enumField("Mode", "safe", "fast", "wild").defaultsTo("safe")
                .add.section("Style")
                .add.color("Accent Color").defaultsTo("#1aa3a3")
                .add.file("Icon File", "Common/UI/Custom", "png").defaultsTo("")
                .add.stringField("Footer Note").defaultsTo("")
                .add.section("Nested")
                .add.objectField("Settings", nested -> nested
                    .add.booleanField("Flag").defaultsTo(true)
                    .add.numberField("Level").defaultsTo(3)
                )
                .add.arrayField("Items", ConfigField.stringField("Item"))
                .add.section("Arrays")
                .add.arrayField("Object Array",ConfigField.objectField("Item",
                        new ConfigBuilder()
                            .add.stringField("Name").defaultsTo("Item")
                            .add.numberField("Count").defaultsTo(1)
                            .build()
                    )
                )
        );
    }
}

Последние версии

MAC-0.1.3.jar

Early Access 26.01.2026 200.2 КБ
Скачать

MAC-0.1.2.jar

Early Access 20.01.2026 136.0 КБ
Скачать

MAC-0.1.1.jar

Early Access 19.01.2026 134.0 КБ
Скачать

MAC-0.1.0.jar

Early Access 19.01.2026 122.6 КБ
Скачать