13 自定义物品和物品ToolTip


要使用KubeJS来添加物品,你需要使用事件item.registry。该事件属于StartUp事件。

一、事件监听

你可以使用event.create("自定义物品ID")语句来创建物品。

onEvent("item.registry", event => {
  event.create("自定义物品ID")
})

物品的材质应被放于kubejs/assets/kubejs/textures/item/物品ID.png

如果你想使用自定义的物品模型,你可以使用 Blockbench 制作然后把它放于kubejs/assets/kubejs/models/item/物品ID.json

此外,你还可以手动定义材质路径,详见下文。

注意:1.18.2中事件监听方式有修改,详见1.18.2 方块 / 物品注册修改 章节

二、ItemBuilder

你可以使用以下方法设定物品属性。

方法
描述
属性默认值
返回值

type(ItemType 类型)

设置物品类型[1](仅1.16)

basic

ItemBuilder

tier(字符串 类型)

设置物品Tier[2]

-

ItemBuilder

modifyTier(tier => ...)

自定义物品tier

-

ItemBuilder

maxStackSize(整形 数量)

设置物品单组最大数量

64

ItemBuilder

maxDamage(整形 耐久值)

设置物品最大耐久值

0

ItemBuilder

burnTime(整形 燃烧时间)

(燃料)设置物品燃烧时间

0

ItemBuilder

containerItem(字符串 物品ID)

设置物品容器ID[3]

"minecraft:air"

ItemBuilder

subtypes(Function<ItemStackJS, Collection> fn)

设置物品的SubTypes

null

ItemBuilder

tool(ToolType 类型, 整形 等级)

设置物品工具属性

new HashMap<>()

ItemBuilder

miningSpeed(浮点型 速度)

(工具)设置挖掘速度

1.0F

ItemBuilder

attackDamage(浮点型 伤害)

(武器)设置攻击伤害

-

ItemBuilder

attackSpeed(浮点型 速度)

(武器)设置攻击速度

-

ItemBuilder

rarity(RarityWrapper 稀有度)

设置物品稀有度

RarityWrapper.COMMON

ItemBuilder

glow(布尔值 是否发光)

设置物品是否发光

false

ItemBuilder

tooltip(Component 文本)

设置物品的ToolTip

new ArrayList<>()

ItemBuilder

group(字符串 物品组)

设置物品的创造物品栏位[4]

KubeJS.tab

ItemBuilder

color(整形 index, 整形 c)

设置物品颜色

0xFFFFFFFF

ItemBuilder

texture(字符串 材质路径)

手动设置物品材质

空字符串

ItemBuilder

parentModel(字符串 模型路径)

手动设置物品模型

空字符串

ItemBuilder

food(Consumer b)

(转换为食物)设置食物属性

null

ItemBuilder

[1] 可用值有:basic(默认值)、sword、pickaxe、axe、shovel、hoe、helmet、chestplate、leggings、boots。

  • 注意:1.18.2中该方法有修改,详见1.18.2 方块 / 物品注册修改 章节

[2] 工具类的tier类型有:wood、stone、iron、gold、diamond、netherite;护甲类的tier类型有:leather、chainmail、iron、gold、diamond、turtle、netherite

[3] 支持的方法同新建tier

[4] 即类似于岩浆桶和空桶之间的关系。

[5] 可用值有:search、buildingBlocks、decorations、redstone、transportation、misc、food、tools、combat、brewing

注:以上方法中attackDamage(浮点型 伤害)attackSpeed(浮点型 速度)在1.16.5版本中可能无法生效,截至编辑本节时仍未修复。

以下为示例:

另请参阅:ItemBuilderFoodBuilderItemFoodEatenEventJS

三、新建Tier

通过新建Tier你可以将一套属性快速应用于多个物品上。

在添加完毕以上tier后,你可以在type(ItemType 类型)中传入你自己添加的tier_id来应用它。

四、ToolTip

以下为部分示例:

另请参阅:ItemTooltipEventJS

这有帮助吗?