modsmith Войти Войти Рус / Eng

Temporal API

temporal-api · 154627 загрузок · LicenseRef-All-Rights-Reserved

библиотека

клиент: required · сервер: required (заявлено автором мода)

Temporal API — это библиотека для модов Team Temporal, ее также могут использовать другие проекты.

Описание

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

Основная цель этого мода — сделать создание модов проще и гибче!

Для работы с нашей библиотекой вам нужно зайти в build.gradle и добавить это:

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

dependencies {
    implementation fg.deobf("curse.maven:temporalapi-970291:<file-id>")
    
    ...
}

Вам необходимо заменить <file id> на идентификатор файла, который можно найти в конце ссылки на нужную версию файла мода.

Добавлена библиотека текущего состояния

заводы, тег утилиты, утилиты творческой вкладки, настройщик торговли с жителями деревни и странниками, мировые функции утилиты, утилиты свойств элемента, модификатор угла обзора и т. д. Фабрика и расширения Фабрики используются для создания объектов RegistryObject и значительно упрощают их создание.

Для использования ItemFactory из API вам необходимо создать класс ItemFactoryFacade, как здесь:

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

Также вы можете расширить свой Factory Facade с помощью расширений из API или создать собственное расширение.

Вот 2 примера использования SwordExtension (с этим расширением создание Sword становится намного проще):

Вот так:

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);
    }
}

А как насчет создания нашего объекта с использованием этого класса Facade:

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()));

    //First example of creating Facade object from up
    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()));


    //Second example of creating Facade object from up
    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
Tag Utils
Tag utils focus on tag creating and making using tags easier.

Например, если вы хотите создать тег элемента, вам нужно использовать 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");
}
Creative Tab Utils
Creative tab utils are used to add items to Creative Tab that you need.

Во-первых, нам нужно перейти к нашему классу, который подписался на события мода, и добавить эту функцию (внутренняя часть метода — это просто пример):

@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: Нет, тканевая версия не планируется.

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

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

Версии (4)

ВерсияMinecraftЗагрузчикиФайл
1.6.6 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6 forge скачать
1.6.2 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6 forge скачать
1.5.0 1.20.1, 1.20.2, 1.20.3, 1.20.4 forge скачать
1.3.0 1.20.1, 1.20.2, 1.20.3, 1.20.4 forge скачать

Страница на Modrinth →