Конфигурация и Разрешения ResurrectionChest
Разрешения
| Разрешение | Назначение | По умолчанию |
|---|---|---|
resurrectionchest.* | Предоставляет администраторам доступ к базовой команде и подкомандам downloadall, forcereinstallcontent, downloadpluginupdate, applypluginupdate, reload и clear, а также показывает им напоминание при первом запуске. setup и initialize проверяют собственные узлы, указанные ниже | op |
resurrectionchest.setup | Предоставляет администраторам доступ к командам /resurrectionchest setup, recommendedplugins, downloadallcontent и updatecontent | op |
resurrectionchest.initialize | Разрешает открыть начальную настройку командой /resurrectionchest initialize. | op |
resurrectionchest.use | Позволяет игроку зарегистрировать сундук и направлять в него выпавшие при смерти предметы | true |
resurrectionchest.model.free | Позволяет игроку использовать бесплатные визуальные модели сундука FreeMinecraftModels (Wooden Chest) | true |
resurrectionchest.model.premium | Позволяет игроку использовать премиум визуальные модели сундука FreeMinecraftModels (Angelic Chest) | op |
resurrectionchest.use — это важное разрешение для фактического поведения сундука. Разрешения администратора и моделей влияют только на команды и необязательные визуальные эффекты соответственно.
Команды
| Команда | Разрешение | Назначение |
|---|---|---|
/resurrectionchest | resurrectionchest.* | Выводит краткое информационное сообщение со ссылкой на процесс настройки |
/resurrectionchest initialize | resurrectionchest.initialize | Открывает пошаговую первоначальную настройку. Рекомендуемая настройка, ручная настройка и использование текущего контента отмечают её как завершённую. |
/resurrectionchest setup | resurrectionchest.setup | Открывает меню настройки (просмотр и переключение паков сундуков, проверка обновлений плагина, просмотр рекомендуемых плагинов, переключение автоматических обновлений) |
/resurrectionchest recommendedplugins | resurrectionchest.setup | Открывает (или, для консоли, выводит списком) рекомендуемые сопутствующие плагины для ResurrectionChest: FreeMinecraftModels и ResourcePackManager |
/resurrectionchest downloadall | resurrectionchest.* | Загружает обновление плагина (если есть) и все доступные паки контента с Nightbreak |
/resurrectionchest downloadallcontent | resurrectionchest.setup | Загружает все доступные паки контента с Nightbreak |
/resurrectionchest updatecontent (псевдоним updateallcontent) | resurrectionchest.setup | Повторно загружает только устаревшие установленные паки контента |
/resurrectionchest forcereinstallcontent <package|all> | resurrectionchest.* | Повторно загружает пак контента (или все загруженные паки), даже если установленная версия уже актуальна. Имена пакетов автодополняются слагами Nightbreak wooden-chest и angelic-chest, а также значением all |
/resurrectionchest downloadpluginupdate | resurrectionchest.* | Загружает обновление плагина ResurrectionChest, если оно доступно |
/resurrectionchest applypluginupdate | resurrectionchest.* | Применяет загруженное обновление плагина без перезапуска сервера. См. Обновление плагина без перезапуска |
/resurrectionchest reload | resurrectionchest.* | Перезагружает ResurrectionChest |
/resurrectionchest clear | resurrectionchest.* | Очищает все отслеживаемые блоки ResurrectionChest; выбрасывает инвентарь каждого отслеживаемого сундука и удаляет блоки сундука и таблички |
/resurrectionchestchangelog [dismiss|disable] | op, resurrectionchest.*, resurrectionchest.setup или resurrectionchest.initialize | Показывает в игре непрочитанные заметки о выпусках ResurrectionChest. См. Уведомления о списке изменений |
Загруженные обновления плагина помещаются в папку обновлений сервера. Они вступают в силу после следующего перезапуска сервера, если только вы не примените их раньше командой /resurrectionchest applypluginupdate или настройкой nightbreak.applyPluginUpdatesWithoutRestart.
Встроенный инструментарий MagmaCore также регистрирует общие команды /nightbreak, /nightbreaklogin, /nightbreaklogout и /logify, если эти имена не занял другой плагин. См. Токены Nightbreak.
Файлы плагина
| Путь | Назначение |
|---|---|
plugins/ResurrectionChest/config.yml | Все настройки из таблицы ниже |
plugins/ResurrectionChest/playerData.yml | По одной записи на зарегистрированный сундук, с ключом по UUID игрока: location сундука, префикс chestModel, выбранный при регистрации сундука, и trackedBlockSchemaVersion, используемый для переноса более старых регистраций на текущие маркеры владения блоками |
plugins/ResurrectionChest/content_packages/ | Определения паков контента wooden_chest.yml / angelic_chest.yml (isEnabled, name, description, version, folderName, nightbreakSlug, contentFilePrefixes, а также необязательные downloadLink и category) |
plugins/ResurrectionChest/nightbreak-changelogs.yml | Состояние «прочитано/скрыто» для общей папки входящих списков изменений за командой /resurrectionchestchangelog. См. Уведомления о списке изменений |
plugins/ResurrectionChest/imports/ | Папка для ручного импорта. Всё, что здесь оставлено, распаковывается при запуске — файлы моделей направляются в FreeMinecraftModels, и FreeMinecraftModels автоматически обновляется. См. Ручной импорт против управления в игре |
plugins/ResurrectionChest/resource_pack/ | Общие ресурсы иконок меню и шрифтов Nightbreak; экспортируются из встроенного MagmaCore при загрузке плагина и экспортируются заново, когда встроенная копия меняется |
Не редактируйте playerData.yml вручную, пока сервер работает; ResurrectionChest перезаписывает его при каждой регистрации или удалении сундука.
Параметры конфигурации
config.yml в настоящее время предоставляет следующие пользовательские настройки:
| Ключ конфигурации | Тип | По умолчанию |
|---|---|---|
setupDone | boolean | false |
nightbreak.autoDownloadPluginUpdates | boolean | false |
nightbreak.applyPluginUpdatesWithoutRestart | string | never |
Input name for death chest | string | [DeathChest] |
Enable high compatibility / low security mode for plugin conflicts | boolean | false |
Lower worn armor's durability on death | boolean | true |
Amount of durability to lower on death | int | 100 |
Chest creation message | string | &8[ResurrectionChest] &aYou've created your Death Chest! |
Chest destruction message | string | &8[ResurrectionChest] &cYour Death Chest has been destroyed! |
Chest missing message | string | &8[ResurrectionChest] &4Your Death Chest is missing! |
Chest protected region message | string | &8[ResurrectionChest] &cYou can't create a Death Chest here - this area is protected! |
Death message | string | &8[ResurrectionChest] &aYour items have been moved to your Death Chest! |
deathChestRemovedMessage | string | &8[ResurrectionChest] &cYour Death Chest has been removed! |
Enable particle effects for death chests | boolean | true |
Particle effect 1 | string | ENCHANTMENT_TABLE |
Particle effect 2 | string | ENCHANTMENT_TABLE |
Particle effect 3 | string | PORTAL |
blacklistedWorlds | list | [none] |
storeXP | boolean | true |
xpPercentageKept | double | 0.75 |
deathChestNameTag | string | $playerName's &fResurrection Chest |
freeSingleDeathChestModelName | string | resurrectionchest_free_single |
freeDoubleDeathChestModelName | string | resurrectionchest_free_double |
premiumSingleDeathChestModelName | string | resurrectionchest_angelic_single |
premiumDoubleDeathChestModelName | string | resurrectionchest_angelic_double |
Автоматические обновления плагина и контента
nightbreak.autoDownloadPluginUpdates — это общая настройка Nightbreak/MagmaCore, которая поставляется внутри ResurrectionChest. По умолчанию она имеет значение false.
- Когда значение
false(по умолчанию), ничего не загружается автоматически. ResurrectionChest всё равно проверяет наличие обновления плагина через несколько минут после запуска (задержка разнесена по плагинам), а затем примерно раз в час, чтобы внутриигровая кнопка обновления могла показать результат, но любую фактическую загрузку вы запускаете сами. - Когда значение
true, ResurrectionChest загружает доступное обновление плагина и устаревшие паки контента через несколько минут после запуска. Загруженные обновления контента используются после перезапуска сервера. Загруженное обновление плагина тоже ждёт перезапуска, если толькоnightbreak.applyPluginUpdatesWithoutRestartне применит его раньше. - Автоматическая загрузка плагина требует действительного токена аккаунта Nightbreak и активного членства сторонника.
Вы можете изменить эту настройку в игре через переключатель Automatic Updates на панели инструментов внутри /resurrectionchest setup или отредактировать config.yml напрямую.
Меню настройки также предоставляет пункт Plugin Update (показывает установленную/доступную версию и загружает обновление по клику) и пункт Recommended Plugins (тот же список, что и /resurrectionchest recommendedplugins).
Обновление плагина без перезапуска
Загруженное обновление плагина ждёт в папке обновлений сервера. /resurrectionchest applypluginupdate подставляет его без перезапуска сервера. ResurrectionChest отключается, его jar-файл заменяется, а новая версия загружается и включается. Другие плагины MagmaGuy, зависящие от ResurrectionChest, перезагружаются вместе с ним.
Команда отказывается выполняться и выводит сообщение, если:
- загруженного обновления нет
- ожидающее обновление не новее запущенной версии или его jar-файл недействителен
- от ResurrectionChest зависит (через depend или softdepend) плагин другого автора. В этом случае перезапустите сервер
- уже выполняется подмена другого плагина
Если новая версия не включается, снова загружается предыдущий jar-файл, а обновление остаётся в папке обновлений до следующего перезапуска. Используйте эту команду, а не сторонние плагины для перезагрузки.
Параметр nightbreak.applyPluginUpdatesWithoutRestart в config.yml определяет, что происходит сразу после любой загрузки обновления плагина — через downloadpluginupdate, downloadall, пункт Plugin Update в меню настройки или автоматическую загрузку:
| Значение | Поведение |
|---|---|
never | По умолчанию. Обновление ждёт следующего перезапуска. Администраторам в сети с resurrectionchest.* сообщается, что нужен перезапуск, и показывается команда applypluginupdate |
when-empty | Применяет обновление сразу, если на сервере нет игроков; иначе проверяет каждые 30 секунд и применяет его, как только сервер опустеет |
immediately | Применяет обновление сразу по завершении загрузки |
Любое другое значение работает как never.
Подмена отключает и снова включает ResurrectionChest, поэтому, как и при /resurrectionchest reload, XP, который игроки ещё не забрали из своих сундуков, теряется. Предметы в сундуках не затрагиваются.
Защита регионов
Регистрация сундука смерти считается строительством: прежде чем табличка будет принята, ResurrectionChest спрашивает у общего LocationQueryRegistry из MagmaCore, может ли игрок строить на блоке сундука.
- WorldGuard и GriefPrevention подключаются автоматически. Общие провайдеры владения локациями тоже могут запретить регистрацию, сообщив, что место защищено. Без провайдеров защиты или владения дополнительных ограничений нет.
- Если плагин защиты запрещает строительство, регистрация отклоняется, и игроку отправляется
Chest protected region message. - Если адаптер защиты выбрасывает ошибку, запрос завершается «закрыто» (регистрация отклоняется), а не молча обходит защиту.
Встроенные адаптеры сначала подключаются при запуске, а при последующих запросах их состояние сверяется с включёнными плагинами. Если WorldGuard или GriefPrevention включён, но его адаптер не удалось подключить, ошибка записывается в журнал, и любая регистрация отклоняется, пока этот плагин остаётся включённым. /resurrectionchest reload не повторяет подключение. Повторная попытка выполняется после отключения или перезагрузки этого плагина защиты, после обновления ResurrectionChest без перезапуска или после перезапуска сервера.
Штраф к прочности брони
Lower worn armor's durability on death (по умолчанию true) и Amount of durability to lower on death (по умолчанию 100) применяются к надетой броне игрока в момент, когда она направляется в сундук смерти:
- каждому надетому элементу брони, попадающему в дроп смерти, к значению повреждения добавляется
Amount of durability to lower on death - если это довело бы элемент до его максимальной прочности или за неё, элемент полностью убирается из дропа (он уничтожается, а не сохраняется)
- иначе в сундук попадает повреждённый элемент
Нулевой или отрицательный штраф к прочности ничего не меняет.
Штраф выполняется только при тех смертях, которые ResurrectionChest действительно обрабатывает — он пропускается, когда включён keepInventory, когда мир в чёрном списке, когда у игрока нет resurrectionchest.use и когда зарегистрированный сундук отсутствует.
Режим высокой совместимости
Enable high compatibility / low security mode for plugin conflicts (по умолчанию false) определяет, насколько строго ResurrectionChest проверяет блок, прежде чем действовать.
- При
falseтабличка или сундук считаются принадлежащими ResurrectionChest, только если на них сохранилась метка владельца, которую плагин записывает в постоянные данные блока. - При
trueотсутствие метки владения в отслеживаемом месте допускается. Метка другого владельца по-прежнему отклоняется, а отслеживаемый сундук должен оставаться блоком сундука.
Используйте этот режим, если другой плагин удаляет метки владения ResurrectionChest. Он ослабляет проверку отсутствующей метки, но не разрешает произвольные заменяющие блоки или конфликтующие метки владения.
Обработка XP
Когда storeXP включён:
- ResurrectionChest отслеживает общее количество XP игрока во время игры, но считывает актуальное значение игрока в момент смерти, поэтому XP, выданный напрямую через API другого плагина, тоже учитывается
- при смерти сохраняет
round(total XP * xpPercentageKept), ограничивая результат диапазоном неотрицательных целых чисел - устанавливает выпавший XP в
0 - возвращает сохранённый XP, когда владелец в следующий раз откроет свой зарегистрированный сундук (подходит любая половина двойного сундука)
- смерть до получения добавляет к сохранённому количеству, а не заменяет его
xpPercentageKept при чтении конфига зажимается в диапазон 0-1, поэтому значения выше 1 работают как 1, а отрицательные или некорректные — как 0.
Важные исключения:
- Если
keepInventoryактивен, ResurrectionChest ничего не делает. - Если
keepLevelактивен, ветка хранения XP пропускается и оставляет ванильную обработку уровней без изменений. - Сохранённый XP хранится только в оперативной памяти. Он не записывается в
playerData.yml, поэтому перезапуск сервера,/resurrectionchest reload, перезагрузка плагина или обновление плагина без перезапуска отбрасывают любой ещё не полученный XP. Предметы, уже находящиеся в сундуке, при этом не затрагиваются.
Обработка переполнения
Предметы помещаются в сундук по одному стаку за раз, причём допускается частичное размещение:
- сохраняется всё, что помещается, включая пополнение уже существующего стака
- в обычном списке предметов смерти на месте гибели остаётся только остаток
- игрок получает предупреждение о том, что сундук был полон
Интеграция с FreeMinecraftModels
Если FreeMinecraftModels установлен, ResurrectionChest может создать визуальную модель сундука поверх настоящего сундука.
Текущее поведение:
- премиум визуальные эффекты (Angelic Chest) предпочтительны, когда у игрока есть
resurrectionchest.model.premiumи премиум-модель фактически загружена - в противном случае используется бесплатный визуальный эффект (Wooden Chest), когда у игрока есть
resurrectionchest.model.free - если ни одно из разрешений не даёт пригодную модель, модель не создаётся и используется ванильный сундук как есть
- визуальная модель переключается между одинарным и двойным вариантами в зависимости от размера сундука
- настоящий сундук по-прежнему остаётся хранилищем
- модели обновляются каждый раз, когда FreeMinecraftModels завершает перезагрузку, в том числе запущенную не из ResurrectionChest, а подходящая модель, уже стоящая у сундука, используется повторно вместо создания дубликата
Выбор модели делается один раз, при регистрации сундука, и сохраняется в playerData.yml как chestModel этого сундука. Отсюда два следствия:
- если на момент регистрации FreeMinecraftModels не был установлен, сундук записывается без модели и остаётся обычным ванильным сундуком даже после установки FreeMinecraftModels
- последующее изменение разрешений задним числом не повышает и не понижает уже существующий сундук
В обоих случаях игроку нужно зарегистрировать сундук заново (сломать его и снова поставить табличку), чтобы получить новую модель.
Когда активна пользовательская модель, игроки могут взаимодействовать с ней напрямую:
- правый клик по модели открывает инвентарь базового сундука
- левый клик по модели уничтожает регистрацию (это может сделать только владелец; не-владелец при левом клике получает красное сообщение, и ничего не уничтожается)
Если FreeMinecraftModels отсутствует или модель не может быть создана, базовый сундук по-прежнему работает нормально.
Паки контента
ResurrectionChest поставляется с двумя паками контента, которые оборачивают модели сундуков FreeMinecraftModels:
- Wooden Chest (бесплатный): предоставляет
resurrectionchest_free_single/resurrectionchest_free_double. Используется черезresurrectionchest.model.free. - Angelic Chest (премиум): предоставляет
resurrectionchest_angelic_single/resurrectionchest_angelic_double. Используется черезresurrectionchest.model.premium.
Каждый пак находится в папке models плагина FreeMinecraftModels, когда установлен, и в models_disabled, когда удалён. Переключение их через /resurrectionchest setup перемещает файлы между этими папками и автоматически перезагружает FreeMinecraftModels.
Оговорки на основе исходного кода
Текущий исходный код показывает несколько записей конфигурации, которые представлены в config.yml, но не используются нигде за пределами DefaultConfig:
Particle effect 1Particle effect 2freeSingleDeathChestModelNamefreeDoubleDeathChestModelNameиpremiumDoubleDeathChestModelName(плагин внутри жёстко зашивает префиксы имён моделейresurrectionchest_freeиresurrectionchest_angelic, а затем добавляет_singleили_doubleв зависимости от размера сундука, поэтому ключи конфигурации с "Double" в настоящее время не влияют на визуальные эффекты сундука)
Напротив, Particle effect 3 — это настройка частиц с очевидным активным использованием в текущем коде: она разрешается один раз при загрузке (с откатом на PORTAL и предупреждением в консоли, если имя не является корректной частицей) и затем создаётся каждый тик, пока чанк сундука загружен. Установка Enable particle effects for death chests в false полностью отменяет эту потиковую задачу, что является самым дешёвым вариантом на серверах с большим количеством зарегистрированных сундуков. premiumSingleDeathChestModelName используется для проверки существования файла премиум-модели перед назначением премиум-префикса; существование файла бесплатной модели отдельно не проверяется.
Ещё две оговорки по набору команд:
/resurrectionchest initializeоткрывает начальную настройку и требуетresurrectionchest.initialize./resurrectionchest setupоткрывает управление контентом, обновлениями и рекомендованными плагинами./resurrectionchest clearне ограничивается одним игроком. Она стирает все зарегистрированные сундуки на сервере за один проход.
Команда очистки соблюдает настроенные проверки владения и оставляет нетронутыми блоки, не прошедшие их. Если мир сундука выгружен, удаляется регистрация без удаления блоков в этом мире.