Скачать Accessory API — Minecraft Моды — MetaMods
Accessory API

Accessory API

Активный

Установок

10

Последнее обновление

9 месяцев назад

Версии

b1.7.3
Клиент и сервер
Fabric
Игровые механики

Accessory API

Примечание:

Модификация Aether для Station API использует этот мод!

Этот мод для версии b1.7.3 Minecraft, работающий на платформе Babric, предоставляет разработчикам инструменты для создания дополнительных слотов под различные предметы. Функциональность напоминает Trinkets API и Baubles API, а визуальное оформление вдохновлено стилем Aether из той же версии игры.

Предпросмотр инвентаря

Для разработчиков

Если вы хотите освоить создание модов для b1.7.3 в среде Babric, присоединяйтесь к сообществу разработчиков! Этот инструментарий очень похож на Fabric и Fabric API, но адаптирован специально для b1.7.3.

Настройка рабочей среды

Добавьте Accessory API в ваш файл build.gradle:

репозитории {
    maven {
        name = "Jitpack"
        url "https://jitpack.io/"
    }
}

зависимости {
    modImplementation('com.github.matthewperiut:accessory-api:0.5.1') {
        transitive false
    }
}

Рекомендации по изучению

Для быстрого ознакомления с использованием API рекомендуется клонировать репозиторий (желательно в IDE) и изучить код в папке src/test/java/com/matthewperiut/testmod. Также полезно ознакомиться с документацией и javadocs API.

Практическая реализация

Реализуйте интерфейс "Accessory" в вашем классе предмета (совместимо с STAPI и другими API/mixins):

public class ExampleRing extends TemplateItemBase implements Accessory
{
    public Pendant(Identifier identifier)
    {
        super(identifier);
    }

    // Для определения типов слотов, в которые можно поместить предмет:
    @Override
    public String[] getAccessoryTypes(ItemInstance item)
    {
        return new String[]{ "ring" };
        // return new String[0]; // возвращает отсутствие слотов
        // return new String[]{ "ring", "cape" }; // можно поместить в несколько типов слотов
        // return new String[]{ "all" }; // можно поместить в любой слот аксессуаров
    }

    // другие методы, которые можно использовать с @Override
    // void tickWhileWorn(PlayerBase player, ItemInstance accessory)
    // void onAccessoryAdded(PlayerBase player, ItemInstance accessory)
    // void onAccessoryRemoved(PlayerBase player, ItemInstance accessory)

    // Отрисовка
    private YourCustomRenderer renderer;
    @Override
    public Optional<AccessoryRenderer> getRenderer()
    {
        return Optional.ofNullable(renderer);
    }
}

Доступны различные стандартные типы аксессуаров:
"pendant"
"cape"
"shield"
"ring"
"gloves"
"misc"
"all"
или вы можете создать собственный пользовательский тип аксессуара

Функции аксессуаров: подробное описание

Этот метод вызывается при клике на слот аксессуара с предметом, предмет передается в функцию.
Он предоставляет информацию о слоте для проверки совместимости.
String[] getAccessoryTypes(ItemInstance item)

Вызывается в функции обновления связанного игрока, передавая предмет, который обновляется, и игрока.
void tickWhileWorn(PlayerBase player, ItemInstance item)

Вызывается при добавлении/удалении предмета в инвентаре, связанном с аксессуаром.
Функция предоставляет информацию о том, какой игрок добавил/удалил аксессуар, а также о самом предмете.
void onAccessoryAdded(PlayerBase player, ItemInstance accessory)
void onAccessoryRemoved(PlayerBase player, ItemInstance accessory)

Предоставление функций отрисовки через getRenderer:
public AccessoryRenderer getRenderer()

Создание рендерера аксессуаров

Пример:

public class CustomRenderer implements AccessoryRenderer {
    void renderThirdPerson(PlayerBase player, PlayerRenderer renderer, ItemInstance itemInstance, double x, double y, double z, float h, float v)
    {
        // магия отрисовки сущности
    }

   void renderFirstPerson(PlayerBase player, PlayerRenderer renderer, ItemInstance itemInstance)
   {
       // магия отрисовки от первого лица
   }
}

Использование аналогично EntityRenderers

Встроенные AccessoryRenderers:
CapeRenderer
GloveRenderer
NecklaceRenderer
ConfigurableRenderer

Участники проекта
Slainlight

Slainlight

Разработчик

KydZombie

KydZombie

Разработчик

Создан: 18 окт 2023

ID: 13311