跳到主要内容

客户端FAQ

一些常见的问题都列举在这里了,希望对你有帮助。

更新时窗口无响应卡死或者内容丢失

影响范围:客户端全版本

问题原因:目前未知

解决方法:在配置文件里把主题禁用即可 disable-theme: true 或者升级到1.0.13或更高的版本

其它建议:如果你在用模组启动时遇到了这个问题,可能会同时遇到在配置文件里关不掉主题的情况,这时请考虑使用 JavaAgent 启动,因为适用于 1.12.1 游戏版本的 BalloonUpdateModLoader 会强制开启主题,然后就会导致未响应的问题出现

窗口内容是空白

使用动态加载器后主题会加载失败,且窗口内容全部是空白

影响范围:客户端小于等于 1.1.3,或者大于等于 1.1.7,同时使用了 DynamicLoader

问题原因:GUI 的兼容性问题

解决方法:升级到客户端 1.1.9 或者以上版本,并用压缩软件打开客户端jar文件删除根目录的 .no-standalone-process 文件来切换到独立进程启动可以解决此问题(若遇到进程卡死无法退出的问题请手动创建这个文件回到非独立进程启动,并关闭主题功能)

Javaagent 启动时卡住游戏无法启动

在使用 Javaagent 启动时程序结束后游戏无法启动,一直卡在那,需要在任务管理器里手动关闭进程

影响范围:客户端大于 1.0.13 小于等于 1.1.3

问题原因:客户端 1.0.13 开始更换了程序内部的启动方式,尝试以独立的进程启动以绕过限速和窗口未响应的问题

解决方法:换回老的启动方式(此方法需要 1.0.15 或者更高版本):用压缩软件打开客户端jar文件,在根目录下创建一个名为 .no-standalone-process 的空文件(也就是在内置配置文件的旁边)然后保存关闭

Error opening zip file or JAR Manifest missing

Error occurred during initialization of VM
agent library failed to init: instrument

Error opening zip file or JAR Manifest missing: McPatchClient.jar

影响范围:客户端全版本

问题原因:一键启动参数设置有误,找不到 McPatchClient.jar 文件

解决方法:检查 JVM 参数是否设置正确,McPatchClient.jar 是否放到了正确位置

McPatchClient.jar 需要放到 .minecraft/ 目录下(如果未开启版本隔离),或者放到 .minecraft/versions/your-version/ 目录下(如果开启了版本隔离)

下载限速问题

有小概率会遇到下载速度会变得非常慢(约几百 kb/s),远低于浏览器直接下载的速度

影响范围:客户端全版本

问题原因:问题源头目前未知,貌似和操作系统,启动器,Java 发行版,黄历忌宜,游戏版本都有关系

解决方法:此问题目前无法彻底解决,但可以尝试一下方法

  1. 升级客户端到 1.0.13 或者更高版本(大于等于 1.1.7 需要用压缩软件打开客户端 jar 文件删除根目录的 .no-standalone-process 文件)
  2. 把 minihttpserver 更换成 nginx,apache 等专业服务器软件
  3. 更换 Java 发行版,如 openjdk,zulu 等
  4. 尝试使用 sftp 协议更新

连接被拒绝

影响范围:客户端全版本

问题原因:由于网络原因,服务器拒绝了客户端的 HTTP TCP 请求。俗话叫端口不通

解决方法:这不是程序 bug,请排查与服务器直接的网络是否通畅,是否需要放开安全组规则,配置端口映射,放行服务器防火墙规则,也请检查客户端配置文件中的地址是否填写错误等

如果你的服务端部署在公网,请检查客户端报错提示框中的地址是否含有 localhost 或者 127.0.0.1 等字样,如果有,将其修改成你的公网IP地址再重试

连接超时

影响范围:客户端全版本

问题原因:由于网络原因,服务器未能在指定时间内及时应答客户端的 HTTP TCP 数据包。可能是网络不稳定也可能端口不通

解决方法:这不是程序 bug,请检查客户端与服务器之间的网络是否稳定,防火墙是否放行

如果你的服务端部署在公网,请检查客户端报错提示框中的地址是否含有 localhost 或者 127.0.0.1 等字样,如果有,将其修改成你的公网IP地址再重试

连接中断

影响范围:客户端全版本

问题原因:由于网络原因,已建立的 HTTP TCP 连接被意外断开。俗话叫网络不稳定

解决方法:这不是程序 bug,请检查客户端与服务器之间的网络是否流畅

HTTP状态码不在2xx-3xx之间

影响范围:客户端全版本

问题原因:访问对应 URL 时,服务端返回了一个表示错误的HTTP状态码(即不在 2xx-3xx 之间)

解决方法:如果是 HTTP(s) 源,用浏览器打开这个出错的 URL,根据浏览器的错误信息自行解决。如果是 Webdav 源,请向贡献者报告此问题

