Как по логу найти файл и строку, где сломался конфиг, и десять ошибок YAML, которые встречаются постоянно: от табуляции до цвета с решёткой.
Поставили плагин, перезапустили сервер, а команды нет. Или плагин работал, вы поправили одну строчку в конфиге, и он перестал отвечать. Чаще всего виноват не плагин, а один символ в config.yml. Ниже порядок поиска и ошибки, которые попадаются раз за разом.
Это два разных случая, и лечатся они по-разному.
Could not load 'plugins/Имя.jar'. Конфиг тут почти никогда ни при чём: плагин собран под другую версию игры или Java, не хватает зависимости вроде Vault или ProtocolLib, в папке лежат две копии одного плагина. Про установку плагинов есть отдельная статья.InvalidConfigurationException, YAML или SnakeYAML. Плагин работает на настройках по умолчанию, отключается сам или падает на первой команде. Это наш случай.logs/latest.log. В нём весь запуск с первой строки, а консоль хостинга часто показывает только хвост.line и column: строка и позиция, где парсер сдался. Сама ошибка часто на строку-две выше.grep, а если стоит Python с PyYAML, он прочитает файл целиком и назовёт ошибку./reload всего сервера не используйте.grep -nP '\t' plugins/Имя/config.yml
python3 -c "import yaml; yaml.safe_load(open('plugins/Имя/config.yml', encoding='utf-8'))"Вторая команда молчит, если синтаксис цел. Если нет, напишет, на какой строке беда.
YAML принимает для отступов только пробелы. Один таб, и файл не читается целиком. Ошибка узнаётся сразу:
found character '\t(TAB)' that cannot start any token. (Do not use \t(TAB) for indentation)Замените табы на пробелы и включите в редакторе вставку пробелов по клавише Tab.
Отступ определяет, какому разделу принадлежит ключ. Сдвинули строку на два пробела влево, и она уехала в соседний раздел. Хуже всего то, что ошибки часто нет: файл валиден, просто плагин ищет настройку в другом месте.
# плохо: radius оказался в settings, а не в spawn
settings:
spawn:
world: world
radius: 50
# хорошо
settings:
spawn:
world: world
radius: 50radius:50 для YAML не ключ со значением, а одна строка текста. Рядом с нормальными ключами это даёт ошибку could not find expected ':', а в одиночку молча превращает раздел в строку. Правило простое: после двоеточия ключа всегда пробел.
Сообщение вроде restart: Внимание: перезагрузка через минуту ломает файл с ошибкой mapping values are not allowed here. Второе двоеточие с пробелом YAML считает началом нового ключа. Лечится кавычками:
restart: '&cВнимание: перезагрузка через минуту'Решётка после пробела начинает комментарий. color: #FFAA00 читается как пустое значение, а сам цвет становится комментарием. Ошибки в логе не будет, просто цвет не применится. Всё, что начинается с #, берите в кавычки: color: '#FFAA00'.
Ряд символов в начале значения YAML понимает по-своему: & это якорь, * ссылка, ! тип, [ и { начало списка и словаря, а % и @ вообще не могут начинать текст без кавычек. Для серверов это больная тема, потому что цветовые коды начинаются с &, а плейсхолдеры с %.
# плохо
prefix: &c[Админ]
format: %player_name% зашёл
tag: [VIP] Вася
# хорошо
prefix: '&c[Админ] '
format: '%player_name% зашёл'
tag: '[VIP] Вася'В одинарных кавычках апостроф удваивается: 'You don''t have permission'. В двойных кавычках обратная косая черта служит экраном, поэтому "C:\server" даст ошибку found unknown escape character. Для путей и текста с косой чертой берите одинарные кавычки.
Описание предмета, список команд или миров плагин ждёт списком. Если написать одной строкой, он либо проигнорирует её, либо упадёт при открытии меню.
# плохо
lore: '&7Редкий меч'
# хорошо
lore:
- '&7Редкий меч'
- '&7Урон +5'Пустой список пишется как [], а не пустым местом. И после дефиса тоже нужен пробел.
Загрузчик Bukkit по старым правилам YAML превращает yes, no, on и off в логические значения, а 1.20 в число 1.2. Если плагин ждёт текст, ответ викторины no станет false, а версия потеряет ноль. Такие значения тоже в кавычки: version: '1.20'.
Файл, сохранённый не в UTF-8, превращает русский текст в кракозябры. Текст, скопированный из мессенджера или с сайта, иногда приносит неразрывные пробелы. Глазами отступ ровный, а для парсера это не пробел, и ключ получает лишний символ в имени. Сохраняйте в UTF-8 и перебивайте отступы руками, если строка пришла из чата.
config.yml, messages.yml, папка с языками. После обновления рядом может лежать старая копия конфига с другим именем.settings: в одном файле. В зависимости от загрузчика победит последний или файл не прочитается вовсе.В Cloud Panel настройки девяти популярных плагинов открываются формой с русскими подписями: Citizens, DecentHolograms, DeluxeMenus, Essentials, ItemsAdder, LuckPerms, MythicMobs, TAB и WorldGuard. Вы меняете значение в поле, а панель записывает в файл только его. Отступы, комментарии и остальные строки остаются байт в байт, так что табуляции и сбитому отступу взяться неоткуда.
Каждая правка попадает в журнал, любую можно откатить. Консоль, файлы и перезапуск сервера в том же окне. Если плагина нет в списке или файл уже сломан ручной правкой, чинить его придётся по шагам выше: за вас ошибку панель не угадает.
latest.log найдены файл, строка и столбец первой ошибки.:, #, &, %, @, [ в кавычках.Править конфиги формой и откатывать одной кнопкой можно на своём сервере: 3 дня бесплатно.
Мы делаем сборки, плагины и сайты для серверов Minecraft с 2022 года. Готовое решение ставится на ваш хостинг за вечер, установку делаем бесплатно.