Skip to content

zh_cn_start

KlparetlR edited this page Sep 30, 2024 · 7 revisions

实战部分一:准备工具和环境+定位目标类

这里只教ASM的,动态替换会影响游戏性能,所以不教,但流程更短,只要知道原文字符串即可。

所需工具及环境

  • 反编译工具:Recaf(认准Recaf谢谢喵),下载链接

  • 环境:java8+(并配置JAVA_HOME

配置Recaf

成功打开软件后,界面可能是英文,需要你改配置

点击上面功能栏的configdisplay的第三个Language设置你的偏好语言。然后重启软件

display的第一个类查看方式的第一个选项就可以,直接看反编译出的代码

Ps:如果后续反编译过程出现超时,可以尝试修改2个配置内容:进入配置栏上方的第三个反编译栏,将反编译器改成其他的试试;还是在那一栏,将最后一个的超时时长的时间拉满

你要准备的事

  1. 首先记住最最基础的单个翻译信息,如下文:

      {
        "t": {
          "name": ""
        },
        "p": [
          {
            "k": "",
            "v": ""
          },
          {
            "k": "",
            "v": ""
          }
        ]
      }

    通俗的讲,就是用name告诉VP,你要替换的原文k在哪个类文件里,然后v是替换成什么。(name相当于文件地址)

  2. 找到你想汉化的有硬编码的模组,首要确保lang汉化全了,再去记住这个字符串,包括大小写

  3. 先加载一次VP

    可以将VP模组丢进你要汉化模组的 同整合包 或 版本文件夹 的mods文件夹内,然后加载跑一次,跑出配置文件夹

    VP的配置文件夹:<版本文件夹>\config\vaultpatcher_asm

    VP的插件文件夹:<版本文件夹>\vaultpatcher\plugins

    VP的缓存文件夹:<版本文件夹>\vaultpatcher\cache

    初次跑只有config.json和一个example.json,按照上面章节配置文件,配置一下

    比如关掉优先读取缓存,在mods里面写一个 模块名 ,再跑一次游戏,就可以出现VP预制的模块内容(example.json本身也有),该模块内容便于新手上手使用。

要用到的功能(定位目标类)

  1. 首先,将要提取硬编码的模组拖进软件

  2. 全局搜索字符串:点击上面功能栏的搜索,点第一个字符串,这里窗口的第一个“字符串”就是填入你想要查的内容(要在游戏内见到有这个实列,才知道搜索什么)

    搜索结果类似文件管理器,打开文件夹,可以看到那些类文件在哪里

    在该字符串所在的类文件上,右键按转到定义,可以开始反编译,反编译后,你可以用Ctrl+F搜索你要的字符串,就可以开始提取硬编码了

    在文件栏上,对这个类文件右键,按复制路径可以复制所在的根目录,例如net/smile/item/AdamantitItem$Chestplate

    这就是模块中name的值了,注意区分子类(VP支持两种路径分隔符:/.,不论哪个VP都能正常读取)。

其他获取源代码的方式

java-decompiler:链接(里面内含VP旧版本的机制,现在不适用,请选择性查看)

它会直接反编译出源代码给你,然后解压源代码所在的文件夹到另一个文件夹,用vsc软件打开它,就可以全局搜索内容了

下一章:获取k的值