Если плагин или мод во время работы сталкивается с программной ошибкой, Java записывает в лог сообщение об ошибке со стектрейсом. Стектрейс — это список строк с «at» под строкой с ошибкой. Он показывает, какая часть программы выполнялась в тот момент, и обычно выдаёт ответственный плагин или мод. Большинство таких ошибок не выводит сервер из строя, но какая-то функция перестаёт работать, а повторяющиеся ошибки засоряют консоль.
Каждый раздел ниже посвящён одному сообщению: как оно выглядит, что за ним стоит и что ты можешь сделать. Полное сообщение ты найдёшь в Консоль или в разделе Файлы в logs/latest.log. Читай там также строки непосредственно до и после него. Прежде чем менять файлы конфигурации или мира либо заменять плагины, создай резервную копию в разделе Резервные копии. Файлы плагинов лучше заменять при остановленном сервере.
NullPointerException: плагин или мод обращается к отсутствующему значению
Так выглядит сообщение:
java.lang.NullPointerException: Cannot invoke "org.bukkit.inventory.meta.ItemMeta.getDisplayName()" because the return value of "org.bukkit.inventory.ItemStack.getItemMeta()" is null
at <Plugin>.jar//<Package>.<Class>.<Method>(<Class>.java:<Line>)
В чём причина: плагин или мод попытался работать с объектом, которого в этом месте не существует. Java называет такое пустое значение «null». После «Cannot invoke» указан вызванный метод, после «because» — отсутствующее значение, в примере это дополнительные данные предмета. Строки «at» ниже называются стектрейсом: это цепочка вызовов до ошибки. Первая строка указывает на виновника. Сервер продолжает работать, прерывается только затронутое действие.
Как исправить:
- Открой полное сообщение в Консоль или в
logs/latest.logи прочитай первую строку «at». - Для плагинов там указано имя файла вроде
<Plugin>.jar, для модов — файл мода в квадратных скобках. Если там только части сервера, напримерorg.bukkitилиnet.minecraft, читай дальше до первого названия плагина или мода. - Обнови этот плагин в разделе Плагины или мод в разделе Моды. Файлы, загруженные самостоятельно, ты заменяешь в разделе Файлы в папке
plugins/илиmods/. - Если после обновления ошибка остаётся, сообщи о ней автору, приложив полное сообщение и действие, при котором она возникает.
Полезно знать: если на сервере с модами в строке есть pl:mixin:APP:<mod>.mixins.json, этот мод изменил данное место через Mixin (вмешательство в чужие части игры) и является хорошим вторым подозреваемым.
«Could not pass event»: плагин падает при игровом событии
Так выглядит сообщение:
Could not pass event PlayerInteractEvent to <Plugin> v<Version>
java.lang.NoSuchMethodError: 'java.util.Map org.bukkit.inventory.PlayerInventory.addItem(org.bukkit.inventory.ItemStack[])'
at <Plugin>.jar//<Package>.<Class>.<Method>(<Class>.java:<Line>)
В чём причина: плагины реагируют на события (events), например на вход игрока, клик в инвентаре или получение урона. Если плагин при этом выбросил исключение, то есть ошибку Java, прерывающую выполнение, сервер перехватывает её и пишет это сообщение. После «to» указаны плагин и версия, перед этим — событие. Решающая строка — та, что ниже: «NoSuchMethodError» или «NoSuchFieldError» означает, что плагин собран для другой версии сервера и ищет функцию, которой там нет. Другие типы ошибок обычно указывают на ошибку в самом плагине. Сервер продолжает работать, функция плагина при этом событии не выполняется.
Как исправить:
- Прочитай в Консоль название плагина и версию после «to», а также строку с ошибкой прямо под ней.
- Проверь в разделе Версия, какая версия сервера запущена, и найди на странице плагина сборку, которая поддерживает именно эту версию.
- Установи новую сборку в разделе Плагины и перезапусти сервер.
- Если ошибка остаётся, сообщи о ней автору плагина, указав строку «Could not pass event …» и строку с ошибкой под ней.
Подробнее о «NoSuchMethodError» и «NoSuchFieldError»: Плагин не подходит к версии сервера.
«Task … generated an exception»: задача плагина падает в фоне
Так выглядит сообщение:
[<Plugin>] Task #46 for <Plugin> v<Version> generated an exception
java.lang.IllegalArgumentException: missing required data class org.bukkit.Color
В чём причина: плагины планируют задачи (tasks), которые выполняются регулярно, например показывают частицы, обновляют голограммы или сохраняют данные. Одна из таких задач прервалась с ошибкой. Если это происходит постоянно, часто каждую секунду, плагин, как правило, несовместим с установленной версией сервера. Обычно это случается после обновления сервера или плагина. Сервер продолжает работать, но функции плагина частично не работают, а консоль заполняется сообщениями.
Как исправить:
- Прочитай название плагина после «for» и строку с ошибкой под ней.
- Проверь в разделе Плагины, есть ли для этого плагина более новая сборка под твою версию сервера, установи её и перезапусти сервер.
- Если подходящей сборки нет, временно отключи плагин. Для этого перенеси файл .jar в разделе Файлы из папки
plugins/в отдельную папку и перезапусти сервер. Постоянная ошибка иначе замедляет сервер. - После перезапуска проверь в Консоль, что сообщение больше не появляется.
Полезно знать: если под сообщением стоит «NoSuchMethodError» или «NoSuchFieldError», это почти всегда вопрос версии. О других типах ошибок сообщай автору, если они появляются и в самой новой сборке.
Команда или задача плагина прерывается с ошибкой
Так выглядит сообщение:
[Essentials] Command <Command> failed:
[<Plugin>] Plugin <Plugin> v<Version> generated an exception while executing task <Number>
Error executing task on Server
В чём причина: плагин прервался с исключением при выполнении команды или запланированной задачи. Три строки выше — типичные формы этого сообщения. Сервер продолжает работать, а вот затронутая функция плагина — нет. Настоящая причина указана в строках ниже, а при вложенных ошибках — в строке «Caused by». Если там написано «Cannot perform command async», плагин запустил команду из фонового потока. Поток — это параллельная линия выполнения, а команды может выполнять только главный поток сервера. Это ошибка в плагине.
Как исправить:
- Найди под сообщением строку «Caused by» или первую строку с «Exception» или «Error».
- Определи плагин: он указан в самом сообщении или в строках «at» как
<Plugin>.jar. - Обнови плагин в разделе Плагины до сборки под твою версию сервера и перезапусти сервер.
- Попробуй команду снова. Если ошибка остаётся, сообщи о ней автору, указав команду, время и полное сообщение.
Полезно знать: «NoSuchFieldError» с названием частицы или атрибута означает, что плагин использует имя, которое твоя версия сервера больше не знает. Тогда поможет только более новая сборка плагина.
ClassCastException: два мода или плагина не подходят друг к другу
Так выглядит сообщение:
java.lang.ClassCastException: class <PackageA>.<ClassA> cannot be cast to class <PackageB>.<ClassB>
В чём причина: Java работает с жёстко заданными типами данных. Здесь мод или плагин ожидал объект определённого типа, но другой компонент передал ему объект другого типа. Названия пакетов перед названиями классов, например net.<author>.<mod>, обычно показывают, какие два мода или плагина задействованы. Типичная ситуация: один мод обновили, а зависимый от него — нет. Часто перестаёт работать только одна функция, например добыча из сундуков или клик в инвентаре.
Как исправить:
- Прочитай оба названия классов в сообщении и по названиям пакетов определи, каким модам или плагинам они принадлежат.
- Проверь, какой из двух обновлялся последним.
- Приведи оба к совместимым версиям: либо обнови оба, либо верни оба к предыдущему состоянию. На страницах проектов указано, что с чем совместимо.
- Если используется Modpack, лучше обновить весь Modpack, а не отдельные моды.
- Перезапусти сервер и проверь, появляется ли сообщение снова при том же действии.
Подробнее о конфликтах модов: Ошибки модов на Forge, NeoForge и Fabric.
ArrayIndexOutOfBoundsException: обращение к отсутствующему элементу списка
Так выглядит сообщение:
java.lang.ArrayIndexOutOfBoundsException: Index 3 out of bounds for length 3
at <Plugin>.jar//<Package>.Util.getBukkitVersion(Util.java:<Line>)
В чём причина: плагин или мод попытался прочитать элемент из списка, который короче. Java считает с 0: «Index 3 … length 3» означает, что есть только элементы с 0 по 2. Частые причины — команда со слишком малым количеством аргументов или строка конфигурации, в которой не хватает значений. Кроме того, старые плагины спотыкаются, когда определяют версию сервера по внутреннему названию, которое новые версии сервера формируют иначе. Тогда в строке «at» часто есть что-то со словом «Version», как в примере. Сервер продолжает работать.
Как исправить:
- Прочитай первую строку «at» под сообщением. Она указывает на плагин или мод.
- Если ошибка возникла при выполнении команды, проверь в справке плагина, не пропущен ли аргумент.
- Если незадолго до этого ты менял конфигурацию, сравни затронутую строку с шаблоном на странице плагина или с резервной копией.
- Обнови плагин в разделе Плагины и перезапусти сервер. Если ошибка остаётся, сообщи о ней автору.
Помощь при неверных настройках: Конфигурационный файл плагина содержит ошибки.
NumberFormatException: текст должен был быть числом
Так выглядит сообщение:
java.lang.NumberFormatException: For input string: "%vault_eco_balance_fixed%"
java.lang.NumberFormatException: For input string: "craftbukkit"
Что за этим стоит: Игра, мод или плагин попытался прочитать текстовое значение как число, но текст числом не был. В кавычках указано то, что реально пришло. Причиной может быть конфигурация, неожиданное значение данных или ошибка версии либо программы. Два случая можно распознать по значению: плейсхолдер со знаками процента, как выше, не был заменён. Чаще всего в этом случае не хватает подходящего расширения для PlaceholderAPI (плагина, который заполняет такие плейсхолдеры) или плагина, который поставляет значение. Слово вроде craftbukkit указывает на то, что более старый плагин неправильно считывает версию сервера.
Как это исправить:
- Проверь полный стектрейс и обнови указанный там компонент.
- Если дело в плейсхолдере: проверь в игре командой
/papi parse me <плейсхолдер>, возвращает ли он значение. Если нет, установи подходящее расширение PlaceholderAPI, например командой/papi ecloud download <имя>, и загрузи его командой/papi reload. - Если в сообщении указан файл или параметр, сравни значение со стандартной конфигурацией плагина.
- Перезапусти сервер и снова вызови это действие.
ArrayIndexOutOfBoundsException без дополнительных сведений
Так выглядит сообщение:
[<Plugin>] Error occurred while loading item: 2
java.lang.ArrayIndexOutOfBoundsException
Что за этим стоит: Плагин или мод использовал недопустимый индекс списка, как в предыдущем разделе. Но здесь отсутствуют индекс и длина. Так бывает, когда одна и та же ошибка возникает очень часто: из соображений производительности Java в таком случае опускает подробности. Строка перед сообщением часто подсказывает, какой плагин что собирался сделать, в примере это загрузка записи. Первая строка стектрейса под сообщением, если она есть, указывает на виновника.
Как это исправить:
- Прочитай строку непосредственно перед сообщением. Там часто указан плагин в квадратных скобках.
- Прочитай первую строку стектрейса под сообщением.
- Если нет ни того, ни другого, найди в
logs/latest.logвыше первое появление ошибки. Там она обычно ещё приведена полностью. Более старые логи лежат в архивах в папкеlogs/. - Обнови плагин или мод, названный первым. Если строка перед сообщением называет конкретную запись, проверь её в конфигурации плагина.
- Если ошибка остаётся, сообщи о ней автору.
ExceptionInInitializerError: класс плагина или мода не удаётся инициализировать
Так выглядит сообщение:
Exception in thread "ForkJoinPool-3-worker-1" java.lang.ExceptionInInitializerError
Caused by: <Тип ошибки>: <Сообщение>
В чём причина: Java инициализирует каждый класс, то есть каждый строительный блок программы, один раз при первом использовании. Именно в этот момент произошёл сбой класса плагина или мода. После этого класс остаётся непригодным до конца работы сервера, поэтому часто следуют другие ошибки, например «NoClassDefFoundError» с тем же именем класса. Настоящую причину и, как правило, затронутый плагин или мод указывает цепочка «Caused by» ниже. В зависимости от места сбоя не работает одна функция или плагин либо мод вообще не загружается.
Как это исправить:
- Открой Консоль или файл
logs/latest.logи прочитай первую строку «Caused by» под сообщением. - По строкам «at» ниже определи плагин или мод, например по имени файла с
.jar. - Обнови его или замени версией, которая подходит к версии и программному обеспечению твоего сервера.
- Перезапусти сервер. Класс будет инициализирован заново только при следующем запуске.
Если вопрос в версиях, поможет эта статья: Плагин не подходит к версии сервера.
Внутренняя ошибка в плагине, например при сохранении
Так выглядит сообщение:
[MultiWorld] ERROR HAPPEND: <Сообщение>
Unable to save player profile for <Игрок>
<Plugin> v<Версия> generated an exception whilst handling plugin message
Что за этим стоит: Плагин столкнулся с ошибкой при выполнении собственной задачи, например при сохранении, обработке сообщения или запуске. Сообщения плагинов — это пакеты данных, которыми, например, прокси вроде BungeeCord или Velocity обменивается с сервером. Имя плагина показано в сообщении в квадратных скобках или в начале строки. В зависимости от ошибки перестаёт работать только это действие либо плагин отключается. Если речь о сохранении, займись этим как можно скорее, чтобы не потерять данные.
Как это исправить:
- Прочитай имя плагина и строки непосредственно под сообщением в Консоль.
- Обнови плагин в разделе Плагины и перезапусти сервер.
- Если ошибка остаётся, создай резервную копию, ради проверки удали плагин и посмотри, исчезнет ли сообщение.
- Сообщи об ошибке автору плагина, приложив строки из консоли.
Если сохранение не удаётся снова и снова: Плагин не может сохранить базу данных или файлы.
Отчёт об ошибке Skript с #!#!: скрипт не загружается
Так выглядит сообщение:
#!#! Current node: <Line from the .sk file>
#!#! End of Error.
В чём причина: Skript — это плагин, с помощью которого ты пишешь функции сервера в простых текстовых файлах с расширением .sk. Если при загрузке скрипта или аддона он обнаруживает серьёзную ошибку, он пишет отчёт, все строки которого начинаются с #!#!. Частые причины: аддон, например skript-reflect или SkBee, не подходит к установленной версии Skript, либо файл плагина был заменён при работающем сервере. Тогда в отчёте стоит «zip file closed». Затронутый скрипт не работает, сервер продолжает работу.
Как это исправить:
- Найди в отчёте строку «Current node» (в ней указан затронутый файл .sk) и строку «Caused by».
- Проверь на страницах проектов, какие версии аддонов подходят к твоей версии Skript, и приведи Skript и аддоны к совместимым версиям.
- Заменяй файлы плагинов только при остановленном сервере, а затем перезапусти сервер.
- Загрузи скрипт командой
/sk reload <file>и прочитай вывод в Консоль.
Полезно знать: Скрипты лежат в разделе Файлы в папке plugins/Skript/scripts/. Прежде чем менять файл, сделай его резервную копию.
IndexOutOfBoundsException: «must be less than size»
Так выглядит сообщение:
Caused by: java.lang.IndexOutOfBoundsException: index (1) must be less than size (1)
Что за этим стоит: Игра, мод или плагин запросил элемент списка, которого не существует. «index (1) must be less than size (1)» означает: в списке ровно один элемент с номером 0, а запрошен был номер 1. Возможно, причастна конфигурация, но одно это сообщение этого не доказывает. Если перед ним стоит «Caused by:», оно является причиной ошибки, о которой сообщалось выше. Что именно перестаёт работать, показывает то верхнее сообщение.
Как это исправить:
- Прочитай полный стектрейс в
logs/latest.log, включая сообщение об ошибке над ним. - Найди первую строку «at», которая называет внешний компонент, то есть плагин или мод, а не Java или библиотеку вроде
java.baseилиcom.google.common. - Обнови этот компонент и перезапусти сервер.
- Только если связь указывает на конкретный список, например записи меню или награды, проверь его конфигурацию на отсутствующие или пустые записи.
«Asynchronous Save Players»: плагин сохраняет данные из неправильного потока
Так выглядит сообщение:
Asynchronous Save Players! Blocking thread until it returns
java.lang.IllegalStateException
at io.papermc.paper.util.MCUtil.ensureMain(MCUtil.java:<Line>)
В чём причина: Плагин запустил сохранение данных всех игроков из фонового потока, то есть из параллельной цепочки выполнения рядом с главным потоком, который рассчитывает мир. Так делать не предусмотрено. Paper блокирует поток, пока сохранение не завершится, и выводит это предупреждение. Это ошибка в плагине, которая может вызывать короткие подлагивания. Сервер продолжает работать.
Как это исправить:
- Прочитай строки «at» под сообщением. Первые из них относятся к Paper и Minecraft (
io.papermc,net.minecraft); тебе нужна первая строка «at», в которой указан плагин. - Обнови этот плагин в разделе Плагины и перезапусти сервер.
- Если предупреждение не исчезло, сообщи об ошибке автору плагина и приложи сообщение целиком.
Полезно знать: Одиночное предупреждение можно спокойно проигнорировать. Если оно появляется регулярно и игроки замечают подлагивания, обновление стоит установить.
«Unhandled exception executing command»: команда плагина прерывается
Так выглядит сообщение:
org.bukkit.command.CommandException: Unhandled exception executing command '<befehl>' in plugin <Plugin> v<Version>
Caused by: <Error type>: <Message>
В чём причина: Плагин выдал ошибку при выполнении одной из своих команд. Команда и плагин указаны в сообщении. Чаще всего плагин не подходит к версии сервера или к другому плагину, от которого он зависит. Тот, кто ввёл команду, обычно видит в чате лишь общее уведомление о внутренней ошибке. Команда не была выполнена, сервер продолжает работу.
Как это исправить:
- Прочитай строку «Caused by» под сообщением.
- Проверь в разделе Версия версию своего сервера и обнови плагин в разделе Плагины до версии, подходящей для неё.
- Если в строке ошибки указан другой плагин, от которого зависит этот плагин, приведи его тоже к подходящей версии.
- Перезапусти сервер и проверь команду. Если ошибка повторяется, сообщи о ней автору плагина, приложив эту строку.
Подробнее о зависимостях: Плагину нужен другой плагин.
Ошибка команды с «[ACF]» в логе
Так выглядит сообщение:
[<Плагин>] [ACF] Exception in command: <команда>
[<Плагин>] [ACF] java.lang.NoSuchMethodError: <Метод>
В чём причина: Многие плагины создают свои команды с помощью готовой библиотеки Aikar Command Framework (ACF). Если команда прерывается с исключением, ACF выводит ошибку вместе со стектрейсом, и перед каждой строкой стоит имя плагина. Значит, имя в первых скобках указывает на затронутый плагин, а не на ACF. Если в выводе есть «IncompatibleClassChangeError» или «NoSuchMethod», плагин не подходит к версии сервера. Команда не была выполнена, сервер продолжает работать.
Как это исправить:
- Прочитай имя плагина в первых квадратных скобках и первую строку ошибки с «Exception» или «Error».
- Обнови плагин в разделе Плагины до версии для твоей версии сервера.
- Перезапусти сервер и проверь команду.
- Если ошибка осталась, сообщи о ней автору плагина вместе с первой строкой ошибки.
Полезно знать: ACF не нужно устанавливать или обновлять самостоятельно. Она встроена в соответствующий плагин.
GravesX: ошибка в фоновой задаче
Так выглядит сообщение:
[GravesX] Async task for GravesX v<Версия> generated an exception
java.lang.NullPointerException: Cannot invoke "<Метод>" because "version2" is null
В чём причина: GravesX создаёт могилу с предметами, когда игрок погибает. Плагин выбрасывает NullPointerException в фоновой задаче, например при сравнении двух номеров версий, если значение («version2») отсутствует. Это ошибка самого плагина, а не проблема сервера или хостинга. Сервер продолжает работать в обычном режиме.
Как это исправить:
- Обнови GravesX в разделе Плагины до последней версии и перезапусти сервер.
- Проверь в Консоль, появляется ли сообщение снова.
- Если ошибка осталась, сообщи о ней проекту GravesX и приложи сообщение целиком.
- Если хочешь ради теста отключить плагин до исправления, сначала опустоши открытые могилы. Без плагина их нельзя будет открыть как обычно.
FastAsyncWorldEdit: команда завершилась внутренней ошибкой
Так выглядит сообщение:
An unexpected error while handling a FastAsyncWorldEdit command
java.lang.NullPointerException
В чём причина: FastAsyncWorldEdit (FAWE) — это быстрая версия WorldEdit, с которой ты редактируешь большие области за один раз. При выполнении команды FAWE столкнулся с отсутствующим значением. Операция выполнилась не полностью, поэтому изменение могло попасть в мир лишь частично. Сервер продолжает работать.
Как это исправить:
- Проверь в игре, что изменила команда. При необходимости отмени последний шаг командой
//undo. - Обнови FAWE в разделе Плагины до сборки для твоей версии сервера и перезапусти сервер.
- Выполни команду ещё раз.
- Если ошибка осталась, отправь разработчикам FAWE полный стектрейс с точной командой.
Основы отмены действий: WorldEdit: строительство и отмена действий.
Полезно знать: Не устанавливай FAWE дополнительно к обычному WorldEdit. Вместе они не работают; используй только один из них.
LibreLogin: команда завершилась внутренней ошибкой
Так выглядит сообщение:
[LibreLogin] An unexpected exception occurred while performing command …
В чём причина: LibreLogin — это плагин авторизации: игроки входят с помощью пароля, часто на серверах в офлайн-режиме. При выполнении одной из его команд, например для входа или регистрации, он прервался с неожиданным исключением. Для игрока команда не срабатывает. Если это касается входа, он не сможет продолжить, пока команда снова не заработает. Сам сервер продолжает работать.
Как это исправить:
- Прочитай в Консоль исключение под сообщением и запиши, какая это была команда.
- Обнови LibreLogin в разделе Плагины и перезапусти сервер.
- Ещё раз проверь команду с игроком.
- Если ошибка осталась, сообщи об исключении вместе с командой автору плагина.
Если в исключении упоминается база данных: Плагин не может открыть свою базу данных.
LibreLogin: сетевой обработчик зарегистрирован дважды
Так выглядит сообщение:
java.lang.IllegalArgumentException: Duplicate handler name: pe-decoder-librelogin
В чём причина: Каждое подключение игрока проходит через цепочку шагов обработки — сетевой конвейер (pipeline). LibreLogin или библиотека PacketEvents пытается встроить один и тот же шаг, декодер входящих данных, во второй раз. Из-за этого новые подключения могут завершаться ошибкой. Типичные причины: два файла LibreLogin в папке плагинов, несовместимые версии LibreLogin и PacketEvents или перезагрузка плагинов во время работы сервера.
Как это исправить:
- Открой в разделе Файлы папку
plugins/и проверь, что LibreLogin есть только в одном экземпляре. Удали более старые копии, предварительно создав резервную копию. - Обнови LibreLogin и, если установлен, PacketEvents одновременно.
- Останови сервер и полностью перезапусти его. Перезагрузки через
/reloadили менеджер плагинов здесь недостаточно. - Проверь вход на сервер с одним игроком.
Подробнее о дублирующихся файлах: Файл плагина повреждён или продублирован.
LightAntiCheat-Plus: ошибка в проверке движения
Так выглядит сообщение:
[LightAntiCheat-Plus] Exception in event bus subscription: <Check>
java.lang.UnsupportedOperationException: remove
В чём причина: LightAntiCheat-Plus — это античит-плагин, который, среди прочего, проверяет перемещения игроков. Одна из его проверок пытается очистить список, который нельзя изменять. Это ошибка в самом плагине. Затронутая проверка может не сработать или выдавать неверные результаты: пропускать читы или несправедливо подозревать честных игроков. Сервер продолжает работать.
Как это исправить:
- Обнови LightAntiCheat-Plus в разделе Плагины и перезапусти сервер.
- Если сообщение продолжает появляться, до выхода исправления отключи затронутую проверку SpeedD в конфигурации плагина. Ты найдёшь её в разделе Файлы в папке плагина внутри
plugins/. Предварительно сделай копию файла. - Перезапусти сервер и проверь в Консоль, исчезло ли сообщение.
- Снова включи проверку, как только выйдет исправленная версия.
Полезно знать: Пока сообщение появляется, относись к подозрениям на нарушения движения с осторожностью.
MagicSpells сообщает об ошибке в заклинании
Так выглядит сообщение:
[MagicSpells] AN EXCEPTION HAS OCCURED:
[MagicSpells] This error has been saved in the errors folder.
Error saving spellbook for player '<Player>'
В чём причина: MagicSpells — это плагин для собственных заклинаний. Он сообщает об ошибке при выполнении или сохранении заклинаний, часто из-за записи в его конфигурации, которую эта версия не понимает. Эффекты работают через библиотеку EffectLib; сообщения с «Unexpected EffectLib Error» относятся к этим эффектам. Кроме того, MagicSpells сохраняет отчёт в папке plugins/MagicSpells/errors. Если сохранить книгу заклинаний (spellbook) не удаётся, прогресс этого игрока не сохраняется.
Как это исправить:
- Открой в разделе Файлы папку
plugins/MagicSpells/errorsи самый свежий отчёт. В нём указаны заклинание и параметр. - Проверь этот параметр в файлах твоих заклинаний, например на опечатки или значения из более старой версии MagicSpells. Предварительно сделай копию файла.
- Поддерживай MagicSpells и EffectLib в актуальном состоянии и в соответствии с версией сервера.
- Перезапусти сервер и проверь заклинание.
SinglePlayerSleep: сон в кровати не работает
Так выглядит сообщение:
[SinglePlayerSleep] INTERNAL ERROR: Unable to process PlayerBedEnterEvent
В чём причина: SinglePlayerSleep пропускает ночь, когда спит один игрок, и не требует, чтобы в кровать легли все. При входе в кровать плагин аварийно завершил работу. Функция сна может не сработать при этой попытке, и тогда ночь не пропускается. Чаще всего версия плагина не подходит к версии Minecraft. Сервер продолжает работать.
Как это исправить:
- Проверь в разделе Версия, какая версия Minecraft запущена.
- Обнови SinglePlayerSleep в разделе Плагины до версии для этой версии игры и перезапусти сервер.
- Проверь в игре: ложись ночью в кровать и смотри, проходит ли ночь.
- Если ошибка остаётся, сообщи об исключении под сообщением автору плагина.
Подробнее: Игровые правила Minecraft: объяснение.
Полезно знать: В новых версиях Minecraft есть собственное игровое правило, определяющее, какой процент игроков должен спать. Оно может заменить плагин.
PacketEvents не может встроиться в соединение
Так выглядит сообщение:
PacketEvents failed to add a decoder to the netty pipeline
В чём причина: PacketEvents — это библиотека, через которую другие плагины, например античит- или плагины авторизации, считывают сетевые пакеты. Для этого она встраивает собственный шаг, декодер, в сетевой конвейер каждого соединения. Netty — это сетевая библиотека, через которую сервер обрабатывает соединения. Встроить его не удалось: другой сетевой обработчик или несовместимая версия PacketEvents нарушает ожидаемый порядок. Плагины, основанные на PacketEvents, в таком случае работают для этого соединения неправильно.
Как это исправить:
- Обнови PacketEvents, Geyser и Floodgate, а также плагины авторизации и античит одновременно до версий для твоей версии сервера.
- Проверь в разделе Файлы в папке
plugins/, что нет дублирующихся файлов. - Останови сервер и полностью перезапусти его, без перезагрузки во время работы.
- Проверь вход через Java и, если используешь Geyser, также через Bedrock.
Для игроков Bedrock: Bedrock и Geyser: сообщения в логе.
StringIndexOutOfBoundsException: пустое или слишком короткое текстовое значение
Так выглядит сообщение:
java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
В чём причина: Плагин или мод попытался прочитать определённый символ из текста, например первый символ префикса. Но текст короче, а при «length 0» он вообще пустой. Часто ожидаемое значение в конфигурации пустое, например префикс, цвет или имя, указанное только как ''. Сервер продолжает работать; функция, которой нужен этот текст, не срабатывает.
Как это исправить:
- Найди в стектрейсе первую строку с названием плагина или мода.
- Открой в разделе Файлы конфигурацию этого плагина в папке
plugins/<Plugin>/и найди пустые значения вроде''или записи без значения. Предварительно сделай копию файла. - Укажи допустимое значение или возьми значение по умолчанию из шаблона плагина.
- Обнови плагин и перезапусти сервер.
Подробнее об ошибочных настройках: Файл конфигурации плагина содержит ошибки.
«NoSuchFieldException: childHandler»: сетевой плагин не подходит серверу
Как выглядит сообщение:
java.lang.NoSuchFieldException: childHandler
В чём причина: Netty — это сетевая библиотека, через которую сервер принимает подключения. Некоторые плагины напрямую обращаются к её внутренним частям, чтобы встроиться в обработку подключений. Здесь сетевой плагин ищет внутреннее поле «childHandler», которого нет в установленной версии сервера или Netty. Значит, плагин собран для другой сборки сервера. Чаще всего это касается сетевых, прокси- или протокольных плагинов; их функции перестают работать.
Как это исправить:
- Прочитай стектрейс под сообщением и найди первый сетевой, прокси- или протокольный плагин, например ViaVersion, ProtocolLib или Geyser.
- Проверь в разделе Версия, какая версия сервера запущена. Точная версия серверного ПО (сборка) также указана в первых строках файла
logs/latest.log. - Обнови найденный плагин до версии для этой сборки сервера и перезапусти сервер.
- Если подходящей версии пока нет, временно отключи плагин, пока автор не выпустит обновление.
Подробнее: Плагин не подходит к версии сервера.
Подсказки по Tab для команды плагина не работают
Так выглядит сообщение:
Unhandled exception during tab completion for command '<Command>' in plugin <Plugin>
В чём причина: При нажатии клавиши Tab Minecraft запрашивает у соответствующего плагина возможные варианты дополнения. При этом функция подсказок плагина завершается с ошибкой. Сервер продолжает работать, пропадают только подсказки для затронутой команды. Трассировка ошибки ниже, так называемый стектрейс, показывает задействованные вызовы программы.
Как это исправить:
- Прочитай сообщение целиком в Консоль или в разделе Файлы в
logs/latest.log. Запиши плагин, команду и первое конкретное сообщение об ошибке под ним. - Проверь в разделе Версия версию своего сервера и установи в разделе Плагины подходящую для неё сборку указанного плагина.
- Полностью перезапусти сервер и снова проверь ту же команду с помощью клавиши Tab.
- Если ошибка осталась, отправь автору плагина полную трассировку ошибки и опиши, в каком месте подсказки перестают работать.
StackOverflowError при обработке поискового правила
Так выглядит сообщение:
Exception in thread "<BackgroundTask>" java.lang.StackOverflowError
В чём причина: Регулярное выражение — это правило поиска по тексту, например для фильтров команд. При проверке такого правила Java требуется слишком много вложенных друг в друга вызовов, и стек вызовов переполняется. Указанная фоновая задача завершается, а её работа остаётся незавершённой; сервер продолжает работать. StackOverflowError — это не то же самое, что нехватка оперативной памяти Java.
Как это исправить:
- Открой полную трассировку ошибки в Консоль или в разделе Файлы в
logs/latest.log. По имени потока и вызовам плагинов найди соответствующий плагин. - Сделай резервную копию его настроек и проверь настраиваемые правила поиска или команд. Упрости правило, которое вызывает ошибку, если ты задавал его сам.
- Обнови плагин в разделе Плагины до подходящей сборки и полностью перезапусти сервер.
- Если правило встроено жёстко, сообщи автору полную трассировку ошибки и ввод, при котором она возникает.
Paper блокирует «entity add» из фонового потока
Так выглядит сообщение:
Thread <Thread> failed main thread check: entity add
В чём причина: Paper проверяет, выполняются ли изменения игрового мира в правильном потоке. Поток — это отдельная линия выполнения программы. Здесь фоновая задача пытается добавить в мир существо, и защитная проверка её останавливает. Затронутое действие не выполняется; сервер продолжает работать.
Как это исправить:
- Открой в Консоль или в разделе Файлы полную трассировку ошибки в
logs/latest.log. Сокращённое сообщение часто показывает только вызовы сервера. - Читай дальше до первого вызова плагина и запиши, какое действие вызвало ошибку.
- Установи в разделе Плагины сборку этого плагина, подходящую для версии твоего сервера, и полностью перезапусти сервер.
- Если ошибка продолжает появляться, сообщи о ней автору плагина вместе с полной трассировкой ошибки. Вызов плагина нужно перенести в правильный поток.
Полезно знать: Не отключай защитную проверку. Её отключение не устраняет неправильное обращение к миру.
Твоего сообщения здесь нет?
Прочитай сообщение целиком, включая строки перед ним. Там часто указано, что плагин как раз собирался сделать. В стектрейсе имена файлов в строках с «at», например <Plugin>.jar, и названия пакетов выдают плагин или мод. Строки с java.base, net.minecraft, org.bukkit или io.papermc относятся к Java и серверу. Создай резервную копию, обнови виновника и перезапусти сервер. Если не получается разобраться, открой тикет и укажи время появления сообщения.