(Created page with " Core Engine имеет модуль для обмена объектами API между различными модами - ModAPI, обмен API осуществляет...") |
Admin (обсуждение | вклад) м (Admin moved page CoreEngine/Обмен API модов to InnerCore/Модуль ModAPI) |
(нет различий)
|
Core Engine имеет модуль для обмена объектами API между различными модами - ModAPI, обмен API осуществляется с помощью методов регистрации и публикации API и с помощью методов его получения.
Чтобы сделать объект API доступным для других модов используется метод ModAPI.registerAPI("имя API", объект API) - после вызова этого метода, остальные моды смогут получить объект API по данному имени.
Чтобы получить объект API нужно добавить специальное событие на имя объекта API, который требуется получить. Событие используется потому, что моды загружаются в произвольном порядке и неизвестно, зарегистрирован ли данный API на момент загрузки мода, который в нем нуждается, даже если мод, который регистрирует, присутсвует.
Для этого используется такой метод:
ModAPI.addAPICallback("имя API", function(api){ // api является объектом api, зарегистрированным под данным именем })
Это событие произойдет 1 раз после добавления, при этом если API уже зарегистрирован, то событие произойдет сразу после добавления, иначе оно будет ожидать регистрации.
В этом событии вы можете произвести какие-то действия, связанные с работой с данным API, например при получении ThaumAPI (api таумкрафта), добавить предметам вашего мода аспекты. Если событие не произойдет, значит таумкрафт не установлен и аспекты регистрировать не надо.
Если мод не может работать без какого-то объекта API (например это дополнение к какому-то моду), то разумно будет сделать так, что мод запускается по событию регистрации данного API и сразу передать ему объект API.
К примеру вот код лаунчера мода, который является дополнением к таумкрафту и которому обязателен ThaumAPI:
ModAPI.addAPICallback("ThaumAPI", function(api){ // по событию регистрации ThaumAPI запустить основной мод Launch({ ThaumAPI: api // в качестве дополнительного значения при запуске под именем ThaumAPI передать полученный объект api }); });