添加自定义物品 kubejs可以在startup_scripts文件夹内创建去创建物品,注意所有的添加自定义的操作都是无法热加载的,写完之后需要重启游戏后才会加载进游戏内
基础写法 jsStartupEvents.registry("item",event=>{
event.create("meng:my_item","basic")
})kjs创建物品是非常简单的,只需要一行就可以解决
create里的第一个参数为物品id,这里如果写成"xxx:xxx",冒号前面的是你的命名空间(类似于模组id),后面的才是你的物品id,如果你只是写成"xxx"并不加冒号也是可以的,kjs为默认为你创建在kubejs下,最后呈现形式就是"kubejs:xxx"
create里的第二个参数为物品类型,在下面会给大家列举出来他的物品类型和描述
物品类型 类型参数 作用 描述 示例 basic 基础物品 无 - basic 基础物品 - music_disc 唱片 可以在唱片机里播放的 smithing_template 锻造模板 无 - helmet 头盔 无 添加护甲 chestplate 胸甲 无 同上 leggings 护腿 无 同上 boots 鞋子 无 同上 axe 斧子 无 hoe 锄头 无 同上 pickaxe 镐子 无 同上 shovel 铲子 无 同上 sword 剑 无 同上 shears 剪刀 无 添加剪刀 通用方法参数 下面提供的方法为所有物品类型都可以调用到的参数,针对于护甲、工具等物品会在对应的章节提供专有的方法
常用方法 方法调用 传入参数 用处 返回类型 maxDamage(int) -> 设置物品的最大耐久 this food(Consumer) -> this maxStackSize(int) -> 设置物品的最大堆叠,虽然能超过64但是不建议 this fireResistant(bool) -> 设置物品是否防火 this displayName(string) -> 设置在没有配置lang文件时直接显示的名称 this tag(ResourceLocation) -> 设置物品的tag标签 this texture(string) -> 设置物品材质路径 this unstackable() - 设置物品为不可堆叠 this burnTime(int) - 设置物品的可燃烧tick(默认为0则是不可燃烧) this modifyAttribute(ResourceLocation,string,double,AttributeModifier) ~ 物品属性修饰符 this createItemProperties() - 创建为物品属性 Item 物品使用时调用的方法 方法调用 传入参数 用处 返回类型 use(ItemBuilder$UseCallback) -> 物品开始被玩家使用时 this releaseUsing(ItemBuilder$ReleaseUsingCallback) -> 当玩家没有使用完物品但中途松开鼠标右键时(?) this finishUsing(ItemBuilder$FinishUsingCallback) -> 当玩家使用完物品时 this useDuration(ToIntFunction) ~ 关于物品的使用时间? this useAnimation(UseAnim) ~ 物品在使用时的动画 this 关于渲染的方法 方法调用 传入参数 用处 返回类型 modelJson(JsonObject) -> 设置模型的json(虽然但是不建议这么干) this parentModel(string) ~ 设置模型的父模型? this textureJson(JsonObject) -> 设置物品的材质json ?? this barWidth(ToIntFunction) ~ 关于耐久条? this barColor(Function,Color) ~ 关于耐久条颜色? this glow(bool) -> 设置物品是否有附魔光效 this tooltip(Component) -> 物品提示内容 this 其他方法 方法调用 传入参数 用处 返回类型 hurtEnemy(Predicate) -> 物品攻击实体生物时 this rarity(Rarity) 设置物品稀有度 this getRegistryType() - 获取注册类型 RegistryInfo generateAssetJsons(AssetJsonGenerator) ? ? - generateDataJsons(DataJsonGenerator) ? ? - name(NameCallback) ~ 动态设置物品名字? this color(int,ItemTintFunction) ? ? this color(ItemTintFunction) ? ? this transformObject(Item) ~ ~ this subtypes(Function>) ~ ? this containerItem(ResourceLocation) ~ 设置物品为容器??? this 简单的注册物品轮子 注:以下内容根据个人习惯选择性使用和更改
jsStartupEvents.registry("item", (event) => {
// ModID声明如果选择不更改ModID(默认即"kubejs")直接把ModID这个变量取消
const MODID = "meng:"
/*
* 定义物品
* 在添加下一个物品时要记得在[]后加上逗号
* 并且一定要严格按照格式进行
* [物品id, 稀有度类型, 是否有附魔光效]
*/
let itemRegisters = [
["example_item", "common", false],
]
itemRegisters.forEach(([name, rarity, glow]) => {
event.create(MODID + name) // 声明id
.rarity(rarity) // 稀有度
.glow(glow) // 是否有附魔光效
.tag(MODID + "items") // 添加物品tag(可选)
})
})