YurussPerms — права, префиксы и таб
Мод проекта · серверный · клиенту ставить нечего
YurussPerms — это LuckPerms и TAB в одном моде: права, группы, градиентные префиксы, таблист, ники над головой и формат чата. На чистом Forge, без единого плагина Bukkit. Плюс офлайновый сайт-редактор, который настраивает всё мышкой.
Содержание
Группы из коробки
При первом запуске создаются шесть групп, каждая наследует предыдущую:
| Группа | Вес | Префикс и права |
|---|---|---|
| owner | 1000 | красно-оранжевый градиент [OWNER], нода * |
| admin | 900 | розовый [ADMIN], yuruss.admin.*, minecraft.command.* |
| mod | 700 | голубой [MOD], набор модераторских команд |
| helper | 500 | зелёный [HELPER] |
| vip | 300 | золотой [VIP] |
| default | 0 | серый, выдаётся всем автоматически |
Трек повышений 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, ни интернета, ни локального сервера.
- В игре:
/perms editor— мод выведет два пути (клик копирует в буфер):config/yurussperms/editor/yurussperms-editor.html— сам редактор;config/yurussperms/export/snapshot.json— свежий снимок состояния.
- Открыть html двойным кликом.
- Перетащить
snapshot.jsonна страницу — редактор загрузит текущее состояние сервера и будет считать diff относительно него.
Путь выводится кнопкой «скопировать», а не ссылкой: ванильный клиент открывает по клику
только http и https, а file:// блокирует.
Экраны
- Группы — список по весу с живым превью префикса; конструктор префикса с пикером градиента, палитрой 16 ванильных цветов и галереей пресетов; таблица прав с поиском и автодополнением по каталогу нод; проверка циклов наследования.
- Игроки — поиск по нику и UUID, личные ноды, группы, временные права с датапикером.
- Треки — порядок групп перетаскиванием.
- Таб — превью таблиста один к одному, редактор header и footer построчно, редактор анимаций (кадры и интервал), правила сортировки, настройки ников над головой.
- Чат — конструктор формата с живым превью реплики, форматы по группам.
- Контексты — конструктор строк контекста.
- Итог — diff «что изменится» и кнопка СОХРАНИТЬ.
Черновик автосохраняется в браузере, так что случайно закрытая вкладка ничего не теряет.
Есть импорт-экспорт .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 возвращает состояние до последнего применения — и сам откат тоже
откатывается.