登陆 注册 QQ登陆
快捷导航
查看: 6|回复: 0

[模组分享] Quilt Bisect (Quilt Bisect)-MOD模组

[复制链接]

4999

主题

60

回帖

1万

积分

龙❁妻

Rank: 8Rank: 8

经验
10280 EP
金粒
5181 粒
绿宝石
20 块
爱心
0 点
发表于 2025-8-10 19:00:11 | 显示全部楼层 |阅读模式 IP:浙江宁波
Quilt Bisect (Quilt Bisect)Github |相关wiki |源站链接支持: quiltQuilt Bisect 是一个用于查找模组问题的模组和加载器插件,使用从二分查找派生的搜索算法。这包括n路模组不兼容性。

警告

*Quilt Bisect 仍然处于实验阶段。一些功能未被实现(请参见此描述中的todos)或未经测试(例如:Realms支持)*

用法

- 该项目使用了加载器插件,需要将`-Dloader.experimental.allow_loading_plugins=true`添加到你的JVM参数中。

- 将要测试的模组移动到你的Minecraft文件夹中的名为`modsToBisect`的目录中

- 如果你的游戏崩溃,将会弹出一个对话框询问你是否要进行二分查找(bisect),否则点击屏幕顶部的开始bisect按钮,然后将提示你为问题命名。

- 游戏将自动重启。尝试重现之前的问题。

  - 如果一切正常,点击“无问题”按钮

  - 如果你有问题,请点击“手动问题”按钮,并选择你遇到的问题或创建一个新的问题

    - 请注意,建议在一个bisect中尽量减少问题的数量,而是运行应用了之前修复的多个bisect。参见同时进行多个问题的二分查找

- (未经测试)一旦一个问题被孤立出来,bisect将验证解决方案并继续对其他问题进行二分查找。

- 一旦bisect完成,它将提供遇到的问题和解决方案的摘要。但请谨慎对待这些内容,因为二分查找的工作方式。

工作原理

同时进行多个问题的二分查找

虽然同时进行多个问题的二分查找是可行的,但在多个问题存在时,二分查找做出了一些基本假设:

- 只能通过移除一个模组来解决问题,而不能通过添加一个模组来解决

  - 一个常见的例子是铟,它可以解决sodium和其他模组的兼容性问题,如果其他涉及的模组没有声明它

- 问题之间存在着恒定的优先级顺序

  - 如果一个问题集合的子集B存在一个与问题A不同的问题,问题A不会出现在B的任何子集中。这意味着问题(即使是用户标记的问题)必须按照相同的顺序进行测试

自动标记正常工作的内容

在开始新的二分查找时,你可以配置bisect来:

- 自动加入一个世界、服务器、领域或上一次加入的世界(请注意,领域依赖于id而不是名称)

- 在给定时间后自动接受一个模组集合作为正常工作

  - 时间以1/20秒为单位,并且如果自动加入处于活动状态,它将在加入世界后开始计时,否则在显示标题屏幕时开始计时。如果是单人游戏,它也将等待足够的刻度

- 自动运行命令或发送聊天消息 after auto joining。

  - 它将被视为你从聊天中发送的,并且也适用于客户端命令

- 禁用世界保存(TODO)

  - 这是为了帮助复制与世界状态相关的问题。如果激活了此功能,重新启动后不会更改任何单人世界

处理崩溃

作为一个加载器插件,bisect在Quilt的加载过程中以非常早期的阶段挂接到其中。

在那里,它可以创建一个实际运行游戏的新进程,并等待该进程结束。

之后,bisect检查Minecraft是否崩溃,通过搜索新的崩溃日志、复制latest.log并更新`config/quilt_bisect/active_bisect.json`。

(如果没有bisect正在运行并且它崩溃了,则会询问是否应该开始一个新的任务)

如果Minecraft没有正常退出(无论是通过崩溃还是通过bisect菜单),但bisect正处于活动状态,则父进程会重新启动游戏。

在幕后,会有更多的内容,例如确保杀死父或子进程时它们可以按预期行事。

检测问题

