|
3 | 3 | ## 注意事项 |
4 | 4 | - 文件地址中,目录分隔符**一律使用正斜杠**! |
5 | 5 | - 地址相关 |
6 | | - - 下述说明中,**完整地址**永远指从**仓库根目录**算起的地址,例如对根目录下的`CONTRIBUTING.md`应为`CONTRIBUTING.md`,1.12版本资源包的`pack.png`应为`projects/1.12.2/pack.png`。 |
7 | | - - 下述说明中,**相对地址**永远指从**特定命名空间的文件夹**算起的地址,例如对仓库中的`projects/1.18/assets/minecraft/minecraft/font/default.json`应为`font/default.json`。 |
8 | | - - 下述说明中,**目标地址**永远指**分发的资源包中**,该文件应当被放置的位置,例如上一条中提及的文件应为`assets/minecraft/font/default.json`。 |
| 6 | + - 下述说明中,**完整地址**永远指从**仓库根目录**算起的地址,例如对根目录下的`CONTRIBUTING.md`,应为`CONTRIBUTING.md`;对1.12版本资源包的`pack.png`,应为`projects/1.12.2/pack.png`。 |
| 7 | + - 下述说明中,**相对地址**永远指从**特定命名空间的文件夹**算起的地址,例如对仓库中的`projects/1.18/assets/minecraft/minecraft/font/default.json`,应为`font/default.json`。 |
| 8 | + - 下述说明中,**目标地址**永远指**分发的资源包中**,该文件应当被放置的位置,例如对上一条中提及的文件,应为`assets/minecraft/font/default.json`。 |
9 | 9 | - 文件相关 |
10 | 10 | - 下述说明中,**语言文件**永远指可以被打包器解读为**映射表**的文件。这包括了所有 **`lang/`下的`.lang`和`.json`文件**。 |
11 | 11 | - 下述说明中,**文本文件**永远指含有**文本内容**,但**不属于语言文件**的文件。这包括了非语言文件的`.txt`、`.md`、`.json`文件。 |
12 | 12 | - 下述说明中,**非文本文件**永远指**不属于以上两类**的文件,如图片或其他二进制文件。 |
13 | 13 | - 本次打包器更新以后,对于**非文本文件**无需特殊处理:打包器会按照文件拓展名自动识别文件类型。 |
14 | 14 |
|
15 | | -<!-- 下面的部分内容是从我的fork处,尚未完工(短期内也不会完工)的wiki摘录+修改而来的。有些地方用XML注释格式去掉了部分内容,但是我没有完全删掉,因为还打算复制回去的。 ---> |
| 15 | +<!-- 下面的部分内容是从我的fork处,尚未完工(短期内也不会完工)的wiki摘录+修改而来的。有部分地方用XML注释格式去掉了部分内容,但是我没有完全删掉,因为还打算复制回去的。 ---> |
16 | 16 |
|
17 | 17 | ## 配置文件 |
18 | 18 |
|
|
24 | 24 |
|
25 | 25 | 目前而言,所有配置文件都需要填写全部项——无关项可以填写空集合,但不能不填,更不能写null。有计划在将来优化这一行为。 |
26 | 26 |
|
| 27 | +#### 全局配置文件 |
| 28 | + |
27 | 29 | **全局**配置文件`./config/packer/<version>.json`的格式如下: |
28 | 30 |
|
29 | 31 | - 根标签 object |
|
36 | 38 | - `exclusionNamespaces` list<br>被打包器排除的 **[namespace]** | **(命名空间)**。<br>暂时闲置,以待后续需求。 |
37 | 39 | - string<br>排除的命名空间。<!--以[S部分](./S.-本仓库的结构向导)中定义的 **[namespace]** | **(命名空间)**为准。--> |
38 | 40 | - `floating` object<br>打包流程中的*可变配置*,可能被文件结构中的**局域配置文件**改写。包含的内容都是**低于**命名空间层级的,因为局域配置文件就是放在命名空间一级中的。 |
39 | | - - `inclusionDomains` list<br>强制包含的 **[domain]**。<br>一般而言,用于通常不会包含**语言标识符**的`domain`。<br>一般而言会包含`font`与`textures`,因为这两处往往包含非文本文件(尽管也可能有文本文件),且字体修复已经需要用到这两个domain;其他内容多半会出现在*局域配置*中。 |
| 41 | + - `inclusionDomains` list<br>强制包含的 **[domain]**。<br>一般而言,用于通常不会包含**语言标识符**的`domain`。<br>一般而言会包含`font`与`textures`,因为这两处往往不带语言标识符,且字体修复已经需要用到这两个domain;其他内容多半会出现在*局域配置*中。 |
40 | 42 | - string<br>强制包含的domain名称。<!--以[S部分](./S.-本仓库的结构向导)中定义的 **[domain]** 为准。--> |
41 | 43 | - `exclusionDomains` list<br>强制排除的 **[domain]**。<br>暂时闲置,或可用于排除一些策略相关的零散文件。 |
42 | 44 | - string<br>强制排除的domain名称。<!--以[S部分](./S.-本仓库的结构向导)中定义的 **[domain]** 为准。--> |
|
49 | 51 | - `destinationReplacement` object<br>打包时采用的目标地址替换。<br>可以用于移动文件,但暂时闲置;使用**检索策略**中的`singleton`也可以实现地址替换,但需要在每个模组下配置。 |
50 | 52 | - `<查询语句>` string<br>用以替换**正则表达式**`<查询语句>`匹配对象的内容,可以是一个或多个字符,甚至可以在这里用**正则替换语句**。 |
51 | 53 |
|
| 54 | +#### 局域配置文件 |
| 55 | + |
52 | 56 | **局域**配置文件`./projects/<version>/assets/<mod-name>/<namespace>/local-config.json`的格式与全局配置文件中,`floating`标签下的内容(*可变配置*)一致。 |
53 | 57 |
|
54 | 58 | ### 文件容斥顺序 |
55 | 59 |
|
56 | 60 | 介于在配置文件中出现了多种包含/排除文件的配置项,有必要说明以下这些项生效的顺序: |
57 | 61 | 1. `exclusionMods`和`exclusionNamespaces`在进入命名空间前即会排除相应的文件夹——甚至不会加载其中的`local-config.json`。<br>当然,如果是通过*检索策略*访问的,则这一项不会生效。 |
58 | | -2. 在剩下的命名空间中,检索文件。下面的配置项可能会被*局域配置*修改,除了`targetLanguages`以外。 |
| 62 | +2. 在剩下的命名空间中,检索文件。下面的配置项可能会被当地的*局域配置*修改,除了`targetLanguages`以外。 |
59 | 63 | 3. 在所有检索到的文件中,排除掉`exclusionPaths`指定的文件,即便是通过*检索策略*访问的。 |
60 | 64 | 4. 在剩下的文件中,直接包含`inclusionPaths`和`inclusionDomains`指定的文件。 |
61 | 65 | 5. 在剩下的文件中,排除掉`exclusionDomains`指定的文件。 |
|
133 | 137 |
|
134 | 138 | 组合文件可以和其他打包策略混合使用,以修改组合中效果不好的部分,或者添加非组合的内容。 |
135 | 139 |
|
136 | | -组合文件理论上可以放在任何位置,使用任何名称;因此,打包器的*基础配置*没有办法排除掉这些文件。不过,为了方便,最好将其汇总在一个位置,采用明确的名称,以便在*局域配置*中排除。 |
| 140 | +组合文件理论上可以放在任何位置,使用任何名称;因此,打包器的*基础配置*没有办法排除掉这些文件。不过,为了方便,最好将其汇总在一个位置,采用明确的名称,以便在*局域配置*中排除。 |
| 141 | + |
| 142 | +## 配置注解 |
| 143 | + |
| 144 | +上述配置全部采用`json`格式书写;这导致的一个问题就是,`json`格式严格意义上是**不支持注释**的! |
| 145 | +为了解决这一问题,在使用这些内容时,最好在对应的命名空间内附上**注解文件**。当然,这不是必须的,但最好这么做。 |
| 146 | +同时,也可以在此写下对该目录内容的特殊注释。 |
| 147 | + |
| 148 | +原则上注解文件可以采用任何形式,但建议写到*命名空间目录下的`README.md`文件*中——打包的全局配置默认会排除这一文件。 |
| 149 | +同样的,注解文件的形式也没有特殊限定,但尽量统一为佳。 |
| 150 | + |
| 151 | +一些注解文件的例子为[这个](projects/1.16/assets/minecraft/minecraft/README.md)、[这个](projects/1.18/assets/minecraft/minecraft/README.md)[这个](projects/1.18/assets/macaws-furniture/mcwfurnitures/README.md)。 |
| 152 | + |
| 153 | +> 原则上,这些注解甚至可以自动生成。 |
0 commit comments