HTTP状态码(404)不在2xx-3xx之间(versions.txt)

影响范围:客户端全版本

问题原因:服务端 public 目录下找不到 versions.txt 文件。多出现在忘记使用管理端创建过更新包的情况

解决方法:打开管理端,创建任意一个版本或者更新包。另外,如果你刚升级到客户端 1.1 版本就碰到这个问题,说明你的管理端没有同步更新到 1.1 版本,因为 1.1 版本的客户端和管理端和 1.0 版本是完全不兼容的,需要重新创建所有的更新包(因为格式不兼容)

拒绝访问

错误详情:java.io.FileNotFoundException。且路径所指向的文件是 mc-patch-version.txt 或者 mc-patch.log

影响范围:客户端全版本

问题原因:你把对应的文件属性设置成了隐藏,而隐藏文件是没有写入权限的,所以会报错

解决方法:取消勾选文件的隐藏属性。如果不想让玩家乱点,可以单独创建一个很深的文件夹来存放 McPatchClient 本体和配置文件

Webdav连接失败

影响范围:客户端 1.0.9 版或以上

问题原因:由于网络原因,Webdav 服务器源出现了网络连接层面的错误

解决方法:这不是程序 bug,此时需要根据报错信息后面的状态详情来定位具体原因

java.lang.NoSuchMethodError

java.lang.NoSuchMethodError ..... org.apache.http.impl.client.HttpClientBuilder.setSSLContext

影响范围:客户端全版本

问题原因:目前未知,会出现在 1.16.5 和更高版本上,同时使用 webdav 协议更新

解决方法:删除客户端包内的 .no-standalone-process 文件使用独立进程启动;或者使用非 webdav 源进行更新

Stream is not in the BZip2 format

影响范围:客户端 1.0.13 和之前的版本

问题原因:代码 bug 导致

解决方法:升级客户端到 1.0.14 或者更高版本

客户端版本号重启时删掉了所有的文件

当客户端版本号出现问题而重头下载所有版本时,删掉了所有游戏的文件和目录

影响范围:管理端 1.1.0 至 1.1.5(没错这个是管理端问题而非客户端)

问题原因:代码bug导致

解决方法:升级到管理端 1.1.5 或者更高版本,然后重头打包所有更新包(尤其是第一个更新包)

与图书馆模组 librarianlib 的兼容性问题

客户端程序使用 Kotlin 编写,并打包了 Kotlin 标准库。和图书馆模组同时加载时,可能会出现问题

影响范围:客户端全版本

问题原因:截止撰写本条目时,因为图书馆使用了较旧的 Kotlin 标准库版本(1.3),本程序使用(1.7)版本,直接可能会出现冲突

解决方法:此问题无法解决,只能等待图书馆模组将自带的 Kotlin 标准库升级到较新的版本来解决

题外话:截止撰写本条目时,图书馆模组的GitHub Issue里也有不少人反馈这个问题,但似乎这个模组很久未更新了

McPatchClient 是否可以自己更新自己

问题描述:McPatchClient 是否可以通过把自身文件加入到更新中来实现自己更新自己?

问题解答:不可以,对运行中的文件进行写入操作会导致未知行为(UB),这是非常危险的。程序已在代码里完全写死以阻止这种危险操作

小小提示:虽然不可以更新客户端程序本身,但是更新配置文件是允许的,但缺点是第二次启动时新的配置文件才会生效

解决方法:可以参考热升级使用 DynamicLoader,缺点同样是是第二次启动时才会生效

PCL 的修改窗口标题改错了窗口

问题描述:PCL 的修改窗口标题修改了 McPatchClient 的窗口标题,而没有修改Minecraft窗口标题

问题原因:PCL 的检测机制会把第一个出现的窗口当做游戏窗口,当 McPatchClient 加入之后,会挤占这个窗口位置,导致窗口重命名到了 McPatchClient 上

解决方法:此问题无解

另一个程序已锁定文件的一部分,进程无法访问

java.io.IOException:另一个程序已锁定文件的一部分,进程无法访问

影响范围:客户端全版本

问题原因:Windows 不允许对一个正在运行中的文件进行读写操作

解决方法:如果你使用 JavaAgent 启动,请不要更新游戏核心文件,游戏资源文件等可能与 McPatchClient 同时处于运行中的文件。如果你未使用 JavaAgent 启动,请检查 Minecraft 进程是否退出再更新

配置文件中的选项(xxx)无效

影响范围:客户端全版本

问题原因:配置文件中找不到名为 xxx 的配置项,或者配置项的数据类型不正确

解决方法:删除配置文件并重新从文件内部解压重新配置一次

配置文件无法解码为 yaml 格式

影响范围:客户端全版本

问题原因:配置文件语法错误导致无法解码

