Скачать KubeJS Curios — Minecraft Моды — MetaMods
KubeJS Curios

KubeJS Curios

Активный

Установок

1

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

7 месяцев назад
Клиент

KubeJS Curios

Этот интеграционный мод объединяет два популярных расширения для Minecraft - Curios и KubeJS. Благодаря этой связи разработчики получают расширенные возможности для работы с аксессуарными слотами.

Пример работы с аксессуарами

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

Работая с данным модом, вы сможете:

  • Получать доступ к аксессуарам через CuriosHelper у живых существ
  • Создавать уникальные аксессуары с индивидуальными характеристиками
  • Наделять обычные предметы функциями аксессуаров
  • Настраивать отображение аксессуаров и управлять их визуализацией

Регистрация аксессуаров и модификация предметов

StartupEvents.registry('item', event => {
    event.create('test')
        .attachCuriosCapability(
            CuriosJSCapabilityBuilder.create()
                .curioTick((context, предмет) => { })
                .onEquip((context, старыйПредмет, новыйПредмет) => { })
                .onUnequip((context, старыйПредмет, новыйПредмет) => { })
                .canEquip((context, предмет) => true)
                .canUnequip((context, предмет) => true)
                .modifySlotsTooltip((подсказки, предмет) => подсказки)
                .addAttribute(
                    "minecraft:generic.max_health",
                    UUID,
                    20,
                    'addition'
                )
                .modifyAttribute(contextИзмененияАтрибута => {
                    let { contextСлота, UUID, предмет, модификаторы } = contextИзмененияАтрибута
                    contextИзмененияАтрибута.modify(
                        "minecraft:generic.armor",
                        "идентификатор",
                        20,
                        'addition'
                    )
                })
                .canDrop((contextСлота, источник, уровеньДобычи, недавноУдарен, предмет) => true)
                .modifyAttributesTooltip((подсказки, предмет) => подсказки)
                .modifyFortuneLevel((contextСлота, контекстДобычи, предмет) => 0)
                .modifyLootingLevel((contextСлота, источник, цель, базаДобычи, предмет) => 0)
                .makesPiglinsNeutral((contextСлота, предмет) => false)
                .canWalkOnPowderedSnow((contextСлота, предмет) => false)
                .isEnderMask((contextСлота, эндермэн, предмет) => false)
        )
        .maxStackSize(1)
        .tag("curios:head")
})

ItemEvents.modification(event => {
    event.modify('apple', item => {
        item.attachCuriosCapability(
            CuriosJSCapabilityBuilder.create()
                .curioTick((context, предмет) => { })
                .onEquip((context, старыйПредмет, новыйПредмет) => { })
                .onUnequip((context, старыйПредмет, новыйПредмет) => { })
                .canEquip((context, предмет) => true)
                .canUnequip((context, предмет) => true)
                .modifySlotsTooltip((подсказки, предмет) => подсказки)
                .addAttribute(
                    "minecraft:generic.max_health",
                    "идентификатор",
                    20,
                    'addition'
                )
                .modifyAttribute(contextИзмененияАтрибута => {
                    let { contextСлота, UUID, предмет, модификаторы } = contextИзмененияАтрибута
                    contextИзмененияАтрибута.modify(
                        "minecraft:generic.armor",
                        UUID,
                        20,
                        'addition'
                    )
                })
                .canDrop((contextСлота, источник, уровеньДобычи, недавноУдарен, предмет) => true)
                .modifyAttributesTooltip((подсказки, предмет) => подсказки)
                .modifyFortuneLevel((contextСлота, контекстДобычи, предмет) => 0)
                .modifyLootingLevel((contextСлота, источник, цель, базаДобычи, предмет) => 0)
                .makesPiglinsNeutral((contextСлота, предмет) => false)
                .canWalkOnPowderedSnow((contextСлота, предмет) => false)
                .isEnderMask((contextСлота, эндермэн, предмет) => false)
        )
    })
})

Настройка визуализации (клиентская часть)

CuriosJSEvents.registerRenderer(event => {
    // удаляем отображение аксессуара
    event.remove('test')

    // регистрируем новое отображение
    event.register(
        'apple',
        context => {
            let {
                предмет,
                contextСлота,
                матрица,
                родительскийСлой,
                буферРендера,
                свет,
                качаниеКонечности,
                амплитудаКачания,
                частичныеТики,
                возрастВТиках,
                повороГоловы,
                наклонГоловы
            } = context
            let { управлениеМоделями } = Client
            let сущность = contextСлота.entity()
            let модель = управлениеМоделями.getModel(new ModelResourceLocation(предмет.id, 'inventory'))
            матрица.pushPose()
            CuriosRenderer.translateIfSneaking(матрица, сущность)
            матрица.mulPose(new Quaternionf().rotateZ(JavaMath.toRadians(180)))
            матрица.mulPose(RotationAxis.YP.deg(-повороГоловы))
            матрица.mulPose(RotationAxis.XP.deg(-наклонГоловы))
            Client.itemRenderer.render(
                предмет,
                'head',
                false,
                матрица,
                буферРендера,
                свет,
                OverlayTexture.NO_OVERLAY,
                модель
            )
            матрица.popPose()
        }
    )
})

Настройка рендера аксессуаров

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

zhaiji

Создан: 3 мая 2025

ID: 99005