Киты 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 и только те модули, которыми действительно пользуетесь: каждый из них добавляет обработчики событий на сервере, где главный поток общий для всех.
Каждая функция хранит данные в своём месте, и знание того, какой файл за что отвечает, избавляет от долгих догадок, когда что-то пропало:
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, который хорошо подходит как шаблон:
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 умеет копировать ваш инвентарь. Наполните инвентарь ровно тем, что должно быть в ките, и выполните:
/createkit starter -1/createkit daily 86400Первый аргумент - имя кита, второй - задержка в секундах. Для команды нужно право essentials.createkit. При pastebin-createkit: false в config.yml (значение по умолчанию в текущих сборках) кит записывается прямо в kits.yml; при true плагин загружает кит на сервис вставки текста и выдаёт ссылку, откуда его нужно скопировать - именно это описывают старые руководства.
/createkit сохраняет зачарования, названия, описания и большинство данных предмета. Свежие сборки на Paper могут также хранить предметы кита в сериализованном виде, который сохраняет всё, что несёт предмет, включая данные других плагинов; будет ли так у вас, зависит от версии EssentialsX и параметра в config.yml, поэтому смотрите в собственный файл, а не полагайтесь на инструкцию. В любом случае откройте kits.yml после создания кита и прочитайте, что туда записано. Это единственный способ убедиться, что нестандартный предмет пережил перенос.
Остальные команды для китов:
| Команда | Право | Что делает |
|---|---|---|
/kit или /kits | essentials.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- и имя кита:
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 разумное разделение выглядит так:
/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, поэтому без этого модуля ничего не делает:
newbies: announce-format: '&dWelcome {DISPLAYNAME}&d to the server!' spawnpoint: newbies kit: starterkit задаёт кит, выдаваемый при первом входе, независимо от прав игрока на киты. Пустая строка означает, что ничего не выдаётся. spawnpoint указывает на спавн, созданный командой /setspawn newbies, так что новички могут появляться в обучающей зоне, а остальные возрождаются на основном спавне. Если вы выдаёте стартовый кит таким способом, сделайте у него delay: -1 и не давайте право на него группе по умолчанию, иначе новички заберут его второй раз через /kit.
Варпы: /setwarp и права на каждый варп#
Варп - это именованная точка, в которую может телепортироваться любой игрок с нужным правом. Встаньте туда, где должен оказываться игрок, лицом в нужную сторону, и выполните /setwarp <name>. Позиция вместе с наклоном и поворотом головы сохраняется в warps/<name>.yml.
| Команда | Право | Что делает |
|---|---|---|
/setwarp <name> | essentials.setwarp | Создаёт или переносит варп |
/warp | essentials.warp.list | Показывает варпы по страницам |
/warp <name> | essentials.warp | Телепортирует к варпу |
/warp <name> <player> | essentials.warp.others | Отправляет к варпу другого игрока |
/delwarp <name> | essentials.delwarp | Удаляет варп |
По умолчанию любой игрок с essentials.warp может использовать все варпы. Для сервера с shop, mine и порталом end это нормально, но становится неправильным, как только появляется зона персонала или остров для донатеров. Включите доступ к каждому варпу в config.yml:
per-warp-permission: trueПосле этого для каждого варпа нужно своё право essentials.warps.<name>, а essentials.warps.* даёт доступ ко всем. В списке варпов отображаются только те, которыми игрок может пользоваться, и это главная причина включить параметр, даже если все варпы публичные: можно добавить скрытый staffroom, и он не появится в списке у всех.
/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, здесь она показана со значениями по умолчанию:
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 у нужной группы.
/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 trueessentials.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 | Задаёт спавн по умолчанию или для группы |
/spawn | essentials.spawn | Телепортирует на ваш спавн |
/spawn <player> | essentials.spawn.others | Отправляет игрока на спавн |
Модуль также управляет тем, где игроки появляются после смерти и при входе. Важные параметры:
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 - проходит через одни и те же настройки, поэтому настраивать их нужно один раз:
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.


