物品修饰器
概述
- 作用:用于对物品施加单个或多个操作,例如使空地图变为指向某个标签中结构的寻宝地图。
注意
- 一些物品修饰器类型并没有被KubeJS提供原生支持,需写为Json文本格式作为addFunction(...Json)函数的参数传递
- 不被KubeJS原生支持的谓词中会给出可参考链接与数据包生成器来协助使用物品修饰器。
应用示例
ServerEvents.blockLootTables(event => {
event.addBlock('minecraft:gravel', loot => {
loot.addPool(pool => {
pool.addItem('minecraft:diamond')
})
// 为战利品表直接应用
loot.name(Component.red('测试钻石'))
// 有条件的物品修饰器
loot.addConditionalFunction(c => {
c.name(Component.aqua('测试钻石'))
})
})
})
ServerEvents.blockLootTables(event => {
event.addBlock('minecraft:gravel', loot => {
loot.addPool(pool => {
pool.addItem('minecraft:diamond')
// 为随机池直接应用
pool.name(Component.red('测试钻石'))
// 有条件的物品修饰器
pool.addConditionalFunction(c => {
c.name(Component.aqua('测试钻石'))
})
})
})
})
ServerEvents.blockLootTables(event => {
event.addBlock('minecraft:gravel', loot => {
loot.addPool(pool => {
// 为抽取项直接应用
pool.addItem('minecraft:diamond').name(Component.red('测试钻石'))
// 有条件的物品修饰器
pool.addItem('minecraft:diamond').addConditionalFunction(c => {
c.name(Component.aqua('测试钻石'))
})
})
})
})
物品修饰器列表
物品修饰器类型 | 作用 | 语句 | KubeJS原生支持 | 示例 | 维基 |
---|---|---|---|---|---|
应用奖励公式 | 将预定义的奖励公式应用于物品堆栈的计数。 | - | ☐ | 示例 | 链接 |
复制显示名 | 将实体或方块实体的显示名复制到物品堆栈NBT中。 | copyName("block_entity") | ☐ | 示例 | 链接 |
复制NBT | 将NBT从指定源复制到项目上。唯一允许的值是"block_entity" | - | ☐ | 示例 | 链接 |
复制方块状态 | 当物品是由方块产生时,复制方块的方块状态到物品的block_state;否则此物品修饰器不做任何处理。 | - | ☐ | 示例 | 链接 |
随机附魔 | 为物品附上一个随机的魔咒。魔咒的等级也是随机的。 | enchantRandomly(..args) | ☑ | 示例 | 链接 |
给予等价于经验等级的随机魔咒 | 使用指定的魔咒等级附魔物品(大约等效于使用这个等级的附魔台附魔物品)。 | enchantWithLevels(..args) | ☑ | 示例 | 链接 |
设置探险家地图 | 将普通的地图物品变为一个指引到某个结构标签的探险家地图。如果物品不是地图,则不做任何处理。 | - | ☐ | 示例 | 链接 |
爆炸损耗 | 如果物品堆栈是因为方块被爆炸破坏而产生,执行该函数的每个物品有1/爆炸半径的概率消失,物品堆栈会被分为多个单独的物品计算;否则此物品修饰器不做任何处理。 | - | ☐ | 示例 | 链接 |
填充玩家头颅 | 将玩家头颅设置为指定玩家的头颅。如果物品不是玩家头颅则不做任何处理。 | - | ☐ | 示例 | 链接 |
熔炉熔炼 | 将物品转变为用熔炉烧炼后的对应物品。如果物品不可烧炼,则不做任何处理。 | furnaceSmelt() | ☑ | 示例 | 链接 |
限制物品堆栈数量 | 限制物品数量。 | - | ☐ | 示例 | 链接 |
根据抢夺魔咒调整物品数量 | 决定了抢夺魔咒对该物品数量的影响。如果未使用,抢夺魔咒将对该物品没有效果。 | lootingEnchant(..args) | ☑ | 示例 | 链接 |
引用物品修饰器文件 | 引用另一个物品修饰器。 | - | ☐ | 示例 | 链接 |
设置属性 | 为物品加上属性修饰符。 | - | ☐ | 示例 | 链接 |
设置旗帜图案 | 设置旗帜物品的图案。如果物品不是旗帜,则此修饰器不做任何处理。 | - | ☐ | 示例 | 链接 |
设置内容物 | 设置物品的内容物。 | - | ☐ | 示例 | 链接 |
设置物品数量 | 设置该物品的数量。 | count(..args) | ☑ | 示例 | 链接 |
设置损伤值 | 设置工具的损坏值。 | damage(..args) | ☑ | 示例 | 链接 |
设置魔咒 | 设置物品的魔咒。 | - | ☐ | 示例 | 链接 |
设置乐器 | 设置山羊角的种类。如果物品不是山羊角则不做任何处理。 | - | ☐ | 示例 | 链接 |
设置战利品表 | 为一个容器方块物品设定战利品表。 | - | ☐ | 示例 | 链接 |
设置物品描述 | 为物品添加描述信息。 | - | ☐ | 示例 | 链接 |
设置物品名 | 添加或修改物品的自定义名称。 | name(..args) | ☑ | 示例 | 链接 |
设置NBT | 设置物品堆栈NBT数据。 | nbt(..args) | ☐ | 示例 | 链接 |
设置药水 | 设置物品包含的药水效果标签。 | - | ☐ | 示例 | 链接 |
设置迷之炖菜效果 | 为谜之炖菜添加状态效果。 | - | ☐ | 示例 | 链接 |
物品修饰器类型
应用奖励公式
作用:将预定义的奖励公式应用于物品堆栈的计数。
语句:addFunction(...Json)
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:looting",
"formula": "minecraft:uniform_bonus_count",
"parameters": {
"bonusMultiplier": 1
}
})
})
})
{
"function": "minecraft:apply_bonus",
"enchantment": "minecraft:looting",
"formula": "minecraft:uniform_bonus_count",
"parameters": {
"bonusMultiplier": 1
}
}
复制实体显示名
作用:将实体或方块实体的显示名复制到物品堆栈NBT中。
语句:copyName(战利品表上下文实体: Internal.CopyNameFunction$NameSource_ );
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.copyName("this")
})
})
复制NBT
作用:从指定类型的数据源复制NBT到物品堆栈。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:copy_nbt",
"source": "block_entity",
"ops": [
{
"source": "LootTable",
"target": "LootTable",
"op": "merge"
}
]
})
})
})
{
"function": "minecraft:copy_nbt",
"source": "block_entity",
"ops": [
{
"source": "LootTable",
"target": "LootTable",
"op": "merge"
}
]
}
复制方块状态
作用:当物品是由方块产生时,复制方块的方块状态到物品的block_state;否则此物品修饰器不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:copy_state",
"block": "minecraft:chest",
"properties": [
"type"
]
})
})
})
{
"function": "minecraft:copy_state",
"block": "minecraft:chest",
"properties": [
"type"
]
}
随机附魔
作用:为物品附上一个随机的魔咒。魔咒的等级也是随机的。
语句:enchantRandomly(附魔id数组: ResourceLocation[]);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.enchantRandomly([
"minecraft:aqua_affinity",
"minecraft:bane_of_arthropods"
]);
})
})
给予等价于经验等级的随机魔咒
作用:使用指定的魔咒等级附魔物品(大约等效于使用这个等级的附魔台附魔物品)。
语句:enchantWithLevels(附魔等级: 数字提供器 , 是否包含宝藏附魔: Boolean);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.enchantWithLevels({ min: 1, max: 5 }, true)
})
})
设置探险家地图
作用:将普通的地图物品变为一个指引到某个结构标签的探险家地图。如果物品不是地图,则不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:exploration_map",
"destination": "minecraft:village",
"decoration": "target_x"
})
})
})
{
"function": "minecraft:exploration_map",
"destination": "minecraft:village",
"decoration": "target_x"
}
爆炸损耗
作用:如果物品是因为方块被爆炸破坏而产生,执行该函数的每个物品有1/爆炸半径的概率消失,堆叠的物品会被分为多个单独的物品计算;否则此物品修饰器不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:explosion_decay"
})
})
})
{
"function": "minecraft:explosion_decay"
}
填充玩家头颅
作用:将玩家头颅设置为指定玩家的头颅。如果物品不是玩家头颅则不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:fill_player_head",
"entity": "this"
})
})
})
{
"function": "minecraft:fill_player_head",
"entity": "this"
}
熔炉熔炼
作用:将物品转变为用熔炉烧炼后的对应物品。如果物品不可烧炼,则不做任何处理。
语句:furnaceSmelt();
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.furnaceSmelt()
})
})
限制物品堆栈数量
作用:限制物品数量。
- 语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:limit_count",
"limit": {
"min": 1,
"max": 4
}
})
})
})
{
"function": "minecraft:limit_count",
"limit": {
"min": 1,
"max": 4
}
}
设置内容物
作用:对物品的内容物进行处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_contents",
"type": "minecraft:chest",
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:stone"
}
]
})
})
})
{
"function": "minecraft:set_contents",
"type": "minecraft:chest",
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:stone"
}
]
}
引用物品修饰器文件
作用:引用另一个物品修饰器。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:reference",
"name": "minecraft:demo"
})
})
})
{
"function": "minecraft:reference",
"name": "minecraft:demo"
}
设置属性
作用:为物品加上属性修饰符。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_attributes",
"modifiers": [
{
"attribute": "minecraft:generic.max_health",
"name": "kubejs",
"amount": 1,
"operation": "addition",
"slot": "mainhand"
}
]
})
})
})
{
"function": "minecraft:set_attributes",
"modifiers": [
{
"attribute": "minecraft:generic.max_health",
"name": "kubejs",
"amount": 1,
"operation": "addition",
"slot": "mainhand"
}
]
}
设置旗帜图案
作用:设置旗帜物品的图案。如果物品不是旗帜,则此修饰器不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_banner_pattern",
"patterns": [
{
"pattern": "minecraft:base",
"color": "white"
}
],
"append": true
})
})
})
{
"function": "minecraft:set_banner_pattern",
"patterns": [
{
"pattern": "minecraft:base",
"color": "white"
}
],
"append": true
}
根据抢夺魔咒调整物品数量
作用:决定了抢夺魔咒对该物品数量的影响。如果未使用,抢夺魔咒将对该物品没有效果。
语句:lootingEnchant(每级抢夺增加的物品掉落数量: 数字提供器 , 最大掉落数量: Number);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.lootingEnchant({ min: 1, max: 5 }, 3)
})
})
设置物品数量
作用:设置该物品的数量。
语句:count(数量: 数字提供器 );
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.count({ min: 1, max: 5 })
})
})
设置损伤值
作用:设置工具的损坏值。
语句:damage(损伤值: 数字提供器 );
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.damage({ min: 1, max: 5 })
})
})
设置魔咒
作用:设置物品的魔咒。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_enchantments",
"enchantments": {
"minecraft:aqua_affinity": 0
},
"add": true
})
})
})
{
"function": "minecraft:set_enchantments",
"enchantments": {
"minecraft:aqua_affinity": 0
},
"add": true
}
设置乐器
作用:设置山羊角的种类。如果物品不是山羊角则不做任何处理。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_instrument",
"options": "#minecraft:screaming_goat_horns"
})
})
})
{
"function": "minecraft:set_instrument",
"options": "#minecraft:screaming_goat_horns"
}
设置战利品表
作用:设置放置和打开容器方块时的战利品表。
语句:lootTable(战利品表id: ResourceLocation, [可选]战利品表种子: Number);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.lootTable('minecraft:archaeology/desert_pyramid', 233)
})
})
设置物品描述
作用:为物品添加描述信息。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_lore",
"entity": "this",
"lore": [
{
"text": "物品说明"
}
],
"replace": false
})
})
})
{
"function": "minecraft:set_lore",
"entity": "this",
"lore": [
{
"text": "物品说明"
}
],
"replace": false
}
设置物品名
作用:添加或修改物品的自定义名称。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_name",
"entity": "this",
"name": "物品名"
})
})
})
{
"function": "minecraft:set_name",
"entity": "this",
"name": "物品名"
}
设置NBT
作用:设置物品NBT数据。
语句:addFunction(...Json);
设置乐器物品修饰器参考
注意:wiki只有最新版本Minecraft的资料,因此现在关于nbt一律成为了组件components,不要完全照搬wiki的内容,仅供参考。
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_nbt",
"tag": "{KubeJS:\"test\"}"
})
})
})
{
"function": "minecraft:set_nbt",
"tag": "{KubeJS:\"test\"}"
}
设置药水
作用:设置物品包含的药水效果标签。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_potion",
"id": "minecraft:strong_strength"
})
})
})
{
"function": "minecraft:set_potion",
"id": "minecraft:strong_strength"
}
设置迷之炖菜状态效果
作用:为谜之炖菜添加状态效果,如果不是迷之炖菜则失败。
语句:addFunction(...Json);
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addFunction({
"function": "minecraft:set_stew_effect",
"effects": [
{
"type": "minecraft:absorption",
"duration": 200
}
]
})
})
})
{
"function": "minecraft:set_stew_effect",
"effects": [
{
"type": "minecraft:absorption",
"duration": 200
}
]
}
有条件的物品修饰器(物品条件函数)
作用:使一些物品修饰器有条件的应用。
语句:addConditionalFunction(回调函数(物品条件函数: Internal.ConditionalFunction ));
ServerEvents.entityLootTables(event => {
event.addEntity("minecraft:husk", loot => {
loot.addConditionalFunction(cf => {
// 添加谓词,还可以通过链式调用继续添加
cf.survivesExplosion()
// 添加物品修饰器,还可以通过链式调用继续添加
cf.name(Component.red('爆炸残余物'))
})
})
})