sapdon 3.2.2 → 3.3.3

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.
Files changed (68) hide show
  1. package/README.md +245 -121
  2. package/doc/dev/architecture.md +415 -0
  3. package/doc/dev/cli.md +467 -0
  4. package/doc/dev/core.md +717 -0
  5. package/doc/dev/oc.md +582 -0
  6. package/doc/user/api/biome.md +558 -0
  7. package/doc/user/api/block.md +945 -0
  8. package/doc/user/api/entity.md +685 -0
  9. package/doc/user/api/extra.md +231 -0
  10. package/doc/user/api/item.md +896 -0
  11. package/doc/user/api/recipe.md +427 -0
  12. package/doc/user/api/texture.md +181 -0
  13. package/doc/user/config/build-config.md +84 -0
  14. package/doc/user/config/mod-info.md +33 -0
  15. package/doc/user/faq.md +160 -0
  16. package/doc/user/quick-start.md +108 -0
  17. package/doc/user/tutorials/block.md +463 -0
  18. package/doc/user/tutorials/entity.md +356 -0
  19. package/doc/user/tutorials/item.md +449 -0
  20. package/doc/user/tutorials/recipe.md +278 -0
  21. package/package.json +4 -3
  22. package/prod/cli/index.js +1 -1
  23. package/prod/cli/start.js +1 -1458
  24. package/prod/core/index.d.ts +3290 -2150
  25. package/prod/core/index.js +1 -59015
  26. package/prod/core/package.json +7 -0
  27. package/prod/oc/index.d.ts +348 -108
  28. package/prod/oc/index.js +1 -1
  29. package/prod/oc/package.json +7 -0
  30. package/prod/utils/index.d.ts +20 -2
  31. package/prod/utils/index.js +1 -1
  32. package/prod/utils/package.json +7 -0
  33. package/doc/BlockAPI.md +0 -145
  34. package/doc/api.md +0 -128
  35. package/doc/oc/index.md +0 -0
  36. package/doc/sapdon-ts.md +0 -64
  37. package/src/templates/js_sapdon/build.config +0 -23
  38. package/src/templates/js_sapdon/main.mjs +0 -4
  39. package/src/templates/js_sapdon/mod.info +0 -7
  40. package/src/templates/js_sapdon/pack_icon.png +0 -0
  41. package/src/templates/js_sapdon/package.json +0 -20
  42. package/src/templates/js_sapdon/res/animations/animation_item.animation.json +0 -34
  43. package/src/templates/js_sapdon/res/animations/large_item.animation.json +0 -27
  44. package/src/templates/js_sapdon/res/models/blocks/crop.geo.json +0 -48
  45. package/src/templates/js_sapdon/res/models/entity/animation/animation_item.geo.json +0 -26
  46. package/src/templates/js_sapdon/res/models/entity/animation/large_item.geo.json +0 -28
  47. package/src/templates/js_sapdon/res/textures/blocks/none.png +0 -0
  48. package/src/templates/js_sapdon/res/textures/blocks/test_log_oak.png +0 -0
  49. package/src/templates/js_sapdon/res/textures/blocks/test_log_top.png +0 -0
  50. package/src/templates/js_sapdon/res/textures/items/masterball.png +0 -0
  51. package/src/templates/js_sapdon/scripts/custom_components/cropComponent.js +0 -50
  52. package/src/templates/js_sapdon/scripts/custom_components/items/gui_book.js +0 -37
  53. package/src/templates/js_sapdon/scripts/custom_components/registry.js +0 -25
  54. package/src/templates/js_sapdon/scripts/index.js +0 -0
  55. package/src/templates/ts_sapdon/build.config +0 -23
  56. package/src/templates/ts_sapdon/main.ts +0 -11
  57. package/src/templates/ts_sapdon/mod.info +0 -7
  58. package/src/templates/ts_sapdon/pack_icon.png +0 -0
  59. package/src/templates/ts_sapdon/package.json +0 -20
  60. package/src/templates/ts_sapdon/res/models/blocks/crop.geo.json +0 -48
  61. package/src/templates/ts_sapdon/res/textures/blocks/test_log_oak.png +0 -0
  62. package/src/templates/ts_sapdon/res/textures/blocks/test_log_top.png +0 -0
  63. package/src/templates/ts_sapdon/res/textures/items/masterball.png +0 -0
  64. package/src/templates/ts_sapdon/scripts/components/cropComponent.ts +0 -44
  65. package/src/templates/ts_sapdon/scripts/components/items/guiBook.ts +0 -36
  66. package/src/templates/ts_sapdon/scripts/components/registry.ts +0 -24
  67. package/src/templates/ts_sapdon/scripts/index.ts +0 -7
  68. package/src/templates/ts_sapdon/tsconfig.json +0 -117
package/README.md CHANGED
@@ -1,121 +1,245 @@
1
-
2
- # Sapdon 框架
3
-
4
- ![Sapdon Logo](pack_icon.png)
5
-
6
- Sapdon 是一个基于 JavaScript 开发的 Minecraft 基岩版模组开发框架。它通过提供丰富的 API 和自动化工具,帮助开发者简化传统开发流程,降低 JSON 配置复杂度,让您专注于模组逻辑实现。
7
-
8
- [![Node.js Version](https://img.shields.io/badge/node-%3E%3D16.0-blue)](https://nodejs.org/)
9
- [![npm Version](https://img.shields.io/npm/v/sapdon)](https://www.npmjs.com/package/sapdon)
10
- [![QQ Group](https://img.shields.io/badge/QQ%E7%BE%A4-810904181-green)](https://qm.qq.com/q/2HrXHcKq9j)
11
-
12
- ## ✨ 核心特性
13
-
14
- - **JavaScript 驱动开发** - 告别繁琐的 JSON 配置,使用现代 JS 语法编写模组
15
- - **模块化 API 设计** - 提供物品/方块/实体/配方等 30+ 核心 API 接口
16
- - **智能编译系统** - 一键生成标准 mcaddon 包文件
17
-
18
- ## 🚀 快速入门
19
-
20
- ### 环境准备
21
-
22
- 1. 安装 [Node.js](https://nodejs.org/) (推荐 v16+)
23
- 2. 安装 Visual Studio Code 或其他现代编辑器
24
-
25
- ### 安装 CLI
26
-
27
- ```bash
28
- npm install -g sapdon
29
- ```
30
-
31
- ### 创建新项目
32
-
33
- ```bash
34
- sapdon create hello_sapdon
35
- ```
36
-
37
- 根据提示输入项目信息:
38
- ```text
39
- ✔ Project Name: hello_sapdon
40
- ✔ Project Description: 我的第一个 Sapdon 模组
41
- Author Name: YourName
42
- ✔ Project Version: 1.0.0
43
- ✔ Minimum Engine Version: 1.19.50
44
- ```
45
-
46
- ### 项目结构
47
-
48
- ```
49
- hello_sapdon/
50
- ├── res/ # 资源文件(纹理/模型/音效)
51
- ├── scripts/ # 游戏脚本
52
- ├── build.config # 构建配置
53
- ├── main.mjs # 主入口文件
54
- ├── mod.info # 模组元数据
55
- └── pack_icon.png # 模组图标
56
- ```
57
-
58
- ## 📦 核心 API 示例
59
-
60
- ### 创建一个基础物品
61
- 1. 打开 `main.mjs` 文件。
62
- 2. 写入以下内容以创建一个基础物品:
63
- ```javascript
64
- import { ItemAPI } from "@sapdon/core";
65
-
66
- ItemAPI.createItem("hello_sapdon:my_item", "items", "masterball");
67
- ```
68
- 这段代码将创建一个名为 `my_item` 的物品,其命名空间为 `hello_sapdon`,类型为 `items`,并使用 `masterball` 作为图标。
69
-
70
-
71
- ## 🛠 执行构建命令
72
-
73
- 1. 在终端中输入以下命令以构建 `hello_sapdon` 项目:
74
- ```bash
75
- sapdon build hello_sapdon
76
- ```
77
- 2. 构建完成后,您将在 `hello_sapdon` 文件夹下看到一个 `dev` 文件夹,其中包含构建好的 Addon 包。
78
-
79
-
80
- 生成优化后的 mcaddon 包文件
81
-
82
- ## 📚 学习资源
83
-
84
- - [官方文档](./doc/)
85
- - [入门教程](./doc/hello_sapdon)
86
- - [示例模组仓库](./examples/)
87
-
88
-
89
- ## 常见问题
90
-
91
- ### 如何更新框架版本?
92
- ```bash
93
- npm update sapdon
94
- ```
95
-
96
- ### 如何添加依赖库?
97
- `build.config` 中添加:
98
- ```json
99
- {
100
- "dependencies": [
101
- {
102
- "module_name": "@minecraft/server",
103
- "version": "1.8.0"
104
- }
105
- ]
106
- }
107
- ```
108
-
109
- ## 🤝 社区支持
110
-
111
- - 官方 QQ 群:`810904181`
112
-
113
- ## ts支持
114
- [quick start](./doc/sapdon-ts.md)
115
-
116
- ## 编译 Sapdon
117
- 1. 安装依赖:`npm install`
118
- 2. 编译:`npm run build`
119
- 1. 查看详细输出 `npm run build -- verbose`
120
- 2. 保存中间文件夹 `dist` `npm run build -- keep`
121
- 3. 你也可以组合两个参数 `npm run build -- keep verbose`
1
+ # Sapdon
2
+
3
+ ![Sapdon Logo](pack_icon.png)
4
+
5
+ Minecraft Bedrock 版 Addon 开发框架,将 JSON 配置抽象为 TypeScript 类,提供类型安全的 API 和自动化构建工具。
6
+
7
+ [![Node.js Version](https://img.shields.io/badge/node-%3E%3D16.0-blue)](https://nodejs.org/)
8
+ [![npm Version](https://img.shields.io/npm/v/sapdon)](https://www.npmjs.com/package/sapdon)
9
+ [![QQ Group](https://img.shields.io/badge/QQ%E7%BE%A4-810904181-green)](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 16+
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, EntityAPI, registry, ItemComponent } from '@sapdon/core'
65
+
66
+ // 创建一个物品
67
+ ItemAPI.createItem('my_addon:magic_ingot', '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
+ // 基础物品
95
+ ItemAPI.createItem('my:item', 'items', 'texture')
96
+
97
+ // 食物
98
+ ItemAPI.createFood('my:food', 'items', 'apple')
99
+ .addComponent(ItemComponent.setFoodComponent(4, 0.6))
100
+
101
+ // 带自定义组件的物品
102
+ ItemAPI.createItem('my:tool', 'items', 'tool_tex')
103
+ .addComponent(ItemComponent.setHandEquipped(true))
104
+ .addComponent(ItemComponent.setDurability(250))
105
+ .format_version = '1.21.90'
106
+ ```
107
+
108
+ ### 实体
109
+
110
+ ```typescript
111
+ // 创建实体(自动注册 behavior + resource)
112
+ const golem = EntityAPI.createEntity('my:golem', 'textures/entity/golem', {
113
+ is_spawnable: true,
114
+ is_summonable: true
115
+ })
116
+
117
+ // 行为包组件
118
+ golem.behavior.addComponent(
119
+ EntityComponent.combineComponents(
120
+ EntityComponent.setHealth(50, 50),
121
+ EntityComponent.setMovement(0.25),
122
+ EntityComponent.setCollisionBox(1, 1.5)
123
+ )
124
+ )
125
+
126
+ // 资源包配置
127
+ golem.resource.addGeometry('default', 'geometry.golem')
128
+ golem.resource.addMaterial('default', 'entity_alphatest')
129
+ golem.resource.addTexture('default', 'textures/entity/golem')
130
+ ```
131
+
132
+ ### 方块
133
+
134
+ ```typescript
135
+ // 基础方块(6面纹理)
136
+ BlockAPI.createBasicBlock('my:block', 'nature',
137
+ ['down', 'up', 'north', 'south', 'west', 'east'])
138
+
139
+ // 可旋转方块
140
+ BlockAPI.createRotatableBlock('my:log', 'nature',
141
+ ['log_top', 'log_top', 'log_side', 'log_side', 'log_side', 'log_side'],
142
+ { rotationType: RotationTypes.LOG })
143
+ ```
144
+
145
+ ### 配方
146
+
147
+ ```typescript
148
+ // 有序配方
149
+ RecipeAPI.registerSimpleShaped('my:item', ['my:item'],
150
+ ['ABA', 'BCB', 'ABA'], {
151
+ A: 'minecraft:iron_ingot',
152
+ B: 'minecraft:gold_ingot',
153
+ C: 'minecraft:diamond'
154
+ }
155
+ ).tags('crafting_table')
156
+
157
+ // 熔炉配方
158
+ RecipeAPI.registerSimpleFurnace('my:smelted', 'my:ore')
159
+ ```
160
+
161
+ ---
162
+
163
+ ## 架构概览
164
+
165
+ ### 三层核心架构
166
+
167
+ ```
168
+ ┌──────────────────────────────────────────────┐
169
+ │ 工厂/API 层 │
170
+ │ ItemAPI, EntityAPI, BlockAPI, RecipeAPI... │
171
+ │ 用户直接调用,创建实例并注册 │
172
+ ├──────────────────────────────────────────────┤
173
+ │ 业务逻辑层 │
174
+ │ Item, Entity, Block, Biome... │
175
+ │ 封装组件操作方法 │
176
+ ├──────────────────────────────────────────────┤
177
+ │ DTO 层 │
178
+ │ AddonItem, AddonEntity, AddonBlock... │
179
+ │ 1:1 映射 Minecraft JSON Schema │
180
+ └──────────────────────────────────────────────┘
181
+ ```
182
+
183
+ ### 数据流
184
+
185
+ ```
186
+ 用户代码 (main.ts) CLI 进程 构建输出
187
+ │ │ │
188
+ │── registry.submit() ──→│ HTTP POST │
189
+ │ │ generateAddon() │
190
+ │ │ → entities/*.json │
191
+ │ │ → items/*.json │
192
+ │ │ → blocks/*.json │
193
+ │ │ → scripts/index.js │
194
+ │ │ │
195
+ │ │── syncDevFilesServer │
196
+ │ │ → Minecraft 目录 │
197
+ ```
198
+
199
+ 详见 [doc/dev/architecture.md](./doc/dev/architecture.md)。
200
+
201
+ ---
202
+
203
+ ## 文档
204
+
205
+ | 文档 | 说明 |
206
+ |------|------|
207
+ | [快速入门](./doc/user/quick-start.md) | 安装、创建、构建 |
208
+ | [物品教程](./doc/user/tutorials/item.md) | 基础物品 → 食物 → 盔甲 |
209
+ | [实体教程](./doc/user/tutorials/entity.md) | 创建实体 → 组件 → AI 行为 |
210
+ | [方块教程](./doc/user/tutorials/block.md) | 基础方块 → 旋转 → 作物 |
211
+ | [配方教程](./doc/user/tutorials/recipe.md) | 有序/无序/熔炉配方 |
212
+ | [物品 API](./doc/user/api/item.md) | ItemAPI、Item、ItemComponent |
213
+ | [实体 API](./doc/user/api/entity.md) | EntityAPI、EntityComponent、AI |
214
+ | [方块 API](./doc/user/api/block.md) | BlockAPI、BlockComponent |
215
+ | [配方 API](./doc/user/api/recipe.md) | RecipeAPI、配方类 |
216
+ | [生物群系 & 特征 API](./doc/user/api/biome.md) | BiomeAPI、FeatureAPI |
217
+ | [纹理 API](./doc/user/api/texture.md) | 纹理管理器 |
218
+ | [build.config](./doc/user/config/build-config.md) | 构建配置字段 |
219
+ | [常见问题](./doc/user/faq.md) | FAQ |
220
+ | [架构概览](./doc/dev/architecture.md) | 整体架构(源码开发者) |
221
+ | [Core 模块](./doc/dev/core.md) | 三层架构详解(源码开发者) |
222
+ | [CLI 模块](./doc/dev/cli.md) | 构建管道(源码开发者) |
223
+ | [OC 运行时](./doc/dev/oc.md) | ECS 框架(源码开发者) |
224
+
225
+ ---
226
+
227
+ ## 编译 Sapdon 框架
228
+
229
+ ```bash
230
+ git clone https://github.com/Meteage/sapdon.git
231
+ cd sapdon
232
+ npm install
233
+ npm run build
234
+ ```
235
+
236
+ 构建选项:
237
+ - `npm run build -- verbose` — 查看详细日志
238
+ - `npm run build -- keep` — 保留中间 `dist/` 目录
239
+
240
+ ---
241
+
242
+ ## 社区
243
+
244
+ - QQ 群:`810904181`
245
+ - [GitHub Issues](https://github.com/Meteage/sapdon/issues)