Жизненный цикл плагина
Перед шагами которые делают плагин видимым, загрузчик плагинов сортирует доступные плагины по порядку, определяя их зависимости. Жизненные циклы этих плагинов выполняются в том-же порядке. Например, - плагин A имеет параметр зависимости «[required-]after:B», то произведет каждое свое действие только после того, как плагин B закончит свои действия. Зависимости жизненного цикла являются глобальными. Это означает, что видимые друг-другу плагины должны пройти все шаги за раз.
Предупреждение
Объект Server
класса Sponge не всегда доступен. Доступность объекта можно проверить при помощи методов Sponge.isServerAvailable()
или Game.isServerAvailable()
.
События изменения состояния
События изменения состояния сервера поделены на три категории:
Инициализация: Перед началом самой игры, когда Sponge и плагины только загружаются. События данной категории вызываются единожды.
Исполнение: Когда загружаются игра и мир. События в данной категории могут вызываться несколько раз.
Завершение: Когда игра завершается. Остановка состояний таких как инициализация. События данной категории вызываются единожды.
Инициализация
Состояния инициализации возникают единожды за один запуск.
CONSTRUCTION
Вызывается GameConstructionEvent. В этом состоянии для каждого экземпляра плагина определяются параметры аннотации @Plugin
.
PRE_INITIALIZATION
Вызывается GamePreInitializationEvent. В этом состоянии плагин подготавливается к инициализации. Становятся доступны экземпляр logger’а по умолчанию и информация о предпочтительной конфигурации расположения файлов.
INITIALIZATION
Вызывается GameInitializationEvent. В этом состоянии плагин должен закончить любые действия, необходимые для того, чтобы он функционировал. В этом состоянии должны быть зарегистрированы глобальные обработчики событий.
POST_INITIALIZATION
Вызывается GamePostInitializationEvent. В этом состоянии встроенный плагин коммуникации должен быть готов к работе. Плагины, предоставляющие интерфейс API, должны быть готовы чтобы принять основные запросы.
LOAD_COMPLETE
Вызывается GameLoadCompleteEvent. В этом состоянии плагин должен быть полностью инициализирован (готов к работе).
Исполнение
Состояния исполнения могут возникать несколько раз в течение одного запуска. SERVER_ABOUT_TO_START
может следовать за SERVER_STOPPED
, а SERVER_STOPPED
может возникнуть в любой момент исполнения, если произойдет ошибка.
SERVER_ABOUT_TO_START
Вызывается GameAboutToStartServerEvent. Объект сервера уже существует, но миры еще не загружены.
SERVER_STARTING
Вызывается GameStartingServerEvent. Экземпляр класса Server уже существует, и миры загружены. Во время этого состояния обрабатывается регистрация команд.
SERVER_STARTED
Вызывается GameStartedServerEvent. Объект сервера уже существует, и миры уже загружены.
SERVER_STOPPING
Вызывается GameStoppingServerEvent. Это состояние вызывается непосредственно перед последним тактом, в котором происходит сохранение миров.
SERVER_STOPPED
Вызывается GameStoppedServerEvent. Во время этого состояния все игроки отключены от сервера, и никакие изменения в мирах не сохраняется.
Завершение
Состояния остановки возникают единожды за один запуск. Они возникают когда игра нормально завершается. (На серверах: выполнилась команда /stop
. На клиентах: кнопка «Закрыть» или кнопка «Выход из игры» нажата)
Предупреждение
Состояния завершения могут не возникать при закрытии сервера. Они могут не возникнуть, если игра насильно остановлена через Ctrl+C, Диспетчер задач, сбой в компьютере, или похожие ситуации.
GAME_STOPPING
Вызывается GameStoppingServerEvent. Это состояние возникает непосредственно перед GAME_STOPPED
. Плагины, предоставляющие API, все еще должны быть способны принимать основные запросы.
GAME_STOPPED
Вызывается GameStoppedServerEvent. После завершение этого события, Minecraft будет закрыт. В данном событии все дальнейшие взаимодействия с игрой или другими плагинами должны быть завершены.