sapdon 3.2.2 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +255 -121
- package/doc/dev/architecture.md +418 -0
- package/doc/dev/cli.md +467 -0
- package/doc/dev/core.md +751 -0
- package/doc/dev/lr-paradigm.md +85 -0
- package/doc/dev/oc.md +582 -0
- package/doc/dev/workflow.md +257 -0
- package/doc/hello_sapdon/hello_sapdon.md +3 -3
- package/doc/user/api/biome.md +558 -0
- package/doc/user/api/block.md +1530 -0
- package/doc/user/api/entity.md +685 -0
- package/doc/user/api/extra.md +231 -0
- package/doc/user/api/item.md +1125 -0
- package/doc/user/api/neo-guidebook.md +409 -0
- package/doc/user/api/recipe.md +427 -0
- package/doc/user/api/sapdon-ui.md +185 -0
- package/doc/user/api/texture.md +181 -0
- package/doc/user/config/build-config.md +83 -0
- package/doc/user/config/mod-info.md +33 -0
- package/doc/user/faq.md +160 -0
- package/doc/user/quick-start.md +122 -0
- package/doc/user/tutorials/block.md +474 -0
- package/doc/user/tutorials/entity.md +356 -0
- package/doc/user/tutorials/item.md +449 -0
- package/doc/user/tutorials/neo-guidebook-experience.md +381 -0
- package/doc/user/tutorials/neo-guidebook.md +640 -0
- package/doc/user/tutorials/recipe.md +278 -0
- package/doc/user/tutorials/sapdon-ui.md +207 -0
- package/package.json +8 -3
- package/prod/cli/index.js +1 -1
- package/prod/cli/start.js +1 -1458
- package/prod/core/index.d.ts +4564 -2166
- package/prod/core/index.js +1 -59015
- package/prod/core/package.json +7 -0
- package/prod/oc/index.d.ts +350 -108
- package/prod/oc/index.js +1 -1
- package/prod/oc/package.json +7 -0
- package/prod/utils/index.d.ts +20 -9
- package/prod/utils/index.js +1 -1
- package/prod/utils/package.json +7 -0
- package/doc/BlockAPI.md +0 -145
- package/doc/api.md +0 -128
- package/doc/oc/index.md +0 -0
- package/doc/sapdon-ts.md +0 -64
- package/src/templates/js_sapdon/build.config +0 -23
- package/src/templates/js_sapdon/main.mjs +0 -4
- package/src/templates/js_sapdon/mod.info +0 -7
- package/src/templates/js_sapdon/pack_icon.png +0 -0
- package/src/templates/js_sapdon/package.json +0 -20
- package/src/templates/js_sapdon/res/animations/animation_item.animation.json +0 -34
- package/src/templates/js_sapdon/res/animations/large_item.animation.json +0 -27
- package/src/templates/js_sapdon/res/models/blocks/crop.geo.json +0 -48
- package/src/templates/js_sapdon/res/models/entity/animation/animation_item.geo.json +0 -26
- package/src/templates/js_sapdon/res/models/entity/animation/large_item.geo.json +0 -28
- package/src/templates/js_sapdon/res/textures/blocks/none.png +0 -0
- package/src/templates/js_sapdon/res/textures/blocks/test_log_oak.png +0 -0
- package/src/templates/js_sapdon/res/textures/blocks/test_log_top.png +0 -0
- package/src/templates/js_sapdon/res/textures/items/masterball.png +0 -0
- package/src/templates/js_sapdon/scripts/custom_components/cropComponent.js +0 -50
- package/src/templates/js_sapdon/scripts/custom_components/items/gui_book.js +0 -37
- package/src/templates/js_sapdon/scripts/custom_components/registry.js +0 -25
- package/src/templates/js_sapdon/scripts/index.js +0 -0
- package/src/templates/ts_sapdon/build.config +0 -23
- package/src/templates/ts_sapdon/main.ts +0 -11
- package/src/templates/ts_sapdon/mod.info +0 -7
- package/src/templates/ts_sapdon/pack_icon.png +0 -0
- package/src/templates/ts_sapdon/package.json +0 -20
- package/src/templates/ts_sapdon/res/models/blocks/crop.geo.json +0 -48
- package/src/templates/ts_sapdon/res/textures/blocks/test_log_oak.png +0 -0
- package/src/templates/ts_sapdon/res/textures/blocks/test_log_top.png +0 -0
- package/src/templates/ts_sapdon/res/textures/items/masterball.png +0 -0
- package/src/templates/ts_sapdon/scripts/components/cropComponent.ts +0 -44
- package/src/templates/ts_sapdon/scripts/components/items/guiBook.ts +0 -36
- package/src/templates/ts_sapdon/scripts/components/registry.ts +0 -24
- package/src/templates/ts_sapdon/scripts/index.ts +0 -7
- package/src/templates/ts_sapdon/tsconfig.json +0 -117
|
@@ -0,0 +1,449 @@
|
|
|
1
|
+
# 物品创建教程
|
|
2
|
+
|
|
3
|
+
本教程将带领你逐步学习使用 sapdon 框架创建各种类型的物品。
|
|
4
|
+
|
|
5
|
+
## 目录
|
|
6
|
+
|
|
7
|
+
1. [基础物品](#1-基础物品)
|
|
8
|
+
2. [食物](#2-食物)
|
|
9
|
+
3. [盔甲](#3-盔甲)
|
|
10
|
+
4. [可附着物](#4-可附着物)
|
|
11
|
+
5. [翻书物品](#5-翻书物品)
|
|
12
|
+
6. [物品组件](#6-物品组件)
|
|
13
|
+
7. [format_version 设置](#7-format_version-设置)
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 1. 基础物品
|
|
18
|
+
|
|
19
|
+
使用 `ItemAPI.createItem()` 创建最简单的物品,需要提供标识符、分类和纹理名称。
|
|
20
|
+
|
|
21
|
+
```typescript
|
|
22
|
+
// main.ts — 基础物品
|
|
23
|
+
import { ItemAPI, registry, ItemComponent, ItemCategory } from '@sapdon/core'
|
|
24
|
+
|
|
25
|
+
// 创建一个基础物品
|
|
26
|
+
// 参数: (标识符, 分类, 纹理名称, 可选配置)
|
|
27
|
+
const myItem = ItemAPI.createItem(
|
|
28
|
+
'my_mod:simple_item', // 标识符(命名空间:物品名)
|
|
29
|
+
ItemCategory.Items, // 分类(items 类别)
|
|
30
|
+
'apple', // 纹理名称(使用原版纹理,无需实际文件)
|
|
31
|
+
{
|
|
32
|
+
group: 'minecraft:itemGroup.name.ingredients', // 创造模式物品栏分组
|
|
33
|
+
max_stack_size: 16, // 最大堆叠数量
|
|
34
|
+
}
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
// 添加显示名称组件
|
|
38
|
+
myItem.addComponent(
|
|
39
|
+
ItemComponent.setDisplayName('§a我的自定义物品') // 支持 Minecraft 颜色代码
|
|
40
|
+
)
|
|
41
|
+
|
|
42
|
+
// 提交所有注册
|
|
43
|
+
registry.submit()
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 参数说明
|
|
47
|
+
|
|
48
|
+
| 参数 | 类型 | 必填 | 说明 |
|
|
49
|
+
|------|------|------|------|
|
|
50
|
+
| `identifier` | string | 是 | 物品唯一标识符,格式为 `命名空间:名称` |
|
|
51
|
+
| `category` | string | 是 | 创造菜单分类,推荐使用 `ItemCategory` 枚举 |
|
|
52
|
+
| `texture` | string | 是 | 纹理名称,对应资源包中的纹理文件 |
|
|
53
|
+
| `options.group` | string | 否 | 物品分组,如 `"minecraft:itemGroup.name.ingredients"` |
|
|
54
|
+
| `options.hide_in_command` | boolean | 否 | 是否在命令中隐藏此物品(默认 false) |
|
|
55
|
+
| `options.max_stack_size` | number | 否 | 最大堆叠数量(默认 64,范围 1-99) |
|
|
56
|
+
|
|
57
|
+
> **提示**:当 `hide_in_command` 为 `true` 时,`createItem` 会自动创建对应的可附着物(attachable),使物品在游戏中以 3D 模型显示。
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 2. 食物
|
|
62
|
+
|
|
63
|
+
使用 `ItemAPI.createFood()` 创建可食用的物品。
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
// main.ts — 食物物品
|
|
67
|
+
import { ItemAPI, registry, ItemCategory } from '@sapdon/core'
|
|
68
|
+
|
|
69
|
+
// 创建一个食物物品
|
|
70
|
+
// 参数: (标识符, 分类, 纹理名称, 可选配置)
|
|
71
|
+
const myFood = ItemAPI.createFood(
|
|
72
|
+
'my_mod:magic_apple', // 标识符
|
|
73
|
+
ItemCategory.Items, // 分类
|
|
74
|
+
'apple', // 纹理名称(使用原版苹果纹理)
|
|
75
|
+
{
|
|
76
|
+
nutrition: 6, // 营养值(恢复的饥饿值)
|
|
77
|
+
saturationModifier: 1.2, // 饱和度修正值
|
|
78
|
+
canAlwaysEat: true, // 是否可随时食用(即使饱食度满)
|
|
79
|
+
animation: 'eat', // 使用动画('eat' 或 'drink')
|
|
80
|
+
}
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
// 提交所有注册
|
|
84
|
+
registry.submit()
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### 食物参数说明
|
|
88
|
+
|
|
89
|
+
| 参数 | 类型 | 默认值 | 说明 |
|
|
90
|
+
|------|------|--------|------|
|
|
91
|
+
| `nutrition` | number | 0 | 食物提供的营养值(半饥饿图标数 × 2) |
|
|
92
|
+
| `saturationModifier` | number | 1 | 饱和度修正值,最终饱和度 = nutrition × saturationModifier |
|
|
93
|
+
| `canAlwaysEat` | boolean | false | 是否允许在饱食度满时继续食用 |
|
|
94
|
+
| `animation` | string | 'eat' | 使用动画,可选 `'eat'` 或 `'drink'` |
|
|
95
|
+
| `movement` | number | 1 | 食用时的移动速度修正 |
|
|
96
|
+
| `useDuration` | number | 1 | 食用所需时间(秒) |
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 3. 盔甲
|
|
101
|
+
|
|
102
|
+
sapdon 提供了四种盔甲类型的创建方法:头盔、胸甲、护腿、靴子。每个盔甲物品会自动创建对应的物品和可附着物。
|
|
103
|
+
|
|
104
|
+
### 3.1 头盔
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
// main.ts — 头盔
|
|
108
|
+
import { ItemAPI, registry } from '@sapdon/core'
|
|
109
|
+
|
|
110
|
+
// 创建头盔
|
|
111
|
+
// 参数: (标识符, 物品纹理, 纹理路径, 可选配置)
|
|
112
|
+
const helmet = ItemAPI.createHelmetArmor(
|
|
113
|
+
'my_mod:crystal_helmet', // 标识符
|
|
114
|
+
'diamond', // 物品纹理名称(用于物品图标,原版钻石纹理)
|
|
115
|
+
'textures/models/armor/diamond', // 纹理路径(穿戴在玩家身上时的模型纹理)
|
|
116
|
+
{
|
|
117
|
+
// 可选:自定义分组等
|
|
118
|
+
}
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
// 提交所有注册
|
|
122
|
+
registry.submit()
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 3.2 胸甲
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// main.ts — 胸甲
|
|
129
|
+
import { ItemAPI, registry } from '@sapdon/core'
|
|
130
|
+
|
|
131
|
+
const chestplate = ItemAPI.createChestplateArmor(
|
|
132
|
+
'my_mod:crystal_chestplate',
|
|
133
|
+
'diamond',
|
|
134
|
+
'textures/models/armor/diamond'
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
registry.submit()
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 3.3 护腿
|
|
141
|
+
|
|
142
|
+
```typescript
|
|
143
|
+
// main.ts — 护腿
|
|
144
|
+
import { ItemAPI, registry } from '@sapdon/core'
|
|
145
|
+
|
|
146
|
+
const leggings = ItemAPI.createLeggingsArmor(
|
|
147
|
+
'my_mod:crystal_leggings',
|
|
148
|
+
'diamond',
|
|
149
|
+
'textures/models/armor/diamond'
|
|
150
|
+
)
|
|
151
|
+
|
|
152
|
+
registry.submit()
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 3.4 靴子
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
// main.ts — 靴子
|
|
159
|
+
import { ItemAPI, registry } from '@sapdon/core'
|
|
160
|
+
|
|
161
|
+
const boots = ItemAPI.createBootArmor(
|
|
162
|
+
'my_mod:crystal_boots',
|
|
163
|
+
'diamond',
|
|
164
|
+
'textures/models/armor/diamond'
|
|
165
|
+
)
|
|
166
|
+
|
|
167
|
+
registry.submit()
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 盔甲保护值与插槽对照
|
|
171
|
+
|
|
172
|
+
| 盔甲类型 | 创建方法 | 保护值 | 插槽 | 几何模型 |
|
|
173
|
+
|---------|---------|--------|------|---------|
|
|
174
|
+
| 头盔 | `createHelmetArmor()` | 3 | `slot.armor.head` | `geometry.player.armor.helmet` |
|
|
175
|
+
| 胸甲 | `createChestplateArmor()` | 5 | `slot.armor.chest` | `geometry.player.armor.chestplate` |
|
|
176
|
+
| 护腿 | `createLeggingsArmor()` | 6 | `slot.armor.legs` | `geometry.player.armor.leggings` |
|
|
177
|
+
| 靴子 | `createBootArmor()` | 4 | `slot.armor.feet` | `geometry.player.armor.boots` |
|
|
178
|
+
|
|
179
|
+
> **注意**:盔甲使用 `equipment` 分类,自动设置分组(如 `itemGroup.name.chestplate`),最大堆叠数量为 1,并自动配置可附着物实现 3D 盔甲模型渲染。
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## 4. 可附着物
|
|
184
|
+
|
|
185
|
+
可附着物(Attachable)是 Minecraft 中用于实现手持物品 3D 模型和穿戴物品渲染的机制。使用 `ItemAPI.createAttachable()` 创建:
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// main.ts — 可附着物
|
|
189
|
+
import { ItemAPI, registry } from '@sapdon/core'
|
|
190
|
+
|
|
191
|
+
// 创建一个可附着物(用于手持 3D 模型)
|
|
192
|
+
const attachable = ItemAPI.createAttachable(
|
|
193
|
+
'my_mod:special_item', // 标识符
|
|
194
|
+
'textures/items/diamond', // 纹理路径(使用原版纹理)
|
|
195
|
+
'entity_alphatest' // 材质类型
|
|
196
|
+
)
|
|
197
|
+
|
|
198
|
+
// 进一步配置可附着物
|
|
199
|
+
attachable
|
|
200
|
+
.addGeometry('default', 'geometry.special_item') // 添加几何模型
|
|
201
|
+
.addTexture('enchanted', 'textures/misc/enchanted_item_glint') // 添加附魔纹理
|
|
202
|
+
.addRenderController('controller.render.special_item') // 添加渲染控制器
|
|
203
|
+
|
|
204
|
+
// 提交所有注册
|
|
205
|
+
registry.submit()
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### 常用材质类型
|
|
209
|
+
|
|
210
|
+
| 材质 | 说明 |
|
|
211
|
+
|------|------|
|
|
212
|
+
| `entity_alphatest` | 标准物品材质(支持透明度) |
|
|
213
|
+
| `entity_alphablend` | 透明混合材质 |
|
|
214
|
+
| `entity_nocull` | 双面渲染材质 |
|
|
215
|
+
| `armor` | 盔甲材质 |
|
|
216
|
+
| `armor_enchanted` | 盔甲附魔材质 |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## 5. 翻书物品
|
|
221
|
+
|
|
222
|
+
翻书物品(FlipbookItem)是一种具有动态帧动画效果的特殊物品,类似动态纹理:
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
// main.ts — 翻书物品
|
|
226
|
+
import { ItemAPI, ItemCategory, registry } from '@sapdon/core'
|
|
227
|
+
|
|
228
|
+
// 创建一个翻书物品(动态纹理动画)
|
|
229
|
+
// 参数: (标识符, 分类, 纹理名称, 可选配置)
|
|
230
|
+
const flipbook = ItemAPI.createFlipbookItem(
|
|
231
|
+
'my_mod:animated_block', // 标识符
|
|
232
|
+
ItemCategory.Construction, // 分类
|
|
233
|
+
'oak_log', // 纹理名称(使用原版纹理)
|
|
234
|
+
{
|
|
235
|
+
ticks_per_frame: 4, // 每帧持续的游戏刻数(1秒=20刻),默认8刻
|
|
236
|
+
max_stack_size: 64, // 最大堆叠数量
|
|
237
|
+
group: 'minecraft:itemGroup.name.construction', // 分组
|
|
238
|
+
}
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
// 提交所有注册
|
|
242
|
+
registry.submit()
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### 翻书物品特性
|
|
246
|
+
|
|
247
|
+
- 自动创建对应的 `GeometryBlock` 用于 3D 显示
|
|
248
|
+
- 自动注册翻书纹理动画
|
|
249
|
+
- 物品本身带有 `minecraft:block_placer` 组件,可以放置对应的方块
|
|
250
|
+
- 纹理放在 `RP/textures/blocks/` 目录下
|
|
251
|
+
- 需要配合相应的纹理贴图动画配置文件
|
|
252
|
+
|
|
253
|
+
---
|
|
254
|
+
|
|
255
|
+
## 6. 物品组件
|
|
256
|
+
|
|
257
|
+
`ItemComponent` 提供了一系列静态方法,用于构建物品的各种功能组件。这些组件通过链式调用 `addComponent()` 添加到物品上。
|
|
258
|
+
|
|
259
|
+
### 6.1 手持方式
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// main.ts — 手持组件示例
|
|
263
|
+
import { ItemAPI, registry, ItemComponent, ItemCategory } from '@sapdon/core'
|
|
264
|
+
|
|
265
|
+
const tool = ItemAPI.createItem('my_mod:special_tool', ItemCategory.Items, 'diamond')
|
|
266
|
+
tool.addComponent(
|
|
267
|
+
ItemComponent.combineComponents(
|
|
268
|
+
ItemComponent.setHandEquipped(true), // 像工具一样手持渲染
|
|
269
|
+
ItemComponent.setDisplayName('§e特殊工具'), // 显示名称
|
|
270
|
+
ItemComponent.setMaxStackSize(1), // 不可堆叠
|
|
271
|
+
)
|
|
272
|
+
)
|
|
273
|
+
|
|
274
|
+
registry.submit()
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### 6.2 耐久度
|
|
278
|
+
|
|
279
|
+
```typescript
|
|
280
|
+
// 添加耐久度组件
|
|
281
|
+
tool.addComponent(
|
|
282
|
+
ItemComponent.setDurability(
|
|
283
|
+
500, // 最大耐久值
|
|
284
|
+
10, // 最小损坏概率(百分比)
|
|
285
|
+
50 // 最大损坏概率(百分比)
|
|
286
|
+
)
|
|
287
|
+
)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### 6.3 燃料
|
|
291
|
+
|
|
292
|
+
```typescript
|
|
293
|
+
// 添加燃料组件(可当熔炉燃料)
|
|
294
|
+
tool.addComponent(
|
|
295
|
+
ItemComponent.setFuel(200) // 燃烧时间(秒)
|
|
296
|
+
)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### 6.4 交互按钮
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
// 添加交互按钮组件(右键点击时显示交互文本)
|
|
303
|
+
tool.addComponent(
|
|
304
|
+
ItemComponent.setInteractButton('使用工具') // 交互时显示的文本
|
|
305
|
+
)
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### 6.5 自定义组件(V2)
|
|
309
|
+
|
|
310
|
+
```typescript
|
|
311
|
+
// 添加自定义脚本组件 (需要 format_version > 1.21.90 和 Scripting V2)
|
|
312
|
+
tool.addComponent(
|
|
313
|
+
ItemComponent.setCustomComponentV2(
|
|
314
|
+
'my_mod:my_custom_component', // 组件标识符
|
|
315
|
+
{ // 自定义参数
|
|
316
|
+
speed: 1.5,
|
|
317
|
+
damage: 10,
|
|
318
|
+
}
|
|
319
|
+
)
|
|
320
|
+
)
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
### 6.6 合并多个组件
|
|
324
|
+
|
|
325
|
+
```typescript
|
|
326
|
+
// 使用 combineComponents 一次性添加多个组件
|
|
327
|
+
const item = ItemAPI.createItem('my_mod:complex_item', ItemCategory.Items, 'nether_star')
|
|
328
|
+
item.addComponent(
|
|
329
|
+
ItemComponent.combineComponents(
|
|
330
|
+
ItemComponent.setDisplayName('复杂物品'),
|
|
331
|
+
ItemComponent.setHandEquipped(true),
|
|
332
|
+
ItemComponent.setDurability(250, 5, 30),
|
|
333
|
+
ItemComponent.setGlint(true), // 附魔光效
|
|
334
|
+
ItemComponent.setUseAnimation('eat'), // 使用动画
|
|
335
|
+
ItemComponent.setUseModifiers(0.5, 1.5), // 移动速度修正, 使用时间
|
|
336
|
+
)
|
|
337
|
+
)
|
|
338
|
+
|
|
339
|
+
registry.submit()
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
### 6.7 完整组件列表
|
|
343
|
+
|
|
344
|
+
| 方法 | 说明 |
|
|
345
|
+
|------|------|
|
|
346
|
+
| `setDisplayName(name)` | 设置物品显示名称 |
|
|
347
|
+
| `setIcon(texture)` | 设置物品图标纹理 |
|
|
348
|
+
| `setMaxStackSize(size)` | 设置最大堆叠数量 |
|
|
349
|
+
| `setHandEquipped(bool)` | 设置手持渲染方式(true=像工具) |
|
|
350
|
+
| `setDurability(max, min%, max%)` | 设置耐久度 |
|
|
351
|
+
| `setFoodComponent(options)` | 设置食物属性(`{ nutrition, saturationModifier, canAlwaysEat, usingConvertsTo }`) |
|
|
352
|
+
| `setFuel(seconds)` | 设置燃料燃烧时间 |
|
|
353
|
+
| `setWearable(protection, slot)` | 设置可穿戴属性 |
|
|
354
|
+
| `setGlint(bool)` | 设置附魔光效 |
|
|
355
|
+
| `setUseAnimation(anim)` | 设置使用动画(如 'eat', 'drink') |
|
|
356
|
+
| `setUseModifiers(movement, duration)` | 设置使用修饰值 |
|
|
357
|
+
| `setThrowable(swing, powerScale, ...)` | 设置可投掷 |
|
|
358
|
+
| `setProjectile(criticalPower, entity)` | 设置投射物 |
|
|
359
|
+
| `setInteractButton(text)` | 设置交互按钮文本 |
|
|
360
|
+
| `setBlockPlacer(block, replaceItem, useOn)` | 设置方块放置器 |
|
|
361
|
+
| `setCustomComponentV2(id, params)` | 设置自定义 V2 组件 |
|
|
362
|
+
| `combineComponents(...maps)` | 合并多个组件 Map |
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
## 7. format_version 设置
|
|
367
|
+
|
|
368
|
+
`format_version` 控制物品定义文件的格式版本,影响可用组件和行为。可在创建物品时通过 `options.format_version` 设置:
|
|
369
|
+
|
|
370
|
+
```typescript
|
|
371
|
+
// main.ts — format_version 示例
|
|
372
|
+
import { ItemAPI, registry, ItemComponent, ItemCategory } from '@sapdon/core'
|
|
373
|
+
|
|
374
|
+
// 指定 format_version
|
|
375
|
+
const item = ItemAPI.createItem(
|
|
376
|
+
'my_mod:versioned_item',
|
|
377
|
+
ItemCategory.Items,
|
|
378
|
+
'diamond',
|
|
379
|
+
{
|
|
380
|
+
format_version: '1.21.40', // 默认值
|
|
381
|
+
}
|
|
382
|
+
)
|
|
383
|
+
|
|
384
|
+
item.addComponent(
|
|
385
|
+
ItemComponent.setDisplayName('版本化物品')
|
|
386
|
+
)
|
|
387
|
+
|
|
388
|
+
registry.submit()
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
### 版本注意事项
|
|
392
|
+
|
|
393
|
+
| 版本 | 说明 |
|
|
394
|
+
|------|------|
|
|
395
|
+
| `1.21.40` | 默认版本,兼容大部分 addon 功能 |
|
|
396
|
+
| `1.21.90+` | 支持 `setCustomComponentV2()` 和 Scripting V2.0.0 |
|
|
397
|
+
|
|
398
|
+
### 完整示例:结合所有知识点
|
|
399
|
+
|
|
400
|
+
```typescript
|
|
401
|
+
// main.ts — 综合示例
|
|
402
|
+
import { ItemAPI, registry, ItemComponent, ItemCategory } from '@sapdon/core'
|
|
403
|
+
|
|
404
|
+
// 1. 基础物品
|
|
405
|
+
ItemAPI.createItem('my_mod:ingot', ItemCategory.Items, 'iron_ingot', {
|
|
406
|
+
group: 'minecraft:itemGroup.name.ingredients',
|
|
407
|
+
max_stack_size: 64,
|
|
408
|
+
})
|
|
409
|
+
.addComponent(ItemComponent.setDisplayName('§b神秘锭'))
|
|
410
|
+
|
|
411
|
+
// 2. 食物
|
|
412
|
+
ItemAPI.createFood('my_mod:special_food', ItemCategory.Items, 'apple', {
|
|
413
|
+
nutrition: 8,
|
|
414
|
+
saturationModifier: 1.5,
|
|
415
|
+
canAlwaysEat: true,
|
|
416
|
+
animation: 'eat',
|
|
417
|
+
})
|
|
418
|
+
|
|
419
|
+
// 3. 全套盔甲
|
|
420
|
+
ItemAPI.createHelmetArmor('my_mod:ruby_helmet', 'diamond', 'textures/models/armor/diamond')
|
|
421
|
+
ItemAPI.createChestplateArmor('my_mod:ruby_chestplate', 'diamond', 'textures/models/armor/diamond')
|
|
422
|
+
ItemAPI.createLeggingsArmor('my_mod:ruby_leggings', 'diamond', 'textures/models/armor/diamond')
|
|
423
|
+
ItemAPI.createBootArmor('my_mod:ruby_boots', 'diamond', 'textures/models/armor/diamond')
|
|
424
|
+
|
|
425
|
+
// 4. 高级工具(组合组件)
|
|
426
|
+
ItemAPI.createItem('my_mod:super_sword', ItemCategory.Equipment, 'diamond_sword', {
|
|
427
|
+
format_version: '1.21.40',
|
|
428
|
+
})
|
|
429
|
+
.addComponent(
|
|
430
|
+
ItemComponent.combineComponents(
|
|
431
|
+
ItemComponent.setDisplayName('§6超级神剑'),
|
|
432
|
+
ItemComponent.setHandEquipped(true),
|
|
433
|
+
ItemComponent.setDurability(2000, 5, 15),
|
|
434
|
+
ItemComponent.setGlint(true),
|
|
435
|
+
ItemComponent.setInteractButton('释放技能'),
|
|
436
|
+
)
|
|
437
|
+
)
|
|
438
|
+
|
|
439
|
+
// 提交所有注册
|
|
440
|
+
registry.submit()
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
### 下一步
|
|
446
|
+
|
|
447
|
+
- [API 参考](../api/item.md) — 完整的 Item API 文档
|
|
448
|
+
- [方块教程](./block.md) — 学习创建自定义方块
|
|
449
|
+
- [实体教程](./entity.md) — 学习创建自定义实体
|