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

Temporal API

Активный

Установок

6

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

1 год назад

Версии

1.20.1 — 1.20.6
Клиент и сервер
Forge
Neoforge
Библиотеки
Утилиты
Аддоны

Temporal API - Библиотека для разработчиков Minecraft модов

Temporal API представляет собой официальную библиотеку, созданную командой Temporal для своих проектов. Эта библиотека открыта для использования другими разработчиками, создателями модов и модпаков в их собственных проектах без ограничений.

Основные возможности

Главная цель этого мода - значительно упростить и сделать более гибким процесс создания модов для Minecraft. Библиотека предоставляет множество полезных инструментов и утилит, которые экономят время разработчиков.

Начало работы

Для подключения библиотеки к вашему проекту необходимо добавить следующие строки в файл build.gradle:

repositories {
    maven {
        url "https://cursemaven.com"
    }
}

dependencies {
    implementation fg.deobf("curse.maven:temporalapi-970291:<идентификатор-файла>")
    ...
}

Замените <идентификатор-файла> на соответствующий идентификатор, который можно найти в конце ссылки на нужную версию файла мода.

Основные компоненты библиотеки

Фабрики и расширения

Фабрики используются для создания объектов RegistryObject, значительно упрощая этот процесс. Вот пример создания фасада фабрики предметов:

public class ModItemFactoryFacade extends ItemFactory {
    public ModItemFactoryFacade() {
        super(ModItems.ITEMS);
    }
}

Вы можете расширить свой фасад фабрики с помощью расширений из API или создать собственные расширения. Например, использование SwordExtension делает создание мечей намного проще:

public class ModItemFactoryFacade extends ItemFactory implements SwordExtension {
    public ModItemFactoryFacade() {
        super(ModItems.ITEMS);
    }
}

Или более расширенный вариант:

public class ModItemFactoryFacade extends ItemFactory implements SwordExtension {
    public ModItemFactoryFacade() {
        super(ModItems.ITEMS);
    }

    public RegistryObject<SwordItem> createSword(String name, Object... args) {
        return SwordExtension.super.createSword(name, this, args);
    }

    public RegistryObject<? extends SwordItem> createSword(String name, Supplier<? extends SwordItem> tTypedSupplier) {
        return SwordExtension.super.createSword(name, this, tTypedSupplier);
    }
}

Пример использования фабрики

public class ModItems {
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(Registries.ITEM, "MOD_ID");
    public static final ModItemFactoryFacade ITEM_FACTORY = new ModItemFactoryFacade();

    public static final RegistryObject<Item> MY_ITEM_1 = ITEM_FACTORY.create("my_item_1");
    public static final RegistryObject<Item> MY_ITEM_2 = ITEM_FACTORY.create("my_item_2", new Item.Properties());
    public static final RegistryObject<Item> MY_ITEM_3 = ITEM_FACTORY.create("my_item_3", () -> new Item(new Item.Properties()));

    // Первый пример создания объектов через фасад
    public static final RegistryObject<SwordItem> MY_SWORD_1 = ITEM_FACTORY.createSword("my_sword_1", ITEM_FACTORY, Tiers.STONE, 3, -2.4F);
    public static final RegistryObject<? extends SwordItem> MY_SWORD_2 = ITEM_FACTORY.createSword("my_sword_2", ITEM_FACTORY, () -> new SwordItem(Tiers.STONE, 3, -2.4F, new Item.Properties()));

    // Второй пример создания объектов через фасад
    public static final RegistryObject<SwordItem> MY_SWORD_3 = ITEM_FACTORY.createSword("my_sword_3", Tiers.STONE, 3, -2.4F);
    public static final RegistryObject<? extends SwordItem> MY_SWORD_4 = ITEM_FACTORY.createSword("my_sword_4", () -> new SwordItem(Tiers.STONE, 3, -2.4F, new Item.Properties()));
}

Массив args... представляет собой аргументы для создания объекта (в будущем будет улучшена читаемость).

Доступные фабрики и расширения

ItemFactory (ArrowExtension, BowExtension, BowlExtension, MusicDiscExtension, SmithingTemplateExtension, SwordExtension, AxeExtension, PickaxeExtension, ShovelExtension, HoeExtension)
BlockFactory (BushExtension, FlowerExtension, PottedFlowerExtension)
ParticleFactory
EffectFactory
PaintingFactory
PotionFactory
SoundEventFactory
CreativeTabFactory
EntityFactory

Утилиты для тегов

Утилиты тегов сосредоточены на создании тегов и упрощении работы с ними. Например, для создания тега предметов используйте ItemTagFactory:

public class MyItemTags {
    public static final TagFactory<Item> TAG_FACTORY = new ItemTagFactory("MY_MOD_ID");

    public static final TagKey<Item> MY_TAG = TAG_FACTORY.createTag("my_tag");
}

Утилиты для творческих вкладок

Утилиты творческих вкладок используются для добавления предметов в нужные творческие вкладки. Пример использования:

@SubscribeEvent
public void addCreativeTabs(BuildCreativeModeTabContentsEvent event) {
    new SimpleTabAdder(event)
            .addAllToTab(CreativeModeTabs.INGREDIENTS, ModItems.MY_ITEM_1, ModItems.MY_ITEM_2, ModItems.MY_ITEM_3)
            .addAllToTab(CreativeModeTabs.COMBAT, ModItems.MY_SWORD_1, ModItems.MY_SWORD_2, ModItems.MY_SWORD_3);
}

Утилиты для торговли

TemporalAPI значительно упрощает настройку торговли с жителями и странниками:

public static final TradeCustomizer tradeCustomizer = new SimpleTradeCustomizer();

@SubscribeEvent
public void customizeTradesWithVillagers(VillagerTradesEvent event) {
    tradeCustomizer.customize(event, new VillagerTrade(
            new TradingItemHolder(Items.ANDESITE, 2),
            new TradingItemHolder(Items.EMERALD, 3),
            new VillagerTradeDescription(
                    VillagerProfession.ARMORER, 1, 5, 5, 0.5f
            )
    ));
}

@SubscribeEvent
public void customizeTradesWithWanderers(WandererTradesEvent event) {
    tradeCustomizer.customize(event, new WandererTrade(
            new TradingItemHolder(Items.ANDESITE, 2),
            new TradingItemHolder(Items.EMERALD, 3),
            new WandererTradeDescription(
                    WandererTradeDescription.TradeRarity.RARE, 5, 5, 0.5f
            )
    ));
}

Утилиты свойств предметов

Добавление необходимых свойств для луков, щитов и других предметов:

@SubscribeEvent
public void clientSetup(final FMLClientSetupEvent event) {
    event.enqueueWork(() -> {
        TemporalItemProperties.makeBow(ModItems.MY_BOW_1);
        TemporalItemProperties.makeShield(ModItems.MY_SHIELD_1);
        TemporalItemProperties.makeCrossbow(ModItems.MY_CROSSBOW_1);
        TemporalItemProperties.putCompostable(ModBlocks.MY_FLOWER_1, 4);
    });
}

Часто задаваемые вопросы

Будет ли версия для Fabric? Нет, версия для Fabric не планируется.

Могу ли я использовать этот мод в своих модпаках? Да, вы можете свободно использовать этот мод в любых модпаках!

Как предложить функции или сообщить об ошибках? Присоединяйтесь к нашему Discord для любых комментариев, вопросов, предложений или проблем!

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

Cyber_Rat

Разработчик

mistersecret312

mistersecret312

w4t3rofficial

w4t3rofficial

Создан: 22 фев 2024

ID: 2843