支持从版本 jar 的 version.json 中读取版本号信息
检查项
- [X] 我已在 Issues 页面 和 常见&难检反馈及问题列表 中搜索,确认了这一 Bug 未被提交过。
描述
(你说是故意触发也对,但这也是个问题吧)
1.20.4 原 Json(即没有 PCL 下载的版本信息)中只有 ID 出现了 1.20.4 ,当我们直接用 原 Json 作版本 Json 并且重命名了 ID(这里改成wwwwww,这个字符串符合第 10 个方法(见下文)的正则)时,就会使用第 10 个方法,并且写入日志“无法完全确认 MC 版本号的版本:wwwwww”,接着会出现如图问题(本来是没有快照wwwwww的,并且这是正式版):
重现步骤
我找了一下源码(ModMinecraft.vb),发现PCL只从以下11个方面获取版本号:
- JumpLoader 信息中 JsonObject("jumploader")("jars")("minecraft")(0)("gameVersion")
- PCL 下载的版本信息中 JsonObject("clientVersion")
- HMCL 下载的版本信息中 JsonObject("patches") 中某一个的 ("version")
- Forge Arguments 中 JsonObject("arguments")("game") 中找"--fml.mcVersion"的下一个
- 继承版本中用正则去找
- 下载地址中用正则去找
- Forge 版本中用正则去找
- OptiFine 版本中用正则去找
- Fabric 版本中用正则去找
- 游戏 ID 中用正则去找
- 整个版本 Json 文件中用正则去找
即缺失如上信息中前 9 个明确信息的游戏版本都会出现问题。
我记得以前的PCL是会去读取游戏 Jar 文件中 version.json 的,所以建议添加上(如果有 version.json ,就读取)
日志与附件
我把Log2~5.txt都给删了(因为认为无关)。 Log1.txt 注:Log1.txt 第146行将版本描述设置为默认,并且可从上面的图片看出图标已经设置为自动。
额,一般碰到识别到ID为不是正式版格式的时候自动标记为快照版? 那照你这么说应该怎么识别? 这应该属于故意触发的Bug…… 并且Json中只有你修改过的版本ID,怎么查……
这应该属于故意触发的Bug……
(确实是故意触发)
那照你这么说应该怎么识别?
我后面提到了可以去读取游戏 Jar 文件中 version.json ,也算多一种寻找方式(应归类为优化)
那我思考一下怎么样让它变得合情合理(不故意触发)
那我思考一下怎么样让它变得合情合理(不故意触发)
~~你tm故意找茬是吧~~
你都自己直接改 JSON 了,就应当自己重命名其他版本
没有任何一个启动器扛得住你这么搞,关了吧
不过版本 jar 里面的 json 还需要改吗(?)
不是,我的意思是版本jar里面的json可以作为一种获取版本号的方式(并且现在我正在思考如何使这个问题理所当然(不碰json))
我承认确实故意触发,但还是想问一下,我用官方启动器下载的版本用PCL重命名(如果有问题的话)算故意触发吗?(如果官方启动器下载的版本用PCL重命名没有问题,那我改造自己去适应)
没有任何一个启动器扛得住你这么搞,关了吧
(在相同的 Json 下,HMCL 可以识别版本为 1.20.4,如图)
我承认确实故意触发,但还是想问一下,我用官方启动器下载的版本用PCL重命名(如果有问题的话)算故意触发吗?(如果官方启动器下载的版本用PCL重命名没有问题,那我改造自己去适应)
不算,但直接改 JSON 这种行为是不会被考虑的,也不会做防御措施
我下载了官方启动器,并且我发现官启下载的版本 Json 符合要求 "缺失如上信息中前 9 个明确信息" 比如:先用官方启动器下载 1.19.3 再用 PCL 改名为 11451d ,并且由于版本号识别有误导致 Java 自动选择出错
很多版本里我都没找到有这个 version.json,它是啥玩意儿里面才有的啊
这个 version.json 我记得只高版本有(比如图中的1.20.4,还有1.16.5,其他版本我还没来得及看)
我在你说的版本里都没找到 :/
啊?那真是挺奇怪的,你去哪里找的?
我直接从官方源下载的也没有,我怀疑你那个是哪个启动器手动加的……
你这个是不是按类型排序了
我直接从官方源下载的也没有,我怀疑你那个是哪个启动器手动加的……
按名称排序 ...
version_manifest_v2.json:
"id": "1.20.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/487afa9d48c57e0b2137367c6596e0cf4f9fc64e/1.20.4.json"
"downloads": {
"client": {
"sha1": "fd19469fed4a4b4c15b2d5133985f0e3e7816a8a",
"size": 24445539,
"url": "https://piston-data.mojang.com/v1/objects/fd19469fed4a4b4c15b2d5133985f0e3e7816a8a/client.jar"
client.jar
version_manifest_v2.json:
"id": "1.20.4", "type": "release", "url": "https://piston-meta.mojang.com/v1/packages/487afa9d48c57e0b2137367c6596e0cf4f9fc64e/1.20.4.json"1.20.4.json 1.20.4.json:
"downloads": { "client": { "sha1": "fd19469fed4a4b4c15b2d5133985f0e3e7816a8a", "size": 24445539, "url": "https://piston-data.mojang.com/v1/objects/fd19469fed4a4b4c15b2d5133985f0e3e7816a8a/client.jar"
?你想说明什么问题?
@LTCatt 确实有
哦淦没看到是按类型排序,确实有,私密马赛
https://minecraft.wiki/w/Version.json
我直接从官方源下载的也没有,我怀疑你那个是哪个启动器手动加的……