Bisect将

- 处理崩溃

- (TODO)使用正则表达式检查日志消息

- 依赖用户输入

选择要测试的下一个模组集合

Bisect使用了扩展版本的二分查找:

- 首先选择一个存在(未修复)问题的最小模组集合

- 对于该模组集合的每个部分(参见最后一排)

  - 如果一个部分仅包含一个模组,则该模组是必需的,该部分不需要更多的工作

  - 将该部分分成两半

  - 检查这些部分

    - 如果一个部分存在问题,则它将成为下一次迭代中的问题模组集合的一部分

    - 如果所有部分都正常工作,则意味着在两个部分中都需要模组才能出现问题

      - => 将这些部分作为单独的部分存储,并且像步骤3一样对其进行二分查找

- 如果所有部分仅包含一个元素,则已经孤立出了一个最小的复制。使用产生的模组集合标记相应的问题为已修复,并调试下一个问题,有一种当前模组被移除

- 一旦完成所有这些工作,提示用户选择哪些模组需要移除

加载正确的模组集合

这种二分查找算法面临的主要问题之一是依赖性。

理想情况下,一个二分查找方法应该知道依赖关系,并根据这些依赖关系进行二分查找。

然而,这将极大地增加算法的复杂性,而目前这个项目已经足够复杂了。

因此,Quilt Bisect简单地忽略其搜索算法中的依赖性,并将所有模组提供给Quilt加载器。

但是,它只会强制加载模组集中的模组(这就是发生在你的mods文件夹中的模组)并提供其他模组作为可选模组,当一个依赖关系需要它时,它才会被加载。

虽然解决了依赖性的问题,但它会带来一些影响:

- 如果需要,模组集合中仍然可以加载一个不在模组集中的模组

- 这意味着当bisect确定了最小的复制时,实际上这个复制集合只包括一个依赖于真正的罪魁祸首的模组

- 这意味着模组集合_无法显示_哪个模组有问题,并且在指责某个模组之前必须进行更好的测试

开发

我还建议使用[Quilt Crasher](链接)进行测试,我开发了它以开启此类模组的测试。

许可

虽然代码是受ARR保护的,但这仅仅是为了防止将其移植到其他模组加载器或低效地复制。请随意为你的模组复制代码的部分。如果你的模组做的事情与这个模组类似,那么,请给我以及我的代码以适当的署名。你也可以请求我许可。如果它不是移植到其他模组加载器,我很可能会同意。

---

`PluginLogger`、`MinecraftServerMixin`和`GracefulTerminator`大部分取自链接

`BisectPlugin`也包含了该存储库中的`ModvotePlugin`的大部分内容。

所有这些都在[MIT许可证](链接)下(由comp500)

截图:



来自Modrinth所有游戏版本1.20.21.20.1所有类型quilt0.3.0-alpha.2+1.20.2quilt_bisect-0.3.0-alpha.2+1.20.2.jar下载0.3.0-alpha.2+1.20.2#Alphaquilt_bisect-0.3.0-alpha.2+1.20.2-sources.jar下载0.3.0-alpha.2+1.20.2#Alpha0.3.0-alpha.2+1.20.2- Update to 1.20.2- Please report **all** issues you encounter- Summary Mod Tooltip: Handle missing contact information (e.g. Missing homepage)- Move away from SpruceScreen, try using vanilla widgets (SpruceUI is still included)- More back end changes展开版本: 0.3.0-alpha.2+1.20.2支持游戏: 1.20.2类型:QuiltAlpha下载次数: 1830.3.0-alpha.1+1.20.1quilt_bisect-0.3.0-alpha.1+1.20.1.jar下载0.3.0-alpha.1+1.20.1#Alphaquilt_bisect-0.3.0-alpha.1+1.20.1-sources.jar下载0.3.0-alpha.1+1.20.1#Alpha0.3.0-alpha.1+1.20.1- *BREAKS ACTIVE BISECT*: Improve active bisect config readability by using a list instead of a map in order to sort runs chronologically- Better summary screen:- Mods are listed by their name with their icon, and provide a tooltip with more information- The unknown, java and Minecraft icons are the same as in mod menu, the code is also heavily inspired from there- When clicking on mods, a variety of functions can be accessed, including opening and copying the mod\'s location, sources URL`, issues, and moreIf nothing unexpected happens, this is the final version on 1.20.1, I will start updating to newer versions now展开版本: 0.3.0-alpha.1+1.20.1支持游戏: 1.20.1类型:QuiltAlpha下载次数: 5660.2.0-alpha.1+1.20.1quilt_bisect-0.2.0-alpha.1+1.20.1.jar下载0.2.0-alpha.1+1.20.1#Alphaquilt_bisect-0.2.0-alpha.1+1.20.1-sources.jar下载0.2.0-alpha.1+1.20.1#Alpha0.2.0-alpha.1+1.20.1- One crash can now have multiple stack traces- Supports displaying a diff to known (similar) stack traces- Disabling world saving is now implemented- This means content mods can now be unloaded without corrupting the world- Because saving in Minecraft is all over the place this backups and resets worlds before launch- Use Quilt Loader\'s API to discover, unload and modify mods. This means that we get Jar-in-Jar support, proper fabric support, better interoperability with other loader plugins and that the `modsToBisect` folder is no more- Properly extract the stack traces in a few cases, and better error messages, some user facing common ones.- Added a config- Mod ids that are ignored by bisect are configurable- the default bisect settings are configurable- the log and saves backup storage are configurable- The place where bisect searches for crash reports are configurable- When the stack trace diff should be shown- Always- Never- When the first line matches (default)- Corrected dependency metadata: Breaks on 1.20.2+展开版本: 0.2.0-alpha.1+1.20.1支持游戏: 1.20.1类型:QuiltAlpha下载次数: 3070.1.0-alpha.2+1.20.1quilt_bisect-0.1.0-alpha.2+1.20.1.jar下载0.1.0-alpha.2+1.20.1#Alphaquilt_bisect-0.1.0-alpha.2+1.20.1-sources.jar下载0.1.0-alpha.2+1.20.1#Alpha0.1.0-alpha.2+1.20.1- fix crash on startup展开版本: 0.1.0-alpha.2+1.20.1支持游戏: 1.20.1类型:QuiltAlpha下载次数: 4000.1.0-alpha.1+1.20.1quilt_bisect-0.1.0-alpha.1+1.20.1.jar下载0.1.0-alpha.1+1.20.1#Alphaquilt_bisect-0.1.0-alpha.1+1.20.1-sources.jar下载0.1.0-alpha.1+1.20.1#Alpha0.1.0-alpha.1+1.20.1- Initial (alpha) release- Multi issue stuff untested - please report bugs!- Disabling world saving does not work展开版本: 0.1.0-alpha.1+1.20.1支持游戏: 1.20.1类型:QuiltAlpha下载次数: 142全部版本

markdown_parsed

文章类型:收录

layui.use([\'form\'], function(){
var form = layui.form;
});

游客,如果您要查看本帖隐藏内容请回复
Quilt Bisect
楼主 2025-8-10 19:00:11 回复 收起回复
小僵尸论坛感谢有你~
回复 论坛版权

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 手机动态码快速登录

本版积分规则



官方

新浪微博 腾讯微博 微信公众号 投稿规则 版权声明 捐助我们

官方QQ①群: 291907844 (点击加群)
官方QQ②群: 421312192
官方QQ③群: 528726532

介绍

我的世界(Minecraft)小僵尸论坛
收录了来自各地的我的世界(MC)爱好者们的各种资源

须知: 切勿滥用举报,任何与举报相关的信息必须属实!

"Minecraft"以及"我的世界"为Mojang Synergies AB的商标 本站与Mojang以及微软公司没有从属关系

QQ|Archiver|手机版|小黑屋|Minecraft(我的世界)小僵尸论坛 |网站地图

GMT+8, 2025-8-28 03:46 , Processed in 0.187818 second(s), 48 queries .

快速回复 返回顶部 返回列表