解决方法:检查配置文件格式是否正确,注释,缩进,忘打逗号等都会引发这个错误。如果仍然遇到这个错误,请先备份现有的配置文件,然后重新从 Jar 文件里解压官方示例配置文件,并一步步修改,直到定位到错误位置为止(也叫排除法)

mc-patch.json 无法解码为版本 Meta 文件格式

影响范围:客户端版本小于 1.1.0

问题原因:更新包的元数据文件 .mc-patch.json 格式不正确,无法解码。此问题多出现在 SakuraFrp 穿透场景中

解决方法:如果你使用了 SakuraFrp,且报错信息中包含 <!DOCTYPE html> 加跟着一长串乱码的话,请检查你的 SakuraFrp 穿透是否出了问题。如果你没有使用 SakuraFrp,请报告此问题。

找不到 .minecraft 目录

即使把Jar客户端放到 .minecraft 目录旁也提示找不到的问题

影响范围:客户端全版本

问题原因:启动Jar文件时,在 打开方式 中选择了以 Java 启动打开,而非默认 Java 启动

解决方案:将 Jar 文件设置为默认使用 Jav a运行,然后使用双击方式启动

无法确定版本前后关系

影响范围:客户端全版本

问题原因:客户端的版本号在服务端的 mc-patch-versions.txt(高版本为 versions.txt 或 1.1.7 版本后自定义的文件名)文件里找不到,可能是删掉了某个版本更新包导致

解决方法

  1. 让玩家删掉并重新下载一份群文件里的客户端压缩包(十分推荐,省时省力)
  2. 删除客户端的 mc-patch-client-version.txt 文件使其重新下载所有的版本更新包(谨慎操作,此行为非常消耗流量)
  3. 修改客户端的 mc-patch-client-version.txt 文件,输入一个服务端存在的有效版本号(谨慎操作,可能会导致对某些文件的后续更新直接失效)

版本的补丁文件的(xxx)已损坏

影响范围:客户端全版本

问题原因:更新包文件(.bin)里的某个文件二进制数据无法通过哈希校验,可能是文件下载时收到了损坏

解决方法:多次重试更新过程

主机指纹不可信任

影响范围:客户端全版本

问题原因:SFTP 源的服务器字符串中指定的指纹和远程主机报告的指纹不一致,可能出现中间人攻击

解决方法:请自行确认远程主机是否可信,如果可信,请更新 SFTP 源的服务器字符串中的指纹部分

无效的 sftp 服务器字符串

影响范围:客户端全版本

问题原因:SFTP 源的服务器字符串的格式不正确

解决方法:请仔细阅读配置文件注释和文档,修改服务器字符串的格式。如果仍然遇到这个错误,请先备份现有的配置文件,然后重新从 Jar 文件里解压官方示例配置文件,并一步步修改,直到定位到错误位置为止(也叫排除法)

无效的 webdav 服务器字符串

影响范围:客户端 1.0.9 版或以上

问题原因:Webdav 源的服务器字符串的格式不正确

解决方法:请仔细阅读配置文件注释和文档,修改服务器字符串的格式

SFTP 身份验证失败

影响范围:客户端全版本

问题原因:SFTP 源的服务器字符串中的用户名或者密码不正确,无法登录SSH

解决方法:将服务器字符串中的用户名和密码修改正确

SFTP Client 打开失败

影响范围:客户端全版本

问题原因:SSH 已经登录成功,但是无法开启 SFTP 通信,可能是服务端 SSH 不支持 SFTP 协议

解决方法:更换 SSH 服务端软件

SFTP 下载文件失败

影响范围:客户端全版本

问题原因:通过 SFTP 下载文件时遇到错误

解决方法:可能是网络原因导致。具体问题原因请看程序报告的错误信息内容

服务器SSL证书无法验证

影响范围:客户端 1.0.9 版或以上

问题原因:Webdav 源的服务器 SSL 证书无法通过验证,可能是证书已过期,也可能网络被劫持

解决方法:更新服务器证书,并且用浏览器打开未显示证书错误后重新使用 McPatchClient 重试

为安全起见,McPatch 无法跳过 Webdav 源的 SSL 证书验证过程,也就是说几乎是不支持自签证书的

找不到任何更新服务器地址

影响范围:客户端全版本

问题原因:客户端配置文件中的 server 选项不要写一个空列表,这样无法更新任何文件

解决方法:客户端配置文件中的 server 选项不要留空

未知格式的服务器字符串

影响范围:客户端全版本

问题原因:客户端配置文件中的 server 选项中的某一项因为格式不正确而无法解析

解决方法:仔细阅读示例格式,并对照检查错误。如果仍然遇到这个错误,请先备份现有的配置文件,然后重新从 Jar 文件里解压官方示例配置文件,并一步步修改,直到定位到错误位置为止(也叫排除法)