Жизненный цикл плагина

Перед шагами которые делают плагин видимым, загрузчик плагинов сортирует доступные плагины по порядку, определяя их зависимости. Жизненные циклы этих плагинов выполняются в том-же порядке. Например, - плагин A имеет параметр зависимости «[required-]after:B», то произведет каждое свое действие только после того, как плагин B закончит свои действия. Зависимости жизненного цикла являются глобальными. Это означает, что видимые друг-другу плагины должны пройти все шаги за раз.

Предупреждение

Объект Server класса Sponge не всегда доступен. Доступность объекта можно проверить при помощи методов Sponge.isServerAvailable() или Game.isServerAvailable().

События изменения состояния

События изменения состояния сервера поделены на три категории:

  1. Инициализация: Перед началом самой игры, когда Sponge и плагины только загружаются. События данной категории вызываются единожды.
  2. Исполнение: Когда загружаются игра и мир. События в данной категории могут вызываться несколько раз.
  3. Завершение: Когда игра завершается. Остановка состояний таких как инициализация. События данной категории вызываются единожды.

Инициализация

Состояния инициализации возникают единожды за один запуск.

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 будет закрыт. В данном событии все дальнейшие взаимодействия с игрой или другими плагинами должны быть завершены.