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.
- package/README.md +245 -121
- package/doc/dev/architecture.md +415 -0
- package/doc/dev/cli.md +467 -0
- package/doc/dev/core.md +717 -0
- package/doc/dev/oc.md +582 -0
- package/doc/user/api/biome.md +558 -0
- package/doc/user/api/block.md +945 -0
- package/doc/user/api/entity.md +685 -0
- package/doc/user/api/extra.md +231 -0
- package/doc/user/api/item.md +896 -0
- package/doc/user/api/recipe.md +427 -0
- package/doc/user/api/texture.md +181 -0
- package/doc/user/config/build-config.md +84 -0
- package/doc/user/config/mod-info.md +33 -0
- package/doc/user/faq.md +160 -0
- package/doc/user/quick-start.md +108 -0
- package/doc/user/tutorials/block.md +463 -0
- package/doc/user/tutorials/entity.md +356 -0
- package/doc/user/tutorials/item.md +449 -0
- package/doc/user/tutorials/recipe.md +278 -0
- package/package.json +4 -3
- package/prod/cli/index.js +1 -1
- package/prod/cli/start.js +1 -1458
- package/prod/core/index.d.ts +3290 -2150
- package/prod/core/index.js +1 -59015
- package/prod/core/package.json +7 -0
- package/prod/oc/index.d.ts +348 -108
- package/prod/oc/index.js +1 -1
- package/prod/oc/package.json +7 -0
- package/prod/utils/index.d.ts +20 -2
- 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,33 @@
|
|
|
1
|
+
# mod.info 配置参考
|
|
2
|
+
|
|
3
|
+
`mod.info` 位于项目根目录,定义模组的元数据,用于生成 manifest.json。
|
|
4
|
+
|
|
5
|
+
## 格式
|
|
6
|
+
|
|
7
|
+
```json
|
|
8
|
+
{
|
|
9
|
+
"name": "hello_sapdon",
|
|
10
|
+
"description": "我的第一个 Sapdon 模组",
|
|
11
|
+
"author": "YourName",
|
|
12
|
+
"version": "1.0.0",
|
|
13
|
+
"min_engine_version": "1.19.50"
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 字段说明
|
|
18
|
+
|
|
19
|
+
| 字段 | 说明 | 必填 |
|
|
20
|
+
|------|------|------|
|
|
21
|
+
| `name` | 模组名称,会被用作 `manifest.json` 中的名字和包目录名 | 是 |
|
|
22
|
+
| `description` | 模组描述 | 是 |
|
|
23
|
+
| `author` | 作者名 | 是 |
|
|
24
|
+
| `version` | 版本号,格式 `major.minor.patch` | 是 |
|
|
25
|
+
| `min_engine_version` | 最低游戏引擎版本 | 是 |
|
|
26
|
+
|
|
27
|
+
### version 格式
|
|
28
|
+
|
|
29
|
+
版本号必须是三位数字,用 `.` 分隔,如 `1.0.0`、`2.3.1`。
|
|
30
|
+
|
|
31
|
+
### min_engine_version
|
|
32
|
+
|
|
33
|
+
指定支持的最低 Minecraft 版本。例如 `1.19.50` 表示需要 1.19.50 及以上版本。
|
package/doc/user/faq.md
ADDED
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
# 常见问题 (FAQ)
|
|
2
|
+
|
|
3
|
+
## 1. 如何更新框架版本?
|
|
4
|
+
|
|
5
|
+
全局更新 sapdon CLI 和核心库:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm update -g sapdon
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
如果使用的是本地项目依赖,请在项目目录中执行:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm update sapdon
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
## 2. 如何添加依赖?
|
|
20
|
+
|
|
21
|
+
在项目根目录的 `build.config` 文件中配置 `dependencies` 字段:
|
|
22
|
+
|
|
23
|
+
```json
|
|
24
|
+
{
|
|
25
|
+
"dependencies": [
|
|
26
|
+
{
|
|
27
|
+
"module_name": "@minecraft/server",
|
|
28
|
+
"version": "1.8.0"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"module_name": "@minecraft/server-ui",
|
|
32
|
+
"version": "1.3.0"
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
构建时框架会自动将依赖注入到行为包的 `manifest.json` 中。
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## 3. 构建输出在哪?
|
|
43
|
+
|
|
44
|
+
执行 `sapdon build <项目名>` 后,构建产物会输出到项目根目录的 `dev/` 文件夹中。该目录包含完整的资源包和行为包结构,可直接用于开发测试。
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## 4. 如何同步到 Minecraft?
|
|
49
|
+
|
|
50
|
+
框架支持自动同步功能。构建完成后,产物会自动复制到 Minecraft 开发包目录(`com.mojang` 开发包文件夹)。前提是已正确配置开发包路径。
|
|
51
|
+
|
|
52
|
+
如果自动复制失败,可以手动将 `dev/` 目录下的资源包和行为包复制到 Minecraft 的开发包目录。
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
## 5. 如何切换 release/beta 版本?
|
|
57
|
+
|
|
58
|
+
在 `build.config` 中设置 `versionType` 字段:
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"versionType": "release"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
可选值:
|
|
67
|
+
|
|
68
|
+
| 值 | 说明 |
|
|
69
|
+
|-----|------|
|
|
70
|
+
| `"release"` | 正式版 |
|
|
71
|
+
| `"beta"` | beta 测试版 |
|
|
72
|
+
|
|
73
|
+
切换后会影响生成的 `manifest.json` 中的 `header.name` 后缀和 `min_engine_version` 等配置。
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## 6. 如何覆盖 Minecraft 路径?
|
|
78
|
+
|
|
79
|
+
通过设置环境变量来指定 Minecraft 开发包目录:
|
|
80
|
+
|
|
81
|
+
| 环境变量 | 说明 |
|
|
82
|
+
|----------|------|
|
|
83
|
+
| `MC_PATH` | 正式版 Minecraft 开发包路径 |
|
|
84
|
+
| `MC_BETA_PATH` | Beta 版 Minecraft 开发包路径 |
|
|
85
|
+
|
|
86
|
+
示例(Windows PowerShell):
|
|
87
|
+
|
|
88
|
+
```powershell
|
|
89
|
+
$env:MC_PATH = "C:\Users\<用户名>\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang"
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
设置后,构建完成的包会自动同步到指定路径。
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## 7. 构建报错 "tsc-alias not found"?
|
|
97
|
+
|
|
98
|
+
确保已安装项目依赖:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
npm install
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
如果使用了全局安装方式,可能需要重新安装:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
npm install -g sapdon
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
此错误通常是因为依赖未正确安装或 node_modules 目录不完整导致的。
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## 8. 为什么实体/物品 JSON 没有生成?
|
|
115
|
+
|
|
116
|
+
常见原因:
|
|
117
|
+
|
|
118
|
+
1. **未调用 `registry.submit()`** — 在完成所有注册后必须显式调用 `registry.submit()` 来提交数据。
|
|
119
|
+
```javascript
|
|
120
|
+
import { registry } from "@sapdon/core";
|
|
121
|
+
registry.submit();
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
2. **`dataList` 为空** — 检查注册的模块是否正确调用了注册 API,确认数据是否已推入 `dataList`。
|
|
125
|
+
|
|
126
|
+
3. **注册时机不对** — 确保 `registry.submit()` 在所有 API 注册调用之后执行。
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 9. 热更新不生效?
|
|
131
|
+
|
|
132
|
+
检查 `build.config` 中是否启用了热更新:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"useHMR": true
|
|
137
|
+
}
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
确保 `useHMR` 设置为 `true`。如果已启用但仍不生效,请检查:
|
|
141
|
+
|
|
142
|
+
- Minecraft 是否正在运行并加载了开发包
|
|
143
|
+
- 网络连接是否正常(HMR 通过 WebSocket 通信)
|
|
144
|
+
- 修改的文件是否在框架的监听范围内
|
|
145
|
+
|
|
146
|
+
---
|
|
147
|
+
|
|
148
|
+
## 10. 如何手动运行 sapdon lib?
|
|
149
|
+
|
|
150
|
+
在项目目录下直接执行:
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
sapdon lib
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
该命令会手动运行 Sapdon 的核心库逻辑,通常用于调试或在某些自动化流程中单独触发库的处理流程。
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
> 如有其他问题,请加入官方 QQ 群:`810904181`
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# 快速入门
|
|
2
|
+
|
|
3
|
+
## 环境要求
|
|
4
|
+
|
|
5
|
+
- Node.js 16+
|
|
6
|
+
- npm(随 Node.js 安装)
|
|
7
|
+
- Visual Studio Code(推荐)
|
|
8
|
+
|
|
9
|
+
## 安装 CLI
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g sapdon
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 创建项目
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
sapdon create hello_sapdon
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
按提示填写项目信息:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
✔ Project Name: hello_sapdon
|
|
25
|
+
✔ Project Description: 我的第一个模组
|
|
26
|
+
✔ Author Name: YourName
|
|
27
|
+
✔ Project Version: 1.0.0
|
|
28
|
+
✔ Minimum Engine Version: 1.19.50
|
|
29
|
+
✔ Language:(js/ts) ts
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## 项目结构
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
hello_sapdon/
|
|
36
|
+
├── main.ts # 构建入口——定义物品、实体等
|
|
37
|
+
├── build.config # 构建配置文件
|
|
38
|
+
├── mod.info # 模组元数据
|
|
39
|
+
├── tsconfig.json # TypeScript 配置
|
|
40
|
+
├── pack_icon.png # 模组图标
|
|
41
|
+
├── res/ # 资源文件(纹理、模型、音效)
|
|
42
|
+
└── scripts/
|
|
43
|
+
└── main.ts # Script API 入口(游戏内逻辑)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 编写代码
|
|
47
|
+
|
|
48
|
+
打开 `main.ts`,编写以下代码:
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { ItemAPI, registry, ItemComponent } from '@sapdon/core'
|
|
52
|
+
|
|
53
|
+
// 创建一个基础物品
|
|
54
|
+
const item = ItemAPI.createItem(
|
|
55
|
+
'hello_sapdon:my_item',
|
|
56
|
+
'items',
|
|
57
|
+
'masterball'
|
|
58
|
+
)
|
|
59
|
+
item.addComponent(ItemComponent.setDisplayName('我的物品'))
|
|
60
|
+
|
|
61
|
+
// 提交所有注册数据
|
|
62
|
+
registry.submit()
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## 构建项目
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
cd hello_sapdon
|
|
69
|
+
sapdon build .
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 构建模式
|
|
73
|
+
|
|
74
|
+
`build.config` 中的 `buildMode` 控制构建行为:
|
|
75
|
+
|
|
76
|
+
| 模式 | 行为 |
|
|
77
|
+
|------|------|
|
|
78
|
+
| `development`(默认) | 运行 `main.ts` → 根据代码生成所有 JSON → 打包脚本 → 同步到 Minecraft |
|
|
79
|
+
| `production` | 跳过 `main.ts`,直接同步已有 `dev/` 目录到 Minecraft(适合直接编辑 JSON 测试) |
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# 使用 sapdon pack 以 production 模式构建(不启动热更新)
|
|
83
|
+
sapdon pack
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## 构建输出
|
|
87
|
+
|
|
88
|
+
构建完成后,`dev/` 目录下生成:
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
dev/
|
|
92
|
+
├── hello_sapdon_BP/ # 行为包
|
|
93
|
+
│ ├── manifest.json
|
|
94
|
+
│ ├── items/my_item.json
|
|
95
|
+
│ └── scripts/index.js
|
|
96
|
+
└── hello_sapdon_RP/ # 资源包
|
|
97
|
+
├── manifest.json
|
|
98
|
+
└── textures/item_texture.json
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
同时自动同步到 Minecraft 开发包目录,启动游戏即可看到你的模组。
|
|
102
|
+
|
|
103
|
+
## 下一步
|
|
104
|
+
|
|
105
|
+
- [物品教程](./tutorials/item.md) — 学习创建各类物品
|
|
106
|
+
- [实体教程](./tutorials/entity.md) — 学习创建实体
|
|
107
|
+
- [方块教程](./tutorials/block.md) — 学习创建方块
|
|
108
|
+
- [API 参考](./api/item.md) — 完整的 API 文档
|