
Patched
允许数据包/资源包和模组修改json文件的部分内容,而非完全替换它们。
Patched 是一个模组,它允许数据包/资源包(以及模组!)修改 JSON 文件的各个部分,从而避免直接整体替换它们。此模组可用于修改生物群系、战利品表、模型以及游戏中大多数其他 JSON 文件。每当 Mojang 最终使实体模型数据驱动时(每次更新似乎都离这更远),Patched 也能修补这些模型,为 OptiFine 的 CEM(自定义实体模型)提供轻量级替代方案。
以下是一些可以借助 Patched 实现的功能列表:
- 从生物群系中移除或添加世界生成特性
- 从进度中移除或添加条件
- 从战利品表中移除或添加战利品
- 修改配方
- 修改所有匹配模式的文件(例如,修改所有生物群系)
- 根据已加载的模组或配置选项进行条件修改
- 等等!
Patched 旨在减少数据包/资源包之间以及其他模组之间的冲突。 同时旨在简化这些文件的维护,因为您无需担心文件其他部分过时的问题(例如,Minecraft 更新修改了某个生物群系,而您正在修改该生物群系的无关部分)。
Patched 附带几个命令来检查游戏状态(/patchedc 用于资源包):
/patched list packs显示包含补丁的包列表/patched list patches <pack>显示由给定包提供的补丁列表/patched dump patch <pack> <name>显示指定包提供的补丁内容/patched dump file <name>显示文件的内容,并通过注释标明文件的更改以及由谁所做
工作原理
Patched 允许创建与被修改文件同名的所谓“补丁”文件。 这些补丁遵循 RFC 6902 的语法,并带有额外功能以使其更适应模组环境。该模组的文档详述了如何编写这些补丁(以及有哪些其他可用功能)。 例如,要从平原生物群系中移除沙砾:
{
"op": "find",
"path": "/features/6",
"test": {
"path": "",
"value": "minecraft:ore_gravel"
},
"then": {
"op": "remove",
"path": ""
}
}
然后,此补丁应放置在数据包的 data/minecraft/worldgen/biome 位置下,命名为 plains.json.patch。
为避免性能问题,Patched 仅在声明包含补丁的包中查找补丁(即采用自愿选择机制)。这是为了避免在整合包中的 200 多个模组中全都查找一遍,即使其中只有一个模组实际包含补丁。一个包可以在其 pack.mcmeta 中放入以下内容来启用补丁功能:
{
"pack": {
// ...
},
"patched": {
"format_version": 1 // 向 Patched 表明此包使用了 Patched,因此其中包含补丁。
}
}
对于模组,这些信息可以放置在对应加载器的元数据文件中。 详情请参阅文档。
再举一个例子,此补丁将自定义生物群系添加到“探索的时光”进度中:
[
{
"op": "add",
"path": "/criteria/mydatapack:mybiome",
"value": {
"conditions": {
"player": [
{
"condition": "minecraft:entity_properties",
"entity": "this",
"predicate": {
"location": {
"biome": "mydatapack:mybiome"
}
}
}
]
},
"trigger": "minecraft:location"
}
},
{
"op": "add",
"path": "/requirements/-",
"value": [ "mydatapack:mybiome" ]
}
]
兼容性
Patched 挂钩到基础资源加载代码,允许修补任何 JSON 文件——甚至其他补丁(理论上)。这将与大多数模组兼容,因为它们无需修改此代码,而任何使用 Minecraft 资源加载(这几乎是一项要求)的模组都将受益于 Patched。然而,某些模组可能也会修改此资源加载代码。在较新版本中,已尝试与此类模组实现兼容——如果存在的话——但这同样取决于它们是否也进行类似的兼容性更改。
局限性
不幸的是,“合并”资源存在一些限制。澄清一下,合并资源是指 Minecraft 在运行时合并的任何资源——最显著的是标签。除了标签之外,还有少量此类资源(均为客户端):语言文件、sounds.json、纹理图集源、方块状态和字体。对此类文件的限制是,只有提供它们的包才能修补它们。原因是,否则 Patched 不知道应该将补丁应用于这 30 多个文件中的哪一个。
此外,在早于 1.19.3 的版本中,原版生物群系无法(直接)修补。这是因为在这些版本中,这些生物群系是硬编码的——也就是说,没有可修补的文件。可以通过让一个优先级较低的数据包添加生物群系(例如,从此处的世界生成导出中获取)来解决此问题,但我更建议升级到 1.19.3 或更高版本。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。