Skip to content

添加自定义物品

kubejs可以在startup_scripts文件夹内创建去创建物品,注意所有的添加自定义的操作都是无法热加载的,写完之后需要重启游戏后才会加载进游戏内

基础写法

js
StartupEvents.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<FoodBuilder>)->设置物品为食物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<ItemStack>)~关于物品的使用时间?this
useAnimation(UseAnim)~物品在使用时的动画this

关于渲染的方法

方法调用传入参数用处返回类型
modelJson(JsonObject)->设置模型的json(虽然但是不建议这么干)this
parentModel(string)~设置模型的父模型?this
textureJson(JsonObject)->设置物品的材质json ??this
barWidth(ToIntFunction<ItemStack>)~关于耐久条?this
barColor(Function<ItemStack>,Color)~关于耐久条颜色?this
glow(bool)->设置物品是否有附魔光效this
tooltip(Component)->物品提示内容this

其他方法

方法调用传入参数用处返回类型
hurtEnemy(Predicate<HurtEnemyContext>)->物品攻击实体生物时this
rarity(Rarity)稀有度设置物品稀有度this
getRegistryType()-获取注册类型RegistryInfo<T>
generateAssetJsons(AssetJsonGenerator)??-
generateDataJsons(DataJsonGenerator)??-
name(NameCallback)~动态设置物品名字?this
color(int,ItemTintFunction)??this
color(ItemTintFunction)??this
transformObject(Item)~~this
subtypes(Function<ItemStack,Collection<ItemStack>>)~?this
containerItem(ResourceLocation)~设置物品为容器???this

简单的注册物品轮子

注:以下内容根据个人习惯选择性使用和更改

js
StartupEvents.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(可选)
	})
})

贡献者

页面历史