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