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
package/README.md
CHANGED
|
@@ -1,121 +1,255 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
[
|
|
4
|
+
|
|
5
|
+
Minecraft Bedrock 版 Addon 开发框架,将 JSON 配置抽象为 TypeScript 类,提供类型安全的 API 和自动化构建工具。
|
|
6
|
+
|
|
7
|
+
[](https://nodejs.org/)
|
|
8
|
+
[](https://www.npmjs.com/package/sapdon)
|
|
9
|
+
[](https://qm.qq.com/q/2HrXHcKq9j)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 特性
|
|
14
|
+
|
|
15
|
+
- **TypeScript / JavaScript 驱动** — 用代码定义物品、实体、方块、配方等,自动生成 JSON
|
|
16
|
+
- **三层架构** — DTO 层映射 Minecraft Schema,业务逻辑层封装组件操作,工厂层提供简洁 API
|
|
17
|
+
- **30+ 核心 API** — ItemAPI、EntityAPI、BlockAPI、RecipeAPI、BiomeAPI、FeatureAPI、UiAPI
|
|
18
|
+
- **序列化系统** — 装饰器驱动,`@Serializer` 自动将类实例转为标准 Minecraft JSON
|
|
19
|
+
- **即时代码注册** — 通过 HTTP 与开发服务器通信,无需手动管理 JSON 文件
|
|
20
|
+
- **热更新 (HMR)** — 文件变更自动触发热更新,即时同步到 Minecraft
|
|
21
|
+
- **OC 运行时** — ECS 游戏框架,用于 Minecraft Script API 环境,支持组件、调度器、输入处理
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 快速开始
|
|
26
|
+
|
|
27
|
+
### 环境要求
|
|
28
|
+
|
|
29
|
+
- Node.js 18+
|
|
30
|
+
- npm
|
|
31
|
+
|
|
32
|
+
### 安装
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install -g sapdon
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### 创建项目
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
sapdon create my_addon
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
根据提示输入项目信息,选择 TypeScript 或 JavaScript 模板。
|
|
45
|
+
|
|
46
|
+
### 项目结构
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
my_addon/
|
|
50
|
+
├── main.ts # 构建入口(定义物品、实体等)
|
|
51
|
+
├── build.config # 构建配置
|
|
52
|
+
├── mod.info # 模组元数据
|
|
53
|
+
├── tsconfig.json # TypeScript 配置
|
|
54
|
+
├── pack_icon.png # 模组图标
|
|
55
|
+
├── res/ # 资源文件(纹理、模型、音效)
|
|
56
|
+
└── scripts/
|
|
57
|
+
└── main.ts # Script API 入口(游戏内运行时)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 编写代码
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
// main.ts
|
|
64
|
+
import { ItemAPI, ItemCategory, EntityAPI, registry, ItemComponent } from '@sapdon/core'
|
|
65
|
+
|
|
66
|
+
// 创建一个物品
|
|
67
|
+
ItemAPI.createItem('my_addon:magic_ingot', ItemCategory.Items, 'magic_ingot')
|
|
68
|
+
.addComponent(ItemComponent.setDisplayName('魔法锭'))
|
|
69
|
+
|
|
70
|
+
// 提交注册
|
|
71
|
+
registry.submit()
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 构建
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# 在项目目录中
|
|
78
|
+
sapdon build .
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
构建输出在 `dev/` 目录:
|
|
82
|
+
- `dev/my_addon_BP/` — 行为包(entities/, items/, blocks/, scripts/...)
|
|
83
|
+
- `dev/my_addon_RP/` — 资源包(entity/, textures/, animations/, ui/...)
|
|
84
|
+
|
|
85
|
+
构建完成后自动同步到 Minecraft 开发包目录。
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## 核心 API 示例
|
|
90
|
+
|
|
91
|
+
### 物品
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
import { ItemAPI, ItemCategory } from '@sapdon/core'
|
|
95
|
+
|
|
96
|
+
// 基础物品
|
|
97
|
+
ItemAPI.createItem('my:item', ItemCategory.Items, 'texture')
|
|
98
|
+
|
|
99
|
+
// 食物
|
|
100
|
+
ItemAPI.createFood('my:food', ItemCategory.Items, 'apple')
|
|
101
|
+
.addComponent(ItemComponent.setFoodComponent({ nutrition: 4, saturationModifier: 0.6 }))
|
|
102
|
+
|
|
103
|
+
// 带自定义组件的物品
|
|
104
|
+
ItemAPI.createItem('my:tool', ItemCategory.Items, 'tool_tex')
|
|
105
|
+
.addComponent(ItemComponent.setHandEquipped(true))
|
|
106
|
+
.addComponent(ItemComponent.setDurability(250))
|
|
107
|
+
.format_version = '1.21.90'
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 实体
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// 创建实体(自动注册 behavior + resource)
|
|
114
|
+
const golem = EntityAPI.createEntity('my:golem', 'textures/entity/golem', {
|
|
115
|
+
is_spawnable: true,
|
|
116
|
+
is_summonable: true
|
|
117
|
+
})
|
|
118
|
+
|
|
119
|
+
// 行为包组件
|
|
120
|
+
golem.behavior.addComponent(
|
|
121
|
+
EntityComponent.combineComponents(
|
|
122
|
+
EntityComponent.setHealth(50, 50),
|
|
123
|
+
EntityComponent.setMovement(0.25),
|
|
124
|
+
EntityComponent.setCollisionBox(1, 1.5)
|
|
125
|
+
)
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
// 资源包配置
|
|
129
|
+
golem.resource.addGeometry('default', 'geometry.golem')
|
|
130
|
+
golem.resource.addMaterial('default', 'entity_alphatest')
|
|
131
|
+
golem.resource.addTexture('default', 'textures/entity/golem')
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
### 方块
|
|
135
|
+
|
|
136
|
+
```typescript
|
|
137
|
+
// 基础方块(6面纹理)
|
|
138
|
+
BlockAPI.createBasicBlock('my:block', 'nature',
|
|
139
|
+
['down', 'up', 'north', 'south', 'west', 'east'])
|
|
140
|
+
|
|
141
|
+
// 可旋转方块
|
|
142
|
+
BlockAPI.createRotatableBlock('my:log', 'nature',
|
|
143
|
+
['log_top', 'log_top', 'log_side', 'log_side', 'log_side', 'log_side'],
|
|
144
|
+
{ rotationType: RotationTypes.LOG })
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
### 配方
|
|
148
|
+
|
|
149
|
+
```typescript
|
|
150
|
+
// 有序配方
|
|
151
|
+
RecipeAPI.registerSimpleShaped('my:item', ['my:item'],
|
|
152
|
+
['ABA', 'BCB', 'ABA'], {
|
|
153
|
+
A: 'minecraft:iron_ingot',
|
|
154
|
+
B: 'minecraft:gold_ingot',
|
|
155
|
+
C: 'minecraft:diamond'
|
|
156
|
+
}
|
|
157
|
+
).tags('crafting_table')
|
|
158
|
+
|
|
159
|
+
// 熔炉配方
|
|
160
|
+
RecipeAPI.registerSimpleFurnace('my:smelted', 'my:ore')
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 架构概览
|
|
166
|
+
|
|
167
|
+
### 三层核心架构
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
┌──────────────────────────────────────────────┐
|
|
171
|
+
│ 工厂/API 层 │
|
|
172
|
+
│ ItemAPI, EntityAPI, BlockAPI, RecipeAPI... │
|
|
173
|
+
│ 用户直接调用,创建实例并注册 │
|
|
174
|
+
├──────────────────────────────────────────────┤
|
|
175
|
+
│ 业务逻辑层 │
|
|
176
|
+
│ Item, Entity, Block, Biome... │
|
|
177
|
+
│ 封装组件操作方法 │
|
|
178
|
+
├──────────────────────────────────────────────┤
|
|
179
|
+
│ DTO 层 │
|
|
180
|
+
│ AddonItem, AddonEntity, AddonBlock... │
|
|
181
|
+
│ 1:1 映射 Minecraft JSON Schema │
|
|
182
|
+
└──────────────────────────────────────────────┘
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### 数据流
|
|
186
|
+
|
|
187
|
+
```
|
|
188
|
+
用户代码 (main.ts) CLI 进程 构建输出
|
|
189
|
+
│ │ │
|
|
190
|
+
│── registry.submit() ──→│ HTTP POST │
|
|
191
|
+
│ │ generateAddon() │
|
|
192
|
+
│ │ → entities/*.json │
|
|
193
|
+
│ │ → items/*.json │
|
|
194
|
+
│ │ → blocks/*.json │
|
|
195
|
+
│ │ → scripts/index.js │
|
|
196
|
+
│ │ │
|
|
197
|
+
│ │── syncDevFilesServer │
|
|
198
|
+
│ │ → Minecraft 目录 │
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
详见 [doc/dev/architecture.md](./doc/dev/architecture.md)。
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 文档
|
|
206
|
+
|
|
207
|
+
| 文档 | 说明 |
|
|
208
|
+
|------|------|
|
|
209
|
+
| [快速入门](./doc/user/quick-start.md) | 安装、创建、构建 |
|
|
210
|
+
| [物品教程](./doc/user/tutorials/item.md) | 基础物品 → 食物 → 盔甲 |
|
|
211
|
+
| [实体教程](./doc/user/tutorials/entity.md) | 创建实体 → 组件 → AI 行为 |
|
|
212
|
+
| [方块教程](./doc/user/tutorials/block.md) | 基础方块 → 旋转 → 作物 |
|
|
213
|
+
| [配方教程](./doc/user/tutorials/recipe.md) | 有序/无序/熔炉配方 |
|
|
214
|
+
| [指南书教程](./doc/user/tutorials/neo-guidebook.md) | NeoGuidebook API 用法 |
|
|
215
|
+
| [指南书实战经验](./doc/user/tutorials/neo-guidebook-experience.md) | 接入流程与踩坑清单 |
|
|
216
|
+
| [物品 API](./doc/user/api/item.md) | ItemAPI、Item、ItemComponent |
|
|
217
|
+
| [实体 API](./doc/user/api/entity.md) | EntityAPI、EntityComponent、AI |
|
|
218
|
+
| [方块 API](./doc/user/api/block.md) | BlockAPI、BlockComponent |
|
|
219
|
+
| [配方 API](./doc/user/api/recipe.md) | RecipeAPI、配方类 |
|
|
220
|
+
| [生物群系 & 特征 API](./doc/user/api/biome.md) | BiomeAPI、FeatureAPI |
|
|
221
|
+
| [纹理 API](./doc/user/api/texture.md) | 纹理管理器 |
|
|
222
|
+
| [build.config](./doc/user/config/build-config.md) | 构建配置字段 |
|
|
223
|
+
| [常见问题](./doc/user/faq.md) | FAQ |
|
|
224
|
+
| [架构概览](./doc/dev/architecture.md) | 整体架构(源码开发者) |
|
|
225
|
+
| [Core 模块](./doc/dev/core.md) | 三层架构详解(源码开发者) |
|
|
226
|
+
| [CLI 模块](./doc/dev/cli.md) | 构建管道(源码开发者) |
|
|
227
|
+
| [OC 运行时](./doc/dev/oc.md) | ECS 框架(源码开发者) |
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## 编译 Sapdon 框架
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
git clone https://github.com/Meteage/sapdon.git
|
|
235
|
+
cd sapdon
|
|
236
|
+
npm install
|
|
237
|
+
npm run build
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
构建选项:
|
|
241
|
+
- `npm run build -- verbose` — 查看详细日志
|
|
242
|
+
- `npm run build -- keep` — 保留中间 `dist/` 目录
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 致谢
|
|
247
|
+
|
|
248
|
+
感谢 [Bedrock Wiki](https://wiki.bedrock.dev/) 提供的物品、方块、实体等组件与功能的方法文档,本项目(尤其是 `examples/items_demo` 中的自定义武器、投掷物品等示例)参考了其中的规范实现。
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## 社区
|
|
253
|
+
|
|
254
|
+
- QQ 群:`810904181`
|
|
255
|
+
- [GitHub Issues](https://github.com/Meteage/sapdon/issues)
|