@bepack/cli 0.1.0-beta.1 → 0.1.0-beta.2
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 +71 -10
- package/README.zh-CN.md +71 -10
- package/dist/cli.js +5 -5
- package/dist/index.d.ts +125 -5
- package/dist/index.js +1 -1
- package/package.json +2 -2
- package/reference.md +221 -13
package/reference.md
CHANGED
|
@@ -139,6 +139,7 @@ type UserConfig = {
|
|
|
139
139
|
*/
|
|
140
140
|
define?: Record<string, string>;
|
|
141
141
|
tsconfig?: string;
|
|
142
|
+
/** 打包前是否运行 tsc 类型检查。默认 true(即默认会跑)。 */
|
|
142
143
|
typecheck?: boolean;
|
|
143
144
|
preserveModules?: boolean;
|
|
144
145
|
external?: (string | RegExp)[];
|
|
@@ -151,10 +152,16 @@ type UserConfig = {
|
|
|
151
152
|
};
|
|
152
153
|
/** 编译脚本输出目录,相对于 BP root。默认 "scripts"。 */
|
|
153
154
|
scriptOutputDir?: string;
|
|
155
|
+
/**
|
|
156
|
+
* 额外的 Rolldown 选项(对象),或自定义函数 (options, context) => options。
|
|
157
|
+
* 在 BePack 生成的选项之上增量合并;input 与输出位置字段由 BePack 管理。
|
|
158
|
+
*/
|
|
159
|
+
rolldown?: RolldownOptions | RolldownCustomizeFunction;
|
|
160
|
+
/** Rolldown 配置文件路径(相对项目根或绝对路径),支持 .ts/.mts/.js/.mjs。 */
|
|
161
|
+
rolldownConfig?: string;
|
|
154
162
|
};
|
|
155
163
|
/** 所有 BP 依赖都在此声明——包括清单依赖和纯代码依赖。 */
|
|
156
164
|
dependencies?: Record<string, "stable" | "beta" | "preview" | string>;
|
|
157
|
-
achievement?: boolean;
|
|
158
165
|
/**
|
|
159
166
|
* manifest 生成策略。
|
|
160
167
|
* - `merge: "preserve"`(默认):增量合并,保留用户手写字段。
|
|
@@ -214,6 +221,11 @@ type UserConfig = {
|
|
|
214
221
|
name?: string | { bp?: string; rp?: string };
|
|
215
222
|
}
|
|
216
223
|
>;
|
|
224
|
+
/**
|
|
225
|
+
* 复制到开发目录时也生成 __brarchive 归档,方便实机验证"打包后的形态"。
|
|
226
|
+
* 默认关闭;要求与 pack.optimize 相同的 min_engine_version >= 1.26.40。
|
|
227
|
+
*/
|
|
228
|
+
optimize?: boolean | PackOptimizeOptions;
|
|
217
229
|
};
|
|
218
230
|
|
|
219
231
|
dev?: {
|
|
@@ -227,6 +239,24 @@ type UserConfig = {
|
|
|
227
239
|
pack?: {
|
|
228
240
|
name?: string;
|
|
229
241
|
outDir?: string;
|
|
242
|
+
/**
|
|
243
|
+
* 把包内散文件打成 __brarchive 归档(Minecraft 官方 pack optimizer 的行为)。
|
|
244
|
+
* 默认关闭。开启后 BePack 会往产物 manifest 写入
|
|
245
|
+
* header.pack_optimization_version = "0.1.0"(这是让引擎读归档的开关)。
|
|
246
|
+
* 只影响 pack 产物;复制到开发目录默认不优化,可用 copy.optimize 开启。
|
|
247
|
+
*/
|
|
248
|
+
optimize?: boolean | {
|
|
249
|
+
/** 额外保留"散文件 + 归档存根"的目录(默认按包类型内置列表)。传 false 表示全部只进归档。 */
|
|
250
|
+
keepLoose?: string[] | false;
|
|
251
|
+
/** 这些目录完全不归档,只留散文件。默认无。 */
|
|
252
|
+
exclude?: string[];
|
|
253
|
+
/** 是否压缩 JSON 条目。默认 true。 */
|
|
254
|
+
minifyJson?: boolean;
|
|
255
|
+
/** 产物 manifest 里 header.pack_optimization_version 的取值。默认 "0.1.0"。 */
|
|
256
|
+
packOptimizationVersion?: string;
|
|
257
|
+
/** 关闭 min_engine_version < 1.26.40 时的兼容性警告。默认 false(会警告但照常输出)。 */
|
|
258
|
+
allowUnsupportedTarget?: boolean;
|
|
259
|
+
};
|
|
230
260
|
};
|
|
231
261
|
};
|
|
232
262
|
```
|
|
@@ -453,7 +483,6 @@ BP 清单受控字段:
|
|
|
453
483
|
- 脚本模块
|
|
454
484
|
- BePack 管理的 `@minecraft/*` 依赖
|
|
455
485
|
- BP/RP 相互依赖
|
|
456
|
-
- `metadata.product_type`(仅在 `achievement: true` 时)
|
|
457
486
|
|
|
458
487
|
RP 清单受控字段:
|
|
459
488
|
|
|
@@ -472,12 +501,6 @@ RP 清单受控字段:
|
|
|
472
501
|
|
|
473
502
|
当同时配置了 BP 和 RP 时,BePack 会维护它们 header UUID 之间的相互依赖。
|
|
474
503
|
|
|
475
|
-
成就元数据:
|
|
476
|
-
|
|
477
|
-
- `packs.bp.achievement: true` 添加 `metadata.product_type = "addon"`。
|
|
478
|
-
- 每个受管理的 Script API 依赖必须使用 `stable` 说明符。
|
|
479
|
-
- 如果在启用成就时使用了 `beta` 或 `preview` 依赖,BePack 会抛出 `ACHIEVEMENT_REQUIRES_STABLE_API`。
|
|
480
|
-
|
|
481
504
|
### manifest 生成策略
|
|
482
505
|
|
|
483
506
|
`packs.bp.manifest` / `packs.rp.manifest` 控制清单如何与已有文件合并:
|
|
@@ -520,23 +543,28 @@ client 侧保持默认 `preserve`(尊重手写 manifest),server 侧 `clean
|
|
|
520
543
|
```txt
|
|
521
544
|
清单修补
|
|
522
545
|
hooks.beforeBuild
|
|
523
|
-
|
|
546
|
+
类型检查(tsc --noEmit,默认开启)
|
|
524
547
|
Rolldown 构建
|
|
525
548
|
hooks.afterBuild
|
|
526
549
|
可选复制
|
|
527
550
|
可选打包
|
|
528
551
|
```
|
|
529
552
|
|
|
553
|
+
> **默认会运行 TypeScript 类型检查。** 只要配置了 `packs.bp.compile`,`bepack build` 与 `bepack dev` 都会在 Rolldown 打包**之前**执行 `tsc --noEmit`;检查失败会以 `TYPECHECK_FAILED` 终止本次构建,不会产出残缺脚本。跳过方式:CLI `--skip-typecheck`,或 `packs.bp.compile.typecheck: false`。注意类型检查与打包是两件独立的事——自定义 Rolldown 选项、替换 `rolldown` 配置都不会关闭它,要关只能显式配置。
|
|
554
|
+
|
|
530
555
|
CLI 选项:
|
|
531
556
|
|
|
532
557
|
- `--mode <value>`:执行模式,透传给 Hook 上下文(`HookContext.mode`)。不设则为 `undefined`。Hook 内自行判断是否执行特定逻辑。
|
|
558
|
+
- `--rolldown-config <path>`:临时指定 Rolldown 配置文件,覆盖 `packs.bp.compile.rolldownConfig`(`bepack dev` 同样支持)。
|
|
559
|
+
- `--optimize`:与 `--pack` / `--copy` 一起使用时,把产物(或开发目录)优化为 `__brarchive/` 归档(`--no-optimize` 可覆盖配置)。详见《打包》一节的 Pack 优化。
|
|
533
560
|
|
|
534
561
|
类型检查行为:
|
|
535
562
|
|
|
536
|
-
-
|
|
563
|
+
- **默认:系统 `tsc --noEmit`(`packs.bp.compile.typecheck` 默认为 `true`)。** 只有显式设置 `typecheck: false` 或传 `--skip-typecheck` 才会跳过。
|
|
537
564
|
- `build.useNpx: true` 或 `--use-npx`:`npx tsc --noEmit`。
|
|
538
565
|
- `packs.bp.compile.cache`:增量编译缓存配置。`cache.dev`(默认 `true`)控制 dev 模式;`cache.build`(默认 `false`)控制 build 模式。`cache.file` 指定 `.tsbuildinfo` 路径。`bepack build --cache` / `--no-cache` 可覆盖 build 模式。`dev` 命令默认启用缓存。
|
|
539
566
|
- 缺少 `tsconfig.json` 会提前失败,返回 `TYPECHECK_FAILED`。
|
|
567
|
+
- 类型检查在 `hooks.beforeBuild` 之后、Rolldown 之前运行;`--dry-run` 会跳过它。
|
|
540
568
|
|
|
541
569
|
Rolldown 行为:
|
|
542
570
|
|
|
@@ -552,7 +580,7 @@ Rolldown 行为:
|
|
|
552
580
|
|
|
553
581
|
> 注意:构建命令(`build` / `dev`)不再要求 BP 必须存在。如果项目只有 RP 或 BP 没有配置 `compile`,则跳过编译流程,只执行 manifest 修补和可选的文件复制/打包。
|
|
554
582
|
|
|
555
|
-
`
|
|
583
|
+
`manifest: true` 的受管理包(例如 `@minecraft/server`、`@minecraft/server-ui`、`@minecraft/server-net`)**始终**作为 external 写入 rolldown,不会被内联打包;`manifest: false` 的包(例如 `@minecraft/vanilla-data`)可以被打包进产物。需要额外的 external 时,通过 `packs.bp.compile.external` 追加字符串或正则。
|
|
556
584
|
|
|
557
585
|
`build.timing: true` 或 `--timing` 可在构建时显示各步骤的耗时明细,便于排查性能瓶颈:
|
|
558
586
|
|
|
@@ -564,6 +592,95 @@ timing rolldown 45 ms
|
|
|
564
592
|
|
|
565
593
|
`--timing` 同样支持 `bepack dev` 命令。
|
|
566
594
|
|
|
595
|
+
## 自定义 Rolldown 配置
|
|
596
|
+
|
|
597
|
+
`packs.bp.compile` 覆盖了常见场景,Rolldown 的完整能力通过三个入口开放:
|
|
598
|
+
|
|
599
|
+
- `packs.bp.compile.rolldown`:内联选项对象,或自定义函数;
|
|
600
|
+
- `packs.bp.compile.rolldownConfig`:Rolldown 配置文件路径(相对项目根或绝对路径);
|
|
601
|
+
- CLI:`bepack build --rolldown-config <path>` / `bepack dev --rolldown-config <path>`,临时替换配置文件。
|
|
602
|
+
|
|
603
|
+
> 自定义 Rolldown 配置**不会**关闭类型检查:`bepack build` / `bepack dev` 依然会先执行 `tsc --noEmit`(默认开启,详见《构建》一节)。
|
|
604
|
+
|
|
605
|
+
### 对象形式
|
|
606
|
+
|
|
607
|
+
```ts
|
|
608
|
+
packs: {
|
|
609
|
+
bp: {
|
|
610
|
+
compile: {
|
|
611
|
+
entry: "src/main.ts",
|
|
612
|
+
rolldown: {
|
|
613
|
+
resolve: { alias: { "@lib": "./src/lib" } },
|
|
614
|
+
treeshake: { moduleSideEffects: false },
|
|
615
|
+
output: { sourcemap: true },
|
|
616
|
+
},
|
|
617
|
+
},
|
|
618
|
+
},
|
|
619
|
+
}
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
### 函数形式
|
|
623
|
+
|
|
624
|
+
函数接收当前已合并的选项与上下文,返回值再按同样的规则合并一次;返回空则不做改动:
|
|
625
|
+
|
|
626
|
+
```ts
|
|
627
|
+
packs: {
|
|
628
|
+
bp: {
|
|
629
|
+
compile: {
|
|
630
|
+
rolldown(options, context) {
|
|
631
|
+
if (context.command === "dev") return { output: { sourcemap: true } };
|
|
632
|
+
return {};
|
|
633
|
+
},
|
|
634
|
+
},
|
|
635
|
+
},
|
|
636
|
+
}
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
上下文 `RolldownCustomizeContext` 字段:`command`(`"build"` / `"dev"`)、`mode`(CLI `--mode`)、`target`、`entry`、`outDir`、`outFile`、`preserveModules`,路径均为绝对路径。
|
|
640
|
+
|
|
641
|
+
### 配置文件
|
|
642
|
+
|
|
643
|
+
配置文件由 Rolldown 自带的加载器读取,因此 `.ts` / `.mts` / `.js` / `.mjs` 都支持,默认导出可以是选项对象、单元素数组或函数(与 `rolldown.config.ts` 用法一致):
|
|
644
|
+
|
|
645
|
+
```ts
|
|
646
|
+
// rolldown.bp.config.ts
|
|
647
|
+
import { defineConfig } from "rolldown";
|
|
648
|
+
|
|
649
|
+
export default defineConfig({
|
|
650
|
+
resolve: { alias: { "@lib": "./src/lib" } },
|
|
651
|
+
});
|
|
652
|
+
```
|
|
653
|
+
|
|
654
|
+
- 只支持**单个**配置:导出多元素数组会报 `CONFIG_INVALID`(BePack 每次只构建一个 BP)。
|
|
655
|
+
- `.ts` 配置文件会先被 Rolldown 打包成 `rolldown.config.<hash>.js` 再导入,随后删除;`dev` watcher 已忽略该临时文件。
|
|
656
|
+
- 优先级:`--rolldown-config` > `compile.rolldownConfig` > `compile.rolldown`。
|
|
657
|
+
|
|
658
|
+
### 合并规则
|
|
659
|
+
|
|
660
|
+
BePack 先生成基础选项,再把自定义选项合并上去:
|
|
661
|
+
|
|
662
|
+
| 字段 | 规则 |
|
|
663
|
+
| --- | --- |
|
|
664
|
+
| `plugins` | 追加在 BePack 插件(replace / define)之后 |
|
|
665
|
+
| `external` | 取并集(字符串去重,`RegExp` 原样保留) |
|
|
666
|
+
| `transform`、`resolve`、`experimental`、`checks`、`optimization`、`watch`、`moduleTypes`、`output` | 一层深合并;其中 `transform.define` 按 key 合并,不会清掉 `compile.define` |
|
|
667
|
+
| 其它字段 | 用户值直接覆盖 |
|
|
668
|
+
|
|
669
|
+
函数返回值按同一规则合并——因此只能追加,不能移除 BePack 的插件或受管理的外部依赖。
|
|
670
|
+
|
|
671
|
+
### 受保护字段
|
|
672
|
+
|
|
673
|
+
以下字段由 BePack 管理,配成其它值会报 `CONFIG_INVALID`(manifest 的 script entry、复制、打包、dev 监听都依赖它们):
|
|
674
|
+
|
|
675
|
+
| 字段 | 替代方式 |
|
|
676
|
+
| --- | --- |
|
|
677
|
+
| `input` | `packs.bp.compile.entry` |
|
|
678
|
+
| `output.file` / `output.dir` | `packs.bp.compile.scriptOutputDir` |
|
|
679
|
+
| `output.preserveModules` / `output.preserveModulesRoot` | `packs.bp.compile.preserveModules` |
|
|
680
|
+
| `output.entryFileNames` | manifest script entry 假定"每个源模块一个 `.js`" |
|
|
681
|
+
| `output.format` | Script API 只支持 ESM |
|
|
682
|
+
| `output` 数组(多输出) | 不支持,BePack 只写一个输出 |
|
|
683
|
+
|
|
567
684
|
## 构建注入与条件编译
|
|
568
685
|
|
|
569
686
|
BePack 提供两种编译期注入机制,**建议按用途选择**:
|
|
@@ -658,6 +775,7 @@ BePack 默认 `preserveModules: true`,Rolldown 仍会做 tree-shaking:
|
|
|
658
775
|
- 在监视前先执行一次初始构建(manifest + 若有 compile 则编译)。
|
|
659
776
|
- 支持 `--skip-typecheck` 跳过类型检查(与 `build` 命令一致)。
|
|
660
777
|
- 支持 `--mode <value>`,用法与 `build` 命令相同,透传给 Hook 上下文。初始构建和后续增量重建均会传入该值。
|
|
778
|
+
- 支持 `--optimize`:每次自动复制都生成 `__brarchive/` 归档(等价于 `copy.optimize: true`,`--no-optimize` 可覆盖配置)。
|
|
661
779
|
- 默认监视的路径:
|
|
662
780
|
- `packs.bp.compile.entry` 所在目录(仅在 BP 配置了 compile 时,TypeScript 源码变化 → 触发编译)
|
|
663
781
|
- BP 的默认 include 列表 + `packs.bp.include` 中的文件/文件夹(不含 `scripts` 和 `manifest.json`)
|
|
@@ -691,6 +809,12 @@ export default defineConfig({
|
|
|
691
809
|
|
|
692
810
|
**如果没有配置任何复制目标,`bepack copy` 会报错。** 复制前会验证目标目录是否存在,不存在则报错。
|
|
693
811
|
|
|
812
|
+
CLI 选项:
|
|
813
|
+
|
|
814
|
+
- `--target <target>`:指定复制目标。
|
|
815
|
+
- `--all`:复制到所有目标。
|
|
816
|
+
- `--optimize`:复制时生成 `__brarchive/` 归档(`--no-optimize` 覆盖配置),详见下文《复制时也做 Pack 优化》。
|
|
817
|
+
|
|
694
818
|
### 内置目标
|
|
695
819
|
|
|
696
820
|
- `win`
|
|
@@ -785,7 +909,7 @@ copy: {
|
|
|
785
909
|
```
|
|
786
910
|
scripts manifest.json animation_controllers animations biomes
|
|
787
911
|
blocks entities functions items loot_tables pack_icon.png
|
|
788
|
-
recipes spawn_rules structures texts trading
|
|
912
|
+
recipes shapes spawn_rules structures texts trading
|
|
789
913
|
feature_rules features worldgen
|
|
790
914
|
```
|
|
791
915
|
|
|
@@ -833,6 +957,25 @@ dev: {
|
|
|
833
957
|
|
|
834
958
|
`build.copy` 和 `dev.copy` 默认为 `false`(不复制)。`true` 表示使用 `copy.defaultTarget`,字符串表示使用指定目标。
|
|
835
959
|
|
|
960
|
+
### 复制时也做 Pack 优化
|
|
961
|
+
|
|
962
|
+
复制到开发目录默认是"散文件"形态,与发布产物(可能带 `__brarchive/`)不同。为了让开发者能在实机里提前验证**打包后的形态**,可以单独开启 `copy.optimize`:
|
|
963
|
+
|
|
964
|
+
```ts
|
|
965
|
+
copy: {
|
|
966
|
+
defaultTarget: "minecraft",
|
|
967
|
+
optimize: true, // 或与 pack.optimize 相同的选项对象
|
|
968
|
+
},
|
|
969
|
+
```
|
|
970
|
+
|
|
971
|
+
```bash
|
|
972
|
+
bepack copy --optimize # 临时开启(--no-optimize 覆盖配置)
|
|
973
|
+
bepack build --copy --optimize # build 的 --optimize 同时作用于 pack 与 copy
|
|
974
|
+
bepack dev --optimize # dev 的每次自动复制也生成归档
|
|
975
|
+
```
|
|
976
|
+
|
|
977
|
+
行为与 `pack.optimize` 完全一致(同一套镜像规则、排除表、JSON 压缩、1.26.40 门槛),区别只是输出到开发目录而不是 `.mcpack`。默认不保留散文件,因此开发目录里的形态与发布产物一致;需要同时保留散文件时用 `optimize: { keepLooseFiles: true }`。
|
|
978
|
+
|
|
836
979
|
## 打包
|
|
837
980
|
|
|
838
981
|
`bepack pack` 创建:
|
|
@@ -860,6 +1003,72 @@ pack: {
|
|
|
860
1003
|
|
|
861
1004
|
打包输入配置必须显式指定,且输入路径必须存在。这可以防止意外打包猜测的默认目录。
|
|
862
1005
|
|
|
1006
|
+
### Pack 优化(`__brarchive`)
|
|
1007
|
+
|
|
1008
|
+
Minecraft 1.26.40 起官方提供 **Pack Optimization**:把包里的散文件装进 `__brarchive/` 归档,并对 JSON 做压缩。BePack 可以在打包时做同样的事:
|
|
1009
|
+
|
|
1010
|
+
```ts
|
|
1011
|
+
pack: {
|
|
1012
|
+
outDir: "dist",
|
|
1013
|
+
optimize: true, // 或传入下面的选项对象
|
|
1014
|
+
}
|
|
1015
|
+
```
|
|
1016
|
+
|
|
1017
|
+
```bash
|
|
1018
|
+
bepack pack --optimize # 临时开启(--no-optimize 可覆盖配置里的开启状态)
|
|
1019
|
+
bepack build --pack --optimize # 构建后打包并优化
|
|
1020
|
+
```
|
|
1021
|
+
|
|
1022
|
+
产物结构(只影响 `.mcpack` / `.mcaddon` 内部,磁盘上的包目录**不会被修改**):
|
|
1023
|
+
|
|
1024
|
+
```txt
|
|
1025
|
+
manifest.json # 包根散文件保持原样,并写入 pack_optimization_version
|
|
1026
|
+
functions/diag_fn.mcfunction # 按路径引用的目录:散文件保留(归档里只登记文件名)
|
|
1027
|
+
texts/en_US.lang
|
|
1028
|
+
__brarchive/entities.brarchive # 注册表型目录:完整内容进归档,散文件删除
|
|
1029
|
+
__brarchive/entities/sub.brarchive # 每个目录一个归档,镜像目录树
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
规则:
|
|
1033
|
+
|
|
1034
|
+
- **开关是产物 `manifest.json` 里的 `header.pack_optimization_version`**,BePack 默认写入 `"0.1.0"`。只有这个字段能让引擎从 `__brarchive/` 读取注册表;写成游戏版本号(如 `"1.26.40"`)无效。它只写进产物,磁盘上的 `manifest.json` 不受影响。
|
|
1035
|
+
- `header.min_engine_version` **不参与判断**(原版 `vanilla` 行为包是 `[1,13,0]` 且带归档)。低于 1.26.40 时只是打印一条警告:旧客户端没有归档支持,只能看到保留散文件的那部分。
|
|
1036
|
+
- 每个目录(递归)生成 `<包根>/__brarchive/<相对目录>.brarchive`,条目名是**裸文件名**(如 `entities.brarchive` 里是 `zombie.json`),按名称排序;文件名最多 247 字节。
|
|
1037
|
+
- 包根散文件(`manifest.json`、`pack_icon.png` 等)不归档;已存在的 `__brarchive/` 内容原样保留。
|
|
1038
|
+
- **按路径引用**的目录会把散文件留在原处,归档里只写一条 **0 字节存根**(登记文件名)——这是原版 `structures/**`、`sounds/**`、`texts` 的做法。默认列表:
|
|
1039
|
+
- 行为包:`functions`、`loot_tables`、`structures`、`texts`
|
|
1040
|
+
- 资源包:`font`、`materials`、`sounds`、`texts`、`textures`
|
|
1041
|
+
- 其余目录(`entities`、`items`、`blocks`、`recipes`、`shapes`、`spawn_rules`、`trading`、`models`、`ui`、`particles`、`render_controllers` 等)归档**完整内容并删除散文件**。
|
|
1042
|
+
- JSON 条目会被压缩(`{ "a": 1 }` → `{"a":1}`),非 JSON(`.lang`、二进制、`MCB`)原样存储;JSON 解析失败时也原样存储,不会损坏文件。
|
|
1043
|
+
|
|
1044
|
+
想调整时用这些选项:
|
|
1045
|
+
|
|
1046
|
+
| 选项 | 作用 |
|
|
1047
|
+
| --- | --- |
|
|
1048
|
+
| `keepLoose: ["blocks"]` | 额外把某些目录改成"散文件 + 存根" |
|
|
1049
|
+
| `keepLoose: false` | 不保留任何散文件(产物最小,全部只进归档) |
|
|
1050
|
+
| `exclude: ["blocks"]` | 这些目录完全不归档,只留散文件 |
|
|
1051
|
+
| `keepLooseFiles: true` | 归档 + 完整散文件都写(体积最大,兼容 1.26.40 之前的旧客户端) |
|
|
1052
|
+
| `minifyJson: false` | 不压缩 JSON 条目(排查问题用) |
|
|
1053
|
+
| `packOptimizationVersion: "0.2.0"` | 改用其它优化版本号 |
|
|
1054
|
+
|
|
1055
|
+
**实机验证(1.26.40 客户端,内置 `@minecraft/server` 探针脚本)**:
|
|
1056
|
+
|
|
1057
|
+
| 内容 | 存放方式 | 结果 |
|
|
1058
|
+
| --- | --- | --- |
|
|
1059
|
+
| `blocks/`、`items/`、`entities/`、`recipes/` | 归档完整内容、删除散文件 | ✅ `BlockTypes/ItemTypes/EntityTypes.get()` 与 `spawnEntity()` 全部通过;配方也从归档正常解析 |
|
|
1060
|
+
| `functions/`、`loot_tables/` | 散文件 + 归档存根 | ✅ `/function`、`/loot spawn … loot …` 均返回 success=1 |
|
|
1061
|
+
| `structures/` | 散文件 + 归档存根 | ⚠️ `/place structure` 在本机返回 success=0(原版对照名称带 `/` 需要加引号,未能取得正向对照),建议自行用结构方块验证 |
|
|
1062
|
+
| `texts/` | 散文件 + 归档存根 | ✅ 散文件 `.lang` 正常(中文客户端需自带 `zh_CN.lang`,否则显示 key) |
|
|
1063
|
+
|
|
1064
|
+
> **`scripts/` 默认也会归档**(官方 `behavior_packs/editor` 就是这样,且实测脚本模块可从归档加载);上面的探针为了确保一定输出,用的是 `keepLoose: ["scripts"]`。如果你的脚本在归档后不执行,加 `keepLoose: ["scripts"]` 即可。
|
|
1065
|
+
>
|
|
1066
|
+
> **注意模块 UUID 不能重复**:手写 `manifest.json` 里的 `data`/`resources` 模块 UUID 必须和 `packs.bp.moduleUuid`(脚本模块)不同,否则引擎会丢掉脚本模块且没有明显报错。
|
|
1067
|
+
|
|
1068
|
+
> **兼容性**:能读 `__brarchive/` 的客户端才有完整内容;1.26.40 之前的客户端只能看到"保留散文件"的目录。设 `allowUnsupportedTarget: true` 可关闭 min_engine_version 警告。
|
|
1069
|
+
>
|
|
1070
|
+
> 同一套选项也适用于复制:见《复制》一节的[复制时也做 Pack 优化](#复制时也做-pack-优化)。
|
|
1071
|
+
|
|
863
1072
|
## 钩子
|
|
864
1073
|
|
|
865
1074
|
支持的钩子:
|
|
@@ -958,7 +1167,6 @@ UNSUPPORTED_DEPENDENCY
|
|
|
958
1167
|
DEPENDENCY_VERSION_INVALID
|
|
959
1168
|
DEPENDENCY_REQUIRES_INSTALL
|
|
960
1169
|
SAPI_VERSION_NOT_FOUND
|
|
961
|
-
ACHIEVEMENT_REQUIRES_STABLE_API
|
|
962
1170
|
TYPECHECK_FAILED
|
|
963
1171
|
BUILD_FAILED
|
|
964
1172
|
COPY_TARGET_NOT_FOUND
|