Аддоны и лица мобов
Addon API · для разработчиков · Krylix
Расширить Krylix можно двумя способами. Лицо моба добавляется JSON-файлом в наборе ресурсов, код для этого не нужен. Всё остальное делается через Java-API.
Лица мобов
Лента убийств, панель мобов и сводка смерти рисуют рядом с каждым мобом маленькое лицо. В моде их 43:
всполох, болотник, вихрь, пещерный паук, скрипун, крипер, утопленник, древний страж, эндер-дракон, эндермен, эндермит, заклинатель, гаст, страж, хоглин, кадавр, иллюзор, железный голем, магмовый куб, пустынник, фантом, пиглин, брутальный пиглин, разбойник, разоритель, шалкер, чешуйница, скелет, слизень, снежный голем, паук, зимогор, серный куб, вредина, поборник, хранитель, ведьма, визер, визер-скелет, зоглин, зомби, крестьянин-зомби, зомбифицированный пиглин.
У любого другого моба, в том числе из модов, вместо лица серый квадрат, пока кто-нибудь это лицо не добавит.
На каждый вид сущности один файл: assets/<namespace>/krylix/heads/<path>.json для сущности <namespace>:<path>.
{
"layers": [
{ "texture": "mymod:textures/entity/goblin.png", "u": 8, "v": 8, "width": 8, "height": 8,
"texture_width": 64, "texture_height": 64 }
]
}uиvзадают левый верхний пиксель лица на текстуре.widthиheightзадают размер этой области. Если их не указать, берётся 8.texture_widthиtexture_heightзадают размер всей текстуры. Если их не указать, берётся 64.
Область растягивается в квадрат. Слои рисуются по порядку, поэтому светящиеся глаза кладутся вторым слоем, как у эндермена.
Встроенные лица лежат в assets/minecraft/krylix/heads/ и ссылаются на текстуры сущностей из самой игры, так что набор ресурсов может заменить любое из них. Перечитываются лица вместе с наборами ресурсов.
API
Эта часть для авторов модов. API занимает пакет com.eliasnvx.krylix.api, версия 1.0.0, и нумеруется отдельно от мода. Классы лежат внутри файла Krylix, ничего дополнительно ставить не надо.
Проще всего собирать аддон с файлом мода из Maven-репозитория Modrinth. Для NeoForge артефакт оканчивается на -neoforge.
repositories {
maven { url 'https://api.modrinth.com/maven' }
}
dependencies {
compileOnly 'maven.modrinth:krylix:1.4.0+26.3-fabric'
runtimeOnly 'maven.modrinth:krylix:1.4.0+26.3-fabric'
}Аддон — это класс, который реализует KrylixAddon. NeoForge находит его по аннотации @RegisterKrylixAddon. На Fabric класс указывается в точке входа krylix в fabric.mod.json.
@RegisterKrylixAddon
public final class MyAddon implements KrylixAddon {
@Override
public void onInitialize(KrylixApi api) {
// A kill in my minigame arena: no feed row, not counted
api.events().addListener(KillEvent.class, event -> {
if (Arena.contains(event.victim())) {
event.setBroadcast(false);
event.setRecordStats(false);
}
});
}
}До чего аддон дотягивается:
KillCreditEvent, на сервере: поменять того, кому достаётся убийство, или оставить смерть без убийцы.KillEvent, на сервере:setBroadcast(false)убирает убийство из ленты,setRecordStats(false)убирает его из статистики,setWeaponиflags()меняют иконку и значок. Если событие отменить, Krylix пропустит эту смерть целиком, вместе со сводкой.StatRecordedEvent, на сервере: срабатывает после того, как засчитано убийство, смерть или убийство моба, и несёт новую сумму.FeedEntryEvent, на клиенте: отмена прячет одну строку на этом клиенте.api.stats(server): читать сохранённые числа любого игрока.registerMobHeadиhealthProviders(), на клиенте: лицо из кода и числа здоровья для сущностей, которые хранят здоровье по-своему.
Лицо из набора ресурсов побеждает лицо, зарегистрированное в коде. Добавить в рейтинг вкладку или столбец через API нельзя.
Полное руководство лежит в репозитории, рядом с примером аддона под оба загрузчика. В примере убийства союзников не достаются никому, игроки с тегом тренировки не попадают в ленту и статистику, а к плашке здоровья прибавляется поглощение. Пример нигде не опубликован, его собирают из исходников.