Перейти к основному содержимому

Конфигурация и Разрешения ResurrectionChest

Разрешения​

РазрешениеНазначениеПо умолчанию
resurrectionchest.*Предоставляет администраторам доступ к базовой команде и подкомандам downloadall, forcereinstallcontent, downloadpluginupdate, applypluginupdate, reload и clear, а также показывает им напоминание при первом запуске. setup и initialize проверяют собственные узлы, указанные нижеop
resurrectionchest.setupПредоставляет администраторам доступ к командам /resurrectionchest setup, recommendedplugins, downloadallcontent и updatecontentop
resurrectionchest.initializeРазрешает открыть начальную настройку командой /resurrectionchest initialize.op
resurrectionchest.useПозволяет игроку зарегистрировать сундук и направлять в него выпавшие при смерти предметыtrue
resurrectionchest.model.freeПозволяет игроку использовать бесплатные визуальные модели сундука FreeMinecraftModels (Wooden Chest)true
resurrectionchest.model.premiumПозволяет игроку использовать премиум визуальные модели сундука FreeMinecraftModels (Angelic Chest)op

resurrectionchest.use — это важное разрешение для фактического поведения сундука. Разрешения администратора и моделей влияют только на команды и необязательные визуальные эффекты соответственно.

Команды​

КомандаРазрешениеНазначение
/resurrectionchestresurrectionchest.*Выводит краткое информационное сообщение со ссылкой на процесс настройки
/resurrectionchest initializeresurrectionchest.initializeОткрывает пошаговую первоначальную настройку. Рекомендуемая настройка, ручная настройка и использование текущего контента отмечают её как завершённую.
/resurrectionchest setupresurrectionchest.setupОткрывает меню настройки (просмотр и переключение паков сундуков, проверка обновлений плагина, просмотр рекомендуемых плагинов, переключение автоматических обновлений)
/resurrectionchest recommendedpluginsresurrectionchest.setupОткрывает (или, для консоли, выводит списком) рекомендуемые сопутствующие плагины для ResurrectionChest: FreeMinecraftModels и ResourcePackManager
/resurrectionchest downloadallresurrectionchest.*Загружает обновление плагина (если есть) и все доступные паки контента с Nightbreak
/resurrectionchest downloadallcontentresurrectionchest.setupЗагружает все доступные паки контента с Nightbreak
/resurrectionchest updatecontent (псевдоним updateallcontent)resurrectionchest.setupПовторно загружает только устаревшие установленные паки контента
/resurrectionchest forcereinstallcontent <package|all>resurrectionchest.*Повторно загружает пак контента (или все загруженные паки), даже если установленная версия уже актуальна. Имена пакетов автодополняются слагами Nightbreak wooden-chest и angelic-chest, а также значением all
/resurrectionchest downloadpluginupdateresurrectionchest.*Загружает обновление плагина ResurrectionChest, если оно доступно
/resurrectionchest applypluginupdateresurrectionchest.*Применяет загруженное обновление плагина без перезапуска сервера. См. Обновление плагина без перезапуска
/resurrectionchest reloadresurrectionchest.*Перезагружает ResurrectionChest
/resurrectionchest clearresurrectionchest.*Очищает все отслеживаемые блоки 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 в настоящее время предоставляет следующие пользовательские настройки:

Ключ конфигурацииТипПо умолчанию
setupDonebooleanfalse
nightbreak.autoDownloadPluginUpdatesbooleanfalse
nightbreak.applyPluginUpdatesWithoutRestartstringnever
Input name for death cheststring[DeathChest]
Enable high compatibility / low security mode for plugin conflictsbooleanfalse
Lower worn armor's durability on deathbooleantrue
Amount of durability to lower on deathint100
Chest creation messagestring&8[ResurrectionChest] &aYou've created your Death Chest!
Chest destruction messagestring&8[ResurrectionChest] &cYour Death Chest has been destroyed!
Chest missing messagestring&8[ResurrectionChest] &4Your Death Chest is missing!
Chest protected region messagestring&8[ResurrectionChest] &cYou can't create a Death Chest here - this area is protected!
Death messagestring&8[ResurrectionChest] &aYour items have been moved to your Death Chest!
deathChestRemovedMessagestring&8[ResurrectionChest] &cYour Death Chest has been removed!
Enable particle effects for death chestsbooleantrue
Particle effect 1stringENCHANTMENT_TABLE
Particle effect 2stringENCHANTMENT_TABLE
Particle effect 3stringPORTAL
blacklistedWorldslist[none]
storeXPbooleantrue
xpPercentageKeptdouble0.75
deathChestNameTagstring$playerName's &fResurrection Chest
freeSingleDeathChestModelNamestringresurrectionchest_free_single
freeDoubleDeathChestModelNamestringresurrectionchest_free_double
premiumSingleDeathChestModelNamestringresurrectionchest_angelic_single
premiumDoubleDeathChestModelNamestringresurrectionchest_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 1
  • Particle effect 2
  • freeSingleDeathChestModelName
  • freeDoubleDeathChestModelName и 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 не ограничивается одним игроком. Она стирает все зарегистрированные сундуки на сервере за один проход.

Команда очистки соблюдает настроенные проверки владения и оставляет нетронутыми блоки, не прошедшие их. Если мир сундука выгружен, удаляется регистрация без удаления блоков в этом мире.