← На сайт сервера

YurussPerms — права, префиксы и таб

Мод проекта · серверный · клиенту ставить нечего

YurussPerms — это LuckPerms и TAB в одном моде: права, группы, градиентные префиксы, таблист, ники над головой и формат чата. На чистом Forge, без единого плагина Bukkit. Плюс офлайновый сайт-редактор, который настраивает всё мышкой.

Ноль перезапусков. Любое изменение применяется мгновенно и сразу пишется на диск: префикс появляется в чате, в табе и над головой без релога.

Группы из коробки

При первом запуске создаются шесть групп, каждая наследует предыдущую:

ГруппаВесПрефикс и права
owner1000красно-оранжевый градиент [OWNER], нода *
admin900розовый [ADMIN], yuruss.admin.*, minecraft.command.*
mod700голубой [MOD], набор модераторских команд
helper500зелёный [HELPER]
vip300золотой [VIP]
default0серый, выдаётся всем автоматически

Трек повышений staff: default → vip → mod → admin. Header таба — анимированный логотип, footer — группа игрока и адрес сервера.

Оформление текста

Единый парсер работает везде: префиксы, таб, теги над головой, чат, вывод команд.

ЧтоПример
Legacy&a, &l, &k, &r
HEX&#FF00AA, <#FF00AA>
Градиент<gradient:#FF0000:#00FFFF>[Admin]</gradient>, три и больше цветов тоже
Радуга<rainbow:0.5>текст</rainbow> — число это скорость
Стили<bold>, <italic>, <underline>, <obf>, <reset>
Наведение<hover:show_text:'Привет'>текст</hover>
Клик<click:run_command:'/msg Steve'>текст</click>
Экранирование\&, \<

Градиенты интерполируются в OKLab, а не в sRGB: середина между #FF0000 и #00FFFF остаётся насыщенной, а не уходит в грязно-серый.

Готовых пресетов префикса — 21 (/perms presets): owner, admin, moderator, helper, developer, builder, youtube, twitch, vip, vipplus, mvp, premium, legend, sponsor, elite, guardian, titan, mythic, player, newbie, rainbow.

Плейсхолдеры

Подставляются в таб, чат и теги:

%player% %displayname% %uuid% %ping% %tps% %mspt% %online% %max%
%world% %dimension% %x% %y% %z% %gamemode% %health% %food% %level%
%group% %group_display% %prefix% %suffix% %weight% %meta_<ключ>%
%time% %date% %uptime% %playtime% %memory_used% %memory_max%
%anim:<имя>%

У каждого свой интервал обновления, так что %tps% не считается двадцать раз в секунду для каждого игрока.

Сайт-редактор

Это один HTML-файл, работающий офлайн: ни CDN, ни интернета, ни локального сервера.

  1. В игре: /perms editor — мод выведет два пути (клик копирует в буфер):
    • config/yurussperms/editor/yurussperms-editor.html — сам редактор;
    • config/yurussperms/export/snapshot.json — свежий снимок состояния.
  2. Открыть html двойным кликом.
  3. Перетащить snapshot.json на страницу — редактор загрузит текущее состояние сервера и будет считать diff относительно него.

Путь выводится кнопкой «скопировать», а не ссылкой: ванильный клиент открывает по клику только http и https, а file:// блокирует.

Экраны

Черновик автосохраняется в браузере, так что случайно закрытая вкладка ничего не теряет. Есть импорт-экспорт .json и тёмная-светлая тема.

Как правки попадают на сервер

Поле чата ванильного клиента — 256 символов, обойти это нельзя. Поэтому редактор собирает JSON, жмёт его gzip, кодирует Base64URL и режет на куски по 180 символов, выдавая пачку команд:

/perms paste start <id> <всего> <crc32>
/perms paste add <id> 0 <данные>
...
/perms paste apply <id>

Кнопка «Копировать всё» кладёт все строки разом — в чат они вставляются одна за другой. Есть и «Скачать команды .txt», и «Скачать .json» (последний заходит через /perms import).

На стороне мода apply проверяет полноту и CRC32, разжимает, валидирует схему (циклы наследования, длины, лимиты), делает бэкап, применяет атомарно, синхронно пишет на диск и рассылает пакеты таба всем онлайн. Ошибка на любом шаге — не применяется ничего.

Режим без команд

В config/yurussperms/config.json можно включить http.enabled. Тогда мод поднимает эндпоинт на 127.0.0.1:8765: GET /snapshot и POST /apply с токеном, и редактор сохраняет напрямую, без копирования команд.

По умолчанию выключено. Эндпоинт защищён только токеном и рассчитан на локальную машину — bind менять на 0.0.0.0 нельзя.

Команды

Корень — /perms, алиас /lp. Всё с автодополнением: группы, игроки, ноды, треки, сроки, контексты.

/perms user <ник> info
/perms user <ник> parent add|remove|set <группа>
/perms user <ник> permission set <нода> <true|false>
/perms user <ник> permission settemp <нода> <true|false> <1d2h3m>
/perms user <ник> meta addprefix <вес> "<текст>"
/perms user <ник> promote|demote <трек>

/perms group <имя> create|delete|clone <новое>
/perms group <имя> meta preset <id>
/perms group <имя> setweight <число>
/perms group <имя> listmembers

/perms listgroups | listtracks | presets
/perms search <нода>      где встречается нода
/perms tree [корень]       дерево известных нод
/perms verbose on|off      лог всех проверок прав в чат
/perms editor              путь к сайту и свежий снапшот
/perms undo                откат последнего применения

set заменяет все префиксы, add добавляет ещё один — побеждает больший вес. У каждой ноды в info есть кнопка , удаляющая её одним кликом.

Права на сами команды

НодаЧто открывает
yuruss.adminдоступ к /perms вообще
yuruss.admin.user.editправка игроков
yuruss.admin.group.editправка групп
yuruss.admin.track.editправка треков
yuruss.admin.pasteприём конфигурации с сайта
yuruss.admin.exportэкспорт и импорт
yuruss.tab.hiddenскрыть игрока из таблиста и тегов

Ванильные команды управляются нодами minecraft.command.<команда>, как в LuckPerms. Пока нода не задана, работает обычная проверка op-level, так что ничего не ломается.

Чтобы права других модов резолвились через YurussPerms, у нас в world/serverconfig/forge-server.toml прописано permissionHandler = "yurussperms:handler". Настройка привязана к миру: при смене мира её нужно проставить заново.

Хранение и откат

Данные лежат в <мир>/data/yurussperms/: группы, треки, игроки. Запись атомарная, с бэкапами. Импорт понимает и собственный формат, и экспорт LuckPerms (/perms import luckperms <файл>).

/perms undo возвращает состояние до последнего применения — и сам откат тоже откатывается.