Skip to content

zh_cn_configs

3093FengMing edited this page Jun 25, 2024 · 8 revisions

配置文件

配置文件的内容应该如下所示:

{
  "mods": [
    "example"
  ],
  "classes": [],
  "apply_mods": [],
  "debug_mode": {
    "is_enable": true,
    "use_cache": true,
    "export_class": false,
    "output_format": "<source> -> <target> in <class> [<ordinal>] | <info>",
    "output_mode": 0
  }
}

接下来,我们会一个个介绍这些键以及它们对应的值的意义。

模块(mods)

可以看见,第一个是模块(即mods),它指示VP在加载时应该载入哪些模块(补丁)。 它是一个数组,你可以在其中增加别的文件,这些文件是相对于\config\vaultpatcher_asm\这个路径下的,而且不需要后缀名。 模块的加载顺序是由上到下,也就是排在第一个的模块会第一个被加载,其余同理。

全局类(classes)

全局类指定了在补丁文件中有哪些类是将要进行替换的,它同样是一个数组,并且它是全局的,这意味着如果你在此写入了一些类。那么这些类就没必要再写入模块中。 (注意,VP不会检查这些类,所以请在编写中确保它们没有重复项!)

作用模组(apply mods)

作用模组指定了有哪些模组中的类要将被替换,其中的每个字符串对应它在mods文件夹下的那个模组,不需要加入后缀名.jar。 (注意,它是以文件名作为标准来搜索模组,而不是modid) 它相当于遍历该模组的jar中的类,并将这些类添加到全局类中,但它的优先级高于全局类。

这可能会导致资源浪费,并造成没必要的性能损耗,所以尽量不要使用它。该功能无法遍历jar-in-jar

合并

对于上文提到的所有内容,我们有:

配置文件的读取

调试模式(debug mode)

调试模式是给配置编写者进行调试的,你需要将其中的is_enable设为true以开启调试模式。

其中的output_mode是一个整数,目前有且仅有两个值10。当被设为1时,无论该替换是否成功,都会输出一次调试信息;当被设为0时,只有当替换成功时(原值不等于替换后的值),才会输出调试信息。

调试信息由output_format决定,输出时其中的占位符(用尖括号括起来的)将被替换为指定的值。 占位符详情见下表:

  • <source> 代表原值,即原先的文本。
  • <target> 代表替换后的值。
  • <method> 代表该替换是使用哪种方法,以ASMTransform开头的为ASM替换,否则则是Font/TextComponent的类名加方法名,意味着这是动态替换。
  • <class> 代表该替换是在哪些类中进行替换,如果是动态替换,那么他会输出当前的堆栈,否则是原值所在的类。
  • <info> 代表替换时的TranslationInfo,它包含pairstarget_class信息。
  • <ordinal> 代表此替换操作的操作序数(仅ASM替换)

export_class设为true以导出替换后的类文件。

use_cache决定VP是否优先使用已缓存替换后的缓存类文件,设为true以开启优先使用。推荐在编写配置时关闭,这样每次改动模块内容都会即时应用,而不需要更改缓存。