RE:NODE

Киты, варпы, дома и спавн в EssentialsX: полная настройка

Автор Команда RE:NODE
15 мин чтения


Киты EssentialsX хранятся в plugins/Essentials/kits.yml: у каждого есть список предметов и delay в секундах, а получить кит игрок может, только если у него есть право essentials.kits.<name>. Варпы создаются командой /setwarp и становятся доступны по отдельности после включения per-warp-permission. Лимиты домов берутся из таблицы sethome-multiple в config.yml и сопоставляются с правами essentials.sethome.multiple.<tier>. Команды /spawn в основном jar-файле нет вообще - для неё нужен отдельный модуль EssentialsX Spawn. Эти четыре факта объясняют почти все жалобы вида "кит не работает" на свежем сервере Paper, а остальная часть руководства - подробности к ним.

Балансы, /pay, worth.yml и магазины разобраны в руководстве по экономике EssentialsX и Vault. Эта статья посвящена другой половине плагина - перемещению и стартовому снаряжению, на которые на большинстве выживальных серверов уходит основная часть настройки.

Где EssentialsX хранит киты, варпы, дома и спавны#

EssentialsX состоит из нескольких jar-файлов. Основной EssentialsX содержит киты, варпы, дома, запросы на телепорт и экономику. EssentialsXSpawn скачивается отдельно и добавляет /spawn, /setspawn, обработку первого входа и правила возрождения. Ставьте основной jar и только те модули, которыми действительно пользуетесь: каждый из них добавляет обработчики событий на сервере, где главный поток общий для всех.

Каждая функция хранит данные в своём месте, и знание того, какой файл за что отвечает, избавляет от долгих догадок, когда что-то пропало:

code
plugins/Essentials/  config.yml        settings for everything, including sethome-multiple  kits.yml          kit definitions and delays  spawn.yml         spawn points, written by /setspawn (Spawn module)  warps/    mine.yml        one file per warp    shop.yml  userdata/    <uuid>.yml      each player's homes and kit cooldown timestamps

Отсюда следуют три вывода. Дома принадлежат файлу игрока, поэтому удаление файла userdata стирает его дома и задержки китов вместе с балансом. Варп - это маленький отдельный файл, так что перенести варп с тестового сервера можно простым копированием файла. А киты - это только описания: кто что получил и когда, записано в данных каждого игрока, а не в kits.yml.

В старых версиях EssentialsX киты лежали в разделе kits: внутри config.yml. Текущие сборки читают kits.yml и при обновлении переносят старый раздел туда. Если старая инструкция советует править киты в config.yml, то именно поэтому ничего не меняется.

Описание китов в kits.yml#

Кит - это имя, задержка и список предметов. В файле по умолчанию есть один кит tools, который хорошо подходит как шаблон:

plugins/Essentials/kits.yml
kits:  tools:    delay: 10    items:      - stone_pickaxe 1      - stone_shovel 1      - stone_axe 1  starter:    delay: -1    items:      - iron_sword 1 sharpness:2 name:&bStarter_Sword lore:Given_on_day_one      - bread 16      - torch 32      - leather_chestplate 1 color:139,69,19      - $250      - /broadcast {player} has started their journey

Каждая строка предмета использует тот же синтаксис, что и /give в EssentialsX: название материала, количество, затем необязательные метаданные.

  • Зачарования - пары enchantment:level, например sharpness:2 или efficiency:4. На современных версиях используйте новые названия зачарований.
  • `name:` задаёт отображаемое имя. Пробелы пишутся как подчёркивания, цветовые коды с & работают.
  • `lore:` задаёт строки описания. Подчёркивания превращаются в пробелы, а | начинает новую строку.
  • `color:` принимает RGB-тройку для кожаной брони.
  • Строка, начинающаяся с `$`, выдаёт деньги через экономику, так что $250 начисляет игроку 250 при получении кита. Для этого нужна работающая экономика, которую обеспечивает основной jar.
  • Строка, начинающаяся с `/`, выполняется как консольная команда при получении кита. {player} заменяется именем игрока. Так можно выдавать предметы из других плагинов, назначать право или делать объявление.

Названия материалов должны соответствовать версии сервера. Если в ките для 1.20 указан предмет, который позже переименовали или добавили, эта строка не загрузится, и консоль сообщит об этом при запуске или при получении. Сам кит при этом загрузится, только без неудачной строки, поэтому игроки иногда пишут "в ките нет меча", а не "кит сломан".

Изменения в kits.yml вступают в силу после /essentials reload или перезапуска. Для китов перезагрузка подходит, но как универсальный инструмент для других плагинов она не годится.

Создание китов в игре через /createkit

Вручную описывать предметы с большим объёмом NBT утомительно, поэтому EssentialsX умеет копировать ваш инвентарь. Наполните инвентарь ровно тем, что должно быть в ките, и выполните:

bash
/createkit starter -1/createkit daily 86400

Первый аргумент - имя кита, второй - задержка в секундах. Для команды нужно право essentials.createkit. При pastebin-createkit: false в config.yml (значение по умолчанию в текущих сборках) кит записывается прямо в kits.yml; при true плагин загружает кит на сервис вставки текста и выдаёт ссылку, откуда его нужно скопировать - именно это описывают старые руководства.

/createkit сохраняет зачарования, названия, описания и большинство данных предмета. Свежие сборки на Paper могут также хранить предметы кита в сериализованном виде, который сохраняет всё, что несёт предмет, включая данные других плагинов; будет ли так у вас, зависит от версии EssentialsX и параметра в config.yml, поэтому смотрите в собственный файл, а не полагайтесь на инструкцию. В любом случае откройте kits.yml после создания кита и прочитайте, что туда записано. Это единственный способ убедиться, что нестандартный предмет пережил перенос.

Остальные команды для китов:

КомандаПравоЧто делает
/kit или /kitsessentials.kitПоказывает киты, доступные игроку
/kit <name>essentials.kits.<name>Выдаёт кит
/kit <name> <player>essentials.kit.othersВыдаёт кит другому игроку
/showkit <name>essentials.showkitПоказывает содержимое без получения
/delkit <name>essentials.delkitУдаляет описание кита
/kitreset <name> [player]essentials.kitresetСбрасывает задержку (новые сборки)

Задержки китов, одноразовые киты и стоимость#

delay отсчитывается в секундах с момента последнего получения. Несколько значений встречаются постоянно:

delayЗначение
0Без задержки
3600Раз в час
86400Раз в сутки
604800Раз в неделю
-1Один раз за всё время

Задержка хранится в файле userdata игрока в разделе timestamps по имени кита. Отсюда два практических следствия. Переименование кита сбрасывает задержку у всех игроков, потому что старая метка времени больше ни с чем не совпадает. А одноразовый кит остаётся одноразовым, только пока существует файл игрока: после очистки userdata все стартовые киты выдаются заново.

Игроки с правом essentials.kit.exemptdelay вообще игнорируют задержку. Выдавайте его персоналу, который тестирует киты, и никогда не допускайте, чтобы оно случайно попало донатному рангу через наследование: ежедневный кит без ограничений - это дубликатор предметов с правом в придачу.

Чтобы брать плату за кит, используйте command-costs в config.yml. Ключ - это kit- и имя кита:

plugins/Essentials/config.yml
command-costs:  kit-tools: 0  kit-daily: 500  warp: 10  home: 25

Стоимость списывается через экономику при каждом использовании, а игроку, которому не хватает денег, будет отказано. Небольшая плата за многоразовый кит - тихий способ не дать ему превратиться в ферму, а тот же раздел задаёт цену телепортов, о чём речь пойдёт ниже.

Права на киты и кит первого входа#

Доступ к китам определяют два права, и в большинстве неработающих настроек есть только одно из них:

  • essentials.kit разрешает саму команду /kit.
  • essentials.kits.<name> разрешает конкретный кит. essentials.kits.* разрешает все.

Игрок с essentials.kit, но без прав на киты видит пустой список. Игрок с essentials.kits.starter, но без essentials.kit не может выполнить команду. В LuckPerms разумное разделение выглядит так:

bash
/lp group default permission set essentials.kit true/lp group default permission set essentials.kits.starter true/lp group default permission set essentials.kits.tools true/lp group vip permission set essentials.kits.vip true/lp group admin permission set essentials.kit.exemptdelay true

Если vip наследует от default, VIP получают и стартовый кит, и кит с инструментами, что обычно и нужно. Руководство по LuckPerms объясняет наследование и то, почему выдача прав группам, а не отдельным игрокам, делает всё это проверяемым.

Чтобы выдавать кит автоматически при первом входе игрока, используйте раздел newbies в config.yml. Он относится к EssentialsX Spawn, поэтому без этого модуля ничего не делает:

plugins/Essentials/config.yml
newbies:  announce-format: '&dWelcome {DISPLAYNAME}&d to the server!'  spawnpoint: newbies  kit: starter

kit задаёт кит, выдаваемый при первом входе, независимо от прав игрока на киты. Пустая строка означает, что ничего не выдаётся. spawnpoint указывает на спавн, созданный командой /setspawn newbies, так что новички могут появляться в обучающей зоне, а остальные возрождаются на основном спавне. Если вы выдаёте стартовый кит таким способом, сделайте у него delay: -1 и не давайте право на него группе по умолчанию, иначе новички заберут его второй раз через /kit.

Варпы: /setwarp и права на каждый варп#

Варп - это именованная точка, в которую может телепортироваться любой игрок с нужным правом. Встаньте туда, где должен оказываться игрок, лицом в нужную сторону, и выполните /setwarp <name>. Позиция вместе с наклоном и поворотом головы сохраняется в warps/<name>.yml.

КомандаПравоЧто делает
/setwarp <name>essentials.setwarpСоздаёт или переносит варп
/warpessentials.warp.listПоказывает варпы по страницам
/warp <name>essentials.warpТелепортирует к варпу
/warp <name> <player>essentials.warp.othersОтправляет к варпу другого игрока
/delwarp <name>essentials.delwarpУдаляет варп

По умолчанию любой игрок с essentials.warp может использовать все варпы. Для сервера с shop, mine и порталом end это нормально, но становится неправильным, как только появляется зона персонала или остров для донатеров. Включите доступ к каждому варпу в config.yml:

plugins/Essentials/config.yml
per-warp-permission: true

После этого для каждого варпа нужно своё право essentials.warps.<name>, а essentials.warps.* даёт доступ ко всем. В списке варпов отображаются только те, которыми игрок может пользоваться, и это главная причина включить параметр, даже если все варпы публичные: можно добавить скрытый staffroom, и он не появится в списке у всех.

bash
/lp group default permission set essentials.warps.spawn true/lp group default permission set essentials.warps.shop true/lp group default permission set essentials.warps.mine true/lp group vip permission set essentials.warps.vipisland true/lp group mod permission set essentials.warps.* true

/setwarp с уже существующим именем молча переносит варп. Оставьте essentials.setwarp тем, кто строит сервер, а essentials.delwarp выдавайте ещё более узкому кругу. Варп, указывающий на мир, который больше не загружен (это частое следствие удаления мира Multiverse), даёт ошибку про мир, а не про варп, и этот признак полезно знать; о том, как чисто загружать и выгружать миры, рассказывает статья о нескольких мирах с Multiverse.

Дома и лимиты sethome-multiple#

/sethome сохраняет именованную точку в файле самого игрока, а /home возвращает к ней. С одним домом имя необязательно и по умолчанию равно home. Если домов несколько, игроки дают им имена: /sethome base, /sethome farm, /home farm. Команда /home при нескольких домах и без имени выводит их список.

Лимит задаётся этой таблицей в config.yml, здесь она показана со значениями по умолчанию:

plugins/Essentials/config.yml
sethome-multiple:  default: 3  vip: 5  staff: 10

Ключи - произвольные имена, а не названия групп. Каждому ключу соответствует право:

  • essentials.sethome.multiple - требуется, чтобы у игрока вообще могло быть больше одного дома.
  • essentials.sethome.multiple.<key> - даёт число для этого уровня, так что essentials.sethome.multiple.vip разрешает 5.
  • essentials.sethome.multiple.unlimited - без ограничений.

Игрок с несколькими уровневыми правами получает наибольшее из чисел, поэтому из-за наследования VIP не откатится до 3. Игрок без essentials.sethome.multiple получает один дом, что бы ни было в таблице. Это единственное пропущенное право стоит за большинством обращений вида "у моего ранга должно быть пять домов". Свои уровни можно добавлять свободно: достаточно строки legend: 15 и права essentials.sethome.multiple.legend у нужной группы.

bash
/lp group default permission set essentials.sethome true/lp group default permission set essentials.home true/lp group default permission set essentials.delhome true/lp group default permission set essentials.sethome.multiple true/lp group vip permission set essentials.sethome.multiple.vip true/lp group mod permission set essentials.home.others true

essentials.home.others позволяет персоналу заходить в чужой дом командой /home <player>:<homename>, что полезно при расследовании жалоб на грифинг и не нужно никому другому.

Несколько связанных параметров в том же файле стоит выбрать осознанно:

  • spawn-if-no-home - если true, то /home без заданных домов отправляет игрока на спавн, а не выдаёт ошибку.
  • update-bed-at-daytime - позволяет игрокам задавать точку возрождения у кровати, нажав на неё днём, так что /home bed указывает на разумное место.
  • world-home-permissions - если true, для дома в мире требуется право на этот мир. Удобно, чтобы дома не оставались в ресурсном мире, который вы сбрасываете.

Дома - это удобство, меняющее характер игры на выживании. Неограниченные бесплатные дома превращают мир в набор точек телепорта, и никто не строит дороги. Обычный компромисс - небольшое число для новичков, чуть больше для рангов и небольшая плата home в command-costs.

/spawn с EssentialsX Spawn#

Без модуля Spawn команды /spawn от EssentialsX нет. Скачайте EssentialsXSpawn той же версии, что и основной jar (несовпадение версий - частая причина ошибок при запуске), и положите оба файла в plugins/.

Затем встаньте на место спавна и выполните /setspawn. Это запишет позицию в spawn.yml. Команда /setspawn <group> задаёт отдельный спавн для одной группы прав, так что VIP-группа может появляться в собственном хабе, а /setspawn newbies создаёт точку первого входа, на которую ссылается раздел newbies.

КомандаПравоЧто делает
/setspawn [group]essentials.setspawnЗадаёт спавн по умолчанию или для группы
/spawnessentials.spawnТелепортирует на ваш спавн
/spawn <player>essentials.spawn.othersОтправляет игрока на спавн

Модуль также управляет тем, где игроки появляются после смерти и при входе. Важные параметры:

plugins/Essentials/config.yml
respawn-at-home: falsespawn-on-join: falserespawn-listener-priority: highspawn-join-listener-priority: high

Что решает каждый из них:

  • respawn-at-home отправляет погибших игроков в их дом, а не на спавн. Большинство выживальных серверов оставляют его выключенным и позволяют решать кровати.
  • spawn-on-join отправляет игроков на спавн при каждом входе. Принимает true, false, а также имя группы или список групп, так что на спавн можно отправлять только игроков default, а ранги будут входить там, где вышли. Персонал с правом essentials.spawn-on-join.exempt пропускается.
  • Два приоритета обработчиков решают, чья команда победит, если другой плагин тоже хочет перемещать игроков при возрождении или входе. Если плагин лобби или Multiverse постоянно перебивает ваш спавн, регулировать нужно именно их.

Этот последний момент ловит многие серверы: игроки не могут ломать блоки на месте, которое выглядит как открытая местность, потому что невидимый квадрат защиты в 16 блоков расположен вокруг исходного спавна мира, а не того, что использует EssentialsX. Параметр spawn-protection и то, почему он действует только на не-операторов, разобраны в статье о server.properties.

Задержки телепорта, кулдауны и безопасность#

Каждый телепорт EssentialsX - /home, /warp, /spawn, /tpa, /back - проходит через одни и те же настройки, поэтому настраивать их нужно один раз:

plugins/Essentials/config.yml
teleport-cooldown: 0teleport-delay: 0teleport-invulnerability: 4teleport-safety: true
ПараметрДействие
teleport-delayСколько секунд игрок должен простоять на месте
teleport-cooldownЧерез сколько секунд можно телепортироваться снова
teleport-invulnerabilityСекунды защиты после прибытия
teleport-safetyОтклоняет или корректирует опасные точки назначения

Короткий teleport-delay в три-пять секунд - самая эффективная мера против ухода от боя через телепорт: игрок должен стоять на месте, пока его бьют, а движение отменяет телепорт. Персонал может обходить задержку правом essentials.teleport.timer.bypass, а кулдаун - правом essentials.teleport.cooldown.bypass. Оставьте teleport-safety включённым: он не даёт дому, заданному над лавой, или варпу, пол под которым кто-то выкопал, убить того, кто им воспользуется.

В сочетании с command-costs эти параметры определяют, насколько важна карта мира на вашем сервере. Бесплатные, мгновенные и неограниченные телепорты лишают расстояние смысла. Несколько секунд задержки и небольшая плата сохраняют большую часть удобства, но делают долгую прогулку иногда лучшим вариантом.

Резервные копии домов, варпов и китов#

Всё в этом руководстве - небольшие YAML-файлы в plugins/Essentials/, и ничто из этого не входит в папку мира. Копия одного только мира восстанавливает ландшафт и теряет все дома, варпы и задержки китов с момента последнего сохранения данных плагина; копия одного только плагина делает обратное. Копируйте их вместе. Что включать в копию и как безопасно откатываться, описано в статье о резервных копиях мира Minecraft и восстановлении.

На RE:NODE серверы Minecraft работают на Paper с подходящей версией Java, а jar-файлы EssentialsX загружаются через файловый менеджер или SFTP, как любой другой плагин. В файловом менеджере есть редактор с подсветкой синтаксиса для kits.yml и config.yml, что помогает с отступами в YAML, а слоты backup на каждом игровом тарифе покрывают весь каталог сервера, включая данные плагинов. Сделайте копию перед включением per-warp-permission или правкой sethome-multiple на работающем сервере.

Устранение неполадок#

"You do not have permission to use that kit." У игрока есть essentials.kit, но нет essentials.kits.<name>. Проверьте точное имя кита в праве: это ключ в kits.yml, в нижнем регистре.

Список китов пуст. Та же причина с другой стороны: нет ни одного права essentials.kits.* или киты не загрузились. Поищите ошибку YAML при запуске: символ табуляции или пропущенный пробел после двоеточия не даёт загрузиться всему файлу.

Правки китов в `config.yml` ничего не меняют. Киты переехали в kits.yml. Правьте этот файл и выполните /essentials reload.

При получении кита не хватает предмета. В одной из строк предмета указан материал, неизвестный этой версии сервера. Консоль называет эту строку.

Игроки застряли на одном доме. У них нет essentials.sethome.multiple. Одного права уровня недостаточно.

`/spawn` - неизвестная команда. EssentialsX Spawn не установлен или не загрузился из-за того, что его версия не совпадает с основным jar.

Игроки возрождаются не там. Возрождением занимается другой плагин с более высоким приоритетом либо включён respawn-at-home. Проверьте Multiverse и плагины лобби, затем измените respawn-listener-priority.

Варп сообщает, что мира не существует. Мир, на который он указывает, переименован или выгружен. Создайте варп заново в загруженном мире.

FAQ#

Как сделать кит, который можно получить только один раз?

Задайте ему delay: -1 или создайте командой /createkit <name> -1. Получение записывается в файл userdata игрока, поэтому кит остаётся одноразовым, пока этот файл не удалён и кит не переименован.

Можно ли автоматически выдавать кит новым игрокам?

Да, при установленном EssentialsX Spawn: укажите имя кита в kit: раздела newbies в config.yml. Он выдаётся при первом входе независимо от прав игрока на киты.

Как дать рангу больше домов?

Добавьте строку в sethome-multiple, например vip: 5, затем выдайте этому рангу оба права: essentials.sethome.multiple и essentials.sethome.multiple.vip. Игрок получает наивысший уровень из тех, что у него есть.

Можно ли скрыть некоторые варпы из списка?

Включите per-warp-permission. Тогда игроки видят и используют только те варпы, на которые у них есть essentials.warps.<name>, так что варп персонала без публичного права невидим для остальных.

Нужен ли EssentialsX Spawn, если я использую другой плагин спавна?

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

Почему игроки не могут ломать блоки возле спавна, хотя он не защищён?

Ванильный spawn-protection центрируется на спавне мира, а не на спавне EssentialsX. Перенесите спавн мира командой /setworldspawn или задайте spawn-protection=0.