refactor: unify build scripts to Python 3

This commit is contained in:
FlipWind
2026-08-09 00:53:55 +08:00
parent 7c76365942
commit 9b171ed169
13 changed files with 173 additions and 466 deletions
+22 -22
View File
@@ -2,50 +2,50 @@
## 用途
`sync-items.ps1` 会在构建和开发前自动保证物品贴图齐全:
`scripts/` 下全部为 Python 3 脚本(无其他语言):
- `sync-items.py` —— 物品贴图自动同步(核心);
- `build.py` —— 同步贴图 + hugo 构建;
- `dev.py` —— 同步贴图 + hugo 开发服务器。
同步流程:
1. 下载 [sfcraft 仓库](https://github.com/saltedfishclub/sfcraft/tree/rev/26.2/src/main/resources/assets/sfcraft/textures/item) 的
全部自定义贴图到 `assets/items/`;
2. 扫描 `content/` 中所有 `crafting` 组件用到的物品 id;
3. 本地缺失的原版物品从 Minecraft wiki 自动获取(自动挑选最新版本渲染);
2. 扫描 `content/` 中所有 `crafting` 组件用到的物品 id(支持九格直填与 pattern 别名两种写法);
3. 本地缺失的原版物品从 Minecraft wiki 自动获取自动挑选最新版本渲染;
4. 有任何物品无法找到时, 打印缺失清单并以非零码退出, 阻断构建 / 开发启动。
## 使用
```powershell
.\scripts\build.ps1 # 同步贴图 + hugo 构建
.\scripts\dev.ps1 # 同步贴图 + hugo server
.\scripts\dev.ps1 -NoSync # 仅启动开发服务器, 不重新同步
```
若 PowerShell 执行策略阻止脚本, 请用:
Windows:
```powershell
powershell -ExecutionPolicy Bypass -File scripts\dev.ps1
python scripts\build.py # 同步贴图 + hugo 构建
python scripts\dev.py # 同步贴图 + hugo server
python scripts\dev.py --no-sync # 仅启动开发服务器, 不重新同步
python scripts\sync-items.py -f # 仅同步贴图(强制刷新 sfcraft 贴图)
```
脚本通过 `$env:HUGO` 或 PATH 查找 hugo, 找不到时也会探测 winget 安装位置。
## Linux / macOS 使用
Unix 环境下使用同名的 bash 脚本(同步逻辑为 Python 3 实现, 需要 `python3``hugo`):
Linux / macOS:
```bash
./scripts/build.sh # 同步贴图 + hugo 构建
./scripts/dev.sh # 同步贴图 + hugo server
./scripts/dev.sh -NoSync # 仅启动开发服务器
python3 scripts/build.py
python3 scripts/dev.py
python3 scripts/dev.py --no-sync
```
也可以使用 Makefile(Windows / Unix 通用, 自动选择对应脚本):
也可以用 MakefileWindows / Unix 通用:
```bash
make build # 同步贴图 + hugo 构建
make dev # 同步贴图 + hugo server
make sync # 仅同步贴图
make dev HUGO_ARGS="--port 1314"
make PY=python build # 指定 Python 解释器
```
首次使用前请确认脚本有执行权限: `chmod +x scripts/*.sh`
脚本按 `$HUGO` 环境变量、PATH、winget 安装目录的顺序查找 hugo
## 组件写法
@@ -62,7 +62,7 @@ make dev HUGO_ARGS="--port 1314"
- 原版贴图: 只在本地缺失时下载, **不会覆盖**手动放入 `assets/items/` 的贴图;
- 物品 id 即 `assets/items/` 下的文件名(不含 `.png`);
- wiki 命名规则: `<英文名>_JE<版本>[_BE<版本>].png`, 特殊命名(如 `TNT``Flint_and_Steel`)
`sync-items.ps1` / `sync-items.py` 中的变体生成与别名表处理。
`sync-items.py` 中的变体生成与别名表处理。
## 网络要求