Files
netease-modsdk-wiki/docs/wiki/loot/item-functions.md

738 lines
18 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: 物品功能函数
category: 文档
nav_order: 4
tags:
- 稳定版
- 最后更新于版本1.18.10
mentions:
- Ciosciaa
- MedicalJewel105
- ThomasOrs
toc_max_level: 1
---
# 物品功能函数
<!--@include: @/wiki/bedrock-wiki-mirror.md-->
物品功能函数用于修改[战利品表](/wiki/loot/loot-tables)和[交易表](/wiki/loot/trade-tables)中物品的属性。
TODO
附魔前缀是否可以使用minecraft:/whatever格式
## 功能函数说明
以下测试仅在交易表中进行
仅适用于战利品表和交易表
是以`function`和其他属性构成的对象...
均不支持Molang表达式
Java版特有的附加函数或属性均无效
所有函数名前都可以添加任意文本前缀和冒号,例如`minecraft:exploration_map``d1245436576u:fio2ejfoijfiowejf::::::exploration_map`
## 通用功能
以下基础功能适用于所有物品。
| 函数名 | 容器战利品 | 方块掉落 | 钓鱼 | 实体掉落 | 实体装备 | 交易表 |
| -------------------- | ---------- | -------- | ------ | -------- | -------- | -------- |
| `set_count` | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ |
| `set_name` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `set_lore` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `set_data` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `random_block_state` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `random_aux_value` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `set_damage` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
### 数量设置
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ❌ |
::: tip 注意
交易表使用[`"quantity"`属性](/wiki/loot/trade-tables#quantity)来设置物品数量。
:::
`set_count`函数用于设置物品数量。
::: code-group
```json [数量函数]
{
"function": "set_count",
"count": {
"min": 2,
"max": 4
}
}
```
:::
`"count"`属性决定物品的产出数量,可以是整数或[范围对象](#)。设置的数量可以超过物品的堆叠上限,此时在容器中会占用多个槽位,掉落在地面时会分成多个物品堆。该属性默认值为`0`,因此必须显式设置。
### 名称设置
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_name`函数用于设置物品名称。名称会显示在物品悬停提示中,玩家可以使用铁砧修改。
::: code-group
```json [名称函数]
{
"function": "set_name",
"name": "诅咒之弓"
}
```
:::
`"name"`属性设置物品名称。默认显示为斜体,但支持格式代码,可以在开头添加`§r`重置为非斜体。不支持原始文本,可使用`\n`换行。
### 描述文本
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_lore`函数设置物品的描述文本。
::: code-group
```json [描述函数]
{
"function": "set_lore",
"lore": [
"第一行描述",
"第二行描述"
]
}
```
:::
`"lore"`属性可以是字符串或字符串数组。每行支持格式代码但不支持本地化,每行的格式上下文独立。默认显示紫色斜体,可用`§r`重置。`\n`可在单行内换行并保持格式。
### 数据值设置
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_data`设置物品的数据值,类似于`/give`命令的参数。对方块设置其数据值,对物品设置辅助值。注意不能设置物品耐久度,需使用[`durability`](#durability)。
::: code-group
```json [数据函数]
{
"function": "set_data",
"data": 2
}
```
:::
`"data"`属性可以是整数或范围对象,默认`0`。
整数形式:
```json
"data": 1
```
范围对象形式:
```json
"data": {
"min": 0,
"max": 5
}
```
### 方块状态
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`random_block_state`设置方块的单个状态值。
::: code-group
```json [方块状态函数]
{
"function": "random_block_state",
"block_state": "wiki:color",
"values": 3
}
```
:::
设置方块的某个状态值
block_state
必需,方块状态名称字符串
values
可以是数字或min/max对象
默认为0... 否则无意义?
### 辅助值
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`random_aux_value`
::: code-group
```json [辅助值函数]
{
"function": "random_aux_value",
"values": {
"min": 2,
"max": 4
}
}
```
:::
设置物品的辅助值
values
可以是整数或min/max对象
随机均匀选择
仅影响辅助值(如羊毛颜色而非工具耐久)
会覆盖标识符中的`:suffix`值(如`minecraft:wool:10`
同样适用于方块数据
### 耐久度
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_damage`设置物品耐久度。
::: code-group
```json [耐久函数]
{
"function": "set_damage",
"damage": {
"min": 0.5,
"max": 1
}
}
```
:::
`"damage"`属性可以是数字或[范围对象](#),值域`0`到`1``0`表示完全损坏,`1`表示全新。
## 物品专属功能
以下功能仅适用于特定物品。
| 函数名 | 容器战利品 | 方块掉落 | 钓鱼 | 实体掉落 | 实体装备 | 交易表 |
| ------------------------ | ---------- | -------- | ------ | -------- | -------- | -------- |
| `furnace_smelt` | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| `set_book_contents` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `exploration_map` | ✅ | ✅ | ✅ | ✅ | ✅ | ⚠️ |
| `set_banner_details` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `random_dye` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `set_actor_id` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `fill_container` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
### 熔炼物品
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ❌ |
| 方块掉落 | ❌ |
| 钓鱼 | ❌ |
| 实体掉落 | ✅ |
| 实体装备 | ❌ |
| 交易表 | ❌ |
`furnace_smelt`
::: code-group
```json [熔炼函数]
{
"function": "furnace_smelt"
}
```
:::
暗示实体必须在死亡时处于燃烧状态
即使移除条件检查,仍需要实体着火死亡才能触发
### 书册内容
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_book_contents`
::: code-group
```json [书册函数]
{
"function": "set_book_contents",
"title": "书名",
"author": "作者",
"pages": [
"第一页内容",
"第二页内容"
]
}
```
:::
仅适用于`writable_book`和`written_book`
author
作者名字符串
title
书名字符串
pages
字符串数组,每元素一页
最多50页每页798字符
总字符限制12,800
使用`\n`换行(非`\\n`
不支持制表符
支持颜色代码,每页格式独立
### 探险地图
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`exploration_map`
::: code-group
```json [地图函数]
{
"function": "exploration_map",
"destination": "village"
}
```
:::
交易表信息:
destination
目前仅支持`monument`和`mansion`
其他类型(如沉船宝藏)会显示为"未知地图"
战利品表信息:
支持所有/locate定位点
需在对应维度
海底神殿和林地府邸会显示正确图标和名称
无效目标仍会显示基础地图轮廓
适用于所有获取方式
### 旗帜类型
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_banner_details`
::: code-group
```json [旗帜函数]
{
"function": "set_banner_details"
}
```
:::
仅适用于`banner`
type
只能是0或1
0为白色旗帜
1为灾厄旗帜
### 随机染色
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`random_dye`
::: code-group
```json [染色函数]
{
"function": "random_dye"
}
```
:::
随机染色皮革装备或马铠
不适用于羊毛等方块
### 刷怪蛋
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`set_actor_id`
::: code-group
```json [刷怪蛋函数]
{
"function": "set_actor_id"
}
```
:::
适用于刷怪蛋
id
生物标识符
交易表中默认为交易者实体类型
### 容器内容
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`fill_container`
::: code-group
```json [容器函数]
{
"function": "fill_container"
}
```
:::
设置容器方块内容
loot_table
从行为包根目录开始的战利品表路径
必需,否则显示普通物品
不能指向当前战利品表
适用于所有获取方式
## 附魔功能
| 函数名 | 容器战利品 | 方块掉落 | 钓鱼 | 实体掉落 | 实体装备 | 交易表 |
| -------------------------- | ---------- | -------- | ------ | -------- | -------- | -------- |
| `enchant_book_for_trading` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `enchant_with_levels` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `enchant_randomly` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `enchant_random_gear` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
| `specific_enchants` | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
### 交易附魔书
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`enchant_book_for_trading`
::: code-group
```json [交易附魔函数]
{
"function": "enchant_book_for_trading"
}
```
:::
详见交易表文档
### 等级附魔
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`enchant_with_levels`使用附魔台逻辑附魔物品,可选是否允许宝藏附魔。
::: code-group
```json [等级附魔函数]
{
"function": "enchant_with_levels",
"levels": {
"min": 15,
"max": 21
},
"treasure": true
}
```
:::
类似附魔台机制但不限于30级
99999级会产生包含几乎所有附魔的超强书
treasure
布尔值默认false
开启宝藏附魔和诅咒附魔可能
levels
数字或min/max对象
默认0
负值视为0
### 随机附魔
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`enchant_randomly`
::: code-group
```json [随机附魔函数]
{
"function": "enchant_randomly"
}
```
:::
随机选择附魔类型和等级
treasure
布尔值默认false
开启宝藏附魔可能
### 装备附魔
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`enchant_random_gear`
::: code-group
```json [装备附魔函数]
{
"function": "enchant_random_gear"
}
```
:::
类似enchant_randomly但不含宝藏附魔
适用于胡萝卜钓竿等非常规装备
chance
0到1的数字
默认0
决定是否附魔的概率
### 指定附魔
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ✅ |
| 方块掉落 | ✅ |
| 钓鱼 | ✅ |
| 实体掉落 | ✅ |
| 实体装备 | ✅ |
| 交易表 | ✅ |
`specific_enchants`
::: code-group
```json [指定附魔函数]
{
"function": "specific_enchants"
}
```
:::
应用特定附魔组合
enchants
字符串数组或对象
字符串为附魔ID
对象格式:
id
附魔标识符
level
可选默认1
可以是数字或[min,max]数组
## 外部因素
| 函数名 | 容器战利品 | 方块掉落 | 钓鱼 | 实体掉落 | 实体装备 | 交易表 |
| --------------------------- | ---------- | -------- | ------ | -------- | -------- | -------- |
| `looting_enchant` | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
| `explosion_decay` | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
| `set_data_from_color_index` | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
| `trader_material_type` | ❌ | ❌ | ❌ | ❌ | ❌ | ✅ |
### 抢夺附魔
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ❌ |
| 方块掉落 | ❌ |
| 钓鱼 | ❌ |
| 实体掉落 | ✅ |
| 实体装备 | ❌ |
| 交易表 | ❌ |
`looting_enchant`
::: code-group
```json [抢夺函数]
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
```
:::
count可以是整数或min/max
### 爆炸衰减
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ❌ |
| 方块掉落 | ✅ |
| 钓鱼 | ❌ |
| 实体掉落 | ❌ |
| 实体装备 | ❌ |
| 交易表 | ❌ |
`explosion_decay`
::: code-group
```json [爆炸函数]
{
"function": "explosion_decay"
}
```
:::
默认总能存活。在爆炸中时,根据爆炸威力有概率不掉落
### 实体颜色
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ❌ |
| 方块掉落 | ❌ |
| 钓鱼 | ❌ |
| 实体掉落 | ❌ |
| 实体装备 | ❌ |
| 交易表 | ✅ |
`set_data_from_color_index`
::: code-group
```json [颜色函数]
{
"function": "set_data_from_color_index"
}
```
:::
将方块数据值设置为实体`minecraft:color`组件的值
### 交易者材料类型
| 使用场景 | 是否可用 |
| ------------------ | -------- |
| 容器战利品 | ❌ |
| 方块掉落 | ❌ |
| 钓鱼 | ❌ |
| 实体掉落 | ❌ |
| 实体装备 | ❌ |
| 交易表 | ✅ |
`trader_material_type`
::: code-group
```json [交易材料函数]
{
"function": "trader_material_type"
}
```
:::
仅限交易使用?可能也适用于某些战利品