
混合修复
为Forge+Bukkit服务器环境提供错误修复、优化和一套实用工具。
查看大图HybridFix (混合修复)
为 Forge+Bukkit 服务端与客户端环境提供一系列错误修复、优化与实用工具。
已修复的问题
Forge-Bukkit
- Bukkit 插件无法处理某些模组爆炸(例如 Tinkers' Construct 的 EFLN)
- 将部分 Forge 事件桥接到 Bukkit
Forge
- (通用)修复 Forge JarDiscoverer 尝试读取
module-info.class及其他多版本类的问题。 - (服务端)修复服务器完全启动前 ping 中显示
Outdated server的问题。
模组
通用
- 用 mixins 替换 Quark 中脆弱的 asm 转换器补丁
- 修复 Aether Legacy 中 Swet AI 的控制问题
客户端
- 用直接调用替换 Industrial Craft 2 中开销高昂的反射用法
服务端
- Simple Difficulty、ToughAsNails(以及任何其他类似模组)的口渴值在玩家重生时未被重置(Luohuayu/CatServer#536)(MohistMC/Mohist#2905)
- The Betweenlands 模组中的戒指刷物品漏洞(Luohuayu/CatServer#204)
- 模拟原版玩家重生,玩家死亡时的大多数刷物品漏洞应已修复
- 修复 Twilight Forest 树苗可以绕过防破坏插件保护的问题
- 修复 Twilight Forest 实体(如 Naga)可以破坏受保护区域内的方块
- 修复 Twilight Forest 的 Chain with Block 可以破坏受保护区域内的方块
- 修复 Thaumcraft 6 的污染可以扩散到受保护区域
- 修复 Thaumcraft 6 的咒波裂隙可以破坏受保护区域内的方块
- 修复 Tinkers' Construct 中的特性效果可以绕过伤害保护
- 修复 So Many Enchantments 可以在受保护区域内卸下玩家装备
- 修复 Botania 的 Loki 之戒可以绕过防破坏保护
- 修复 Botania 的 MineLens 可以绕过防破坏保护
- 修复 Botania 的 Rannuncarpus 可以绕过防破坏保护
- 修复 Industrial Craft 2 的采矿机可以破坏受保护区域内的方块
- 修复 Industrial Craft 2 的爆炸物可以破坏受保护区域内的方块
- 修复 Draconic Evolution 的 ChaosCrystal 可以破坏受保护区域内的方块
- 修复 TechReborn(RebornCore) 的爆炸可以破坏受保护区域内的方块
- 为 Applied Energistics 2 的空间塔提供事件,以防止某些未经许可的破坏行为
- 修复 TechGuns 的爆炸可以破坏受保护区域内的方块
- 为 Applied Energistics 2 的空间塔添加实体黑名单/白名单
- 修复 InfernalMobs 的蜘蛛网可以在受保护区域内生成
- 修复 EpicSiegeMod 的怪物 AI 可以在受保护区域内进行破坏
- 禁用 Industrial Foregoing 中 Blackhole Controller(已弃用)的配方
- 修复 Witchery 的法术可以绕过伤害保护
- 自动修改 Actually Additions 的配置以适配服务器环境
- 阻止 Mekanism 数字采矿机开采方块实体
功能
- 自动用我们自己的方法覆盖 Mohist 糟糕的内置爆炸处理。
- 将 Forge 权限处理桥接到 Bukkit。
- 如果没有注册监听器则跳过触发事件。
- 禁用 Timings 以降低性能开销。
- 兼容性优先,不应破坏任何模组/插件。
- 将 Bukkit 插件内置到模组中,为服主提供实用工具。
- 增强与模组 FakePlayers 的兼容性。
- 为插件开发者提供或多或少有用的 API,以便轻松与 Forge 模组交互。
- 为模组开发者提供大量 API,以便轻松保持与混合服务端的兼容性。
- 常规 CraftBukkit 性能改进。
- 安装 Censored ASM 时自动反混淆插件堆栈跟踪,便于调试。
- 跨 ClassLoader 访问,使 Forge 模组可以轻松与 Bukkit 插件交互。(详情)
- 从现代版本向后移植的 Bukkit API。
- 内置插件 ASM 补丁器,兼容你喜爱的插件。
- Bukkit 插件 mixin 支持,允许你通过模组向插件注入代码。 (实验性) (文档)
- 扩展 Forge 的错误恢复系统(
removeErroringEntities和removeErroringTileEntities),在发生错误时通知服务器管理员。 - 守护玩家 tick 进程,踢出玩家而不是直接崩溃。
- 修复影响服务器游玩体验的 Forge 错误。
- (通用)优化实体 AI,加快最近目标查找速度。
配置文件位于 ${minecraftDir}/config/hybridfix.cfg
使用方法(服务器管理员)
从 CurseForge 下载 HybridFix 及其依赖(MixinBooter 和 ConfigAnyTime),将 HybridFix 放入 ${minecraftDir}/mods 文件夹。
HybridFix 也可以安装在客户端,部分客户端修复与优化将会生效。
使用方法(开发者)
如果你正在开发模组,可以从 curse maven 导入 HybridFix:
Gradle(Groovy DSL):
implementation fg.deobf("curse.maven:hybridfix-1166614:{latest_artifact_id}")
如果你正在开发插件,可以直接导入 HybridFix jar:
Maven:
<dependency>
<groupId>io.wdsj</groupId>
<artifactId>hybridfix</artifactId>
<version>{latest_version}</version>
<scope>system</scope>
<systemPath>PATH-TO-JAR</systemPath>
</dependency>
Gradle(Groovy DSL):
compileOnly files("PATH-TO-JAR")
API 位于 io.wdsj.hybridfix.api 和 io.wdsj.hybridfix.duck.api 包中。
插件挂钩
得益于 HybridFix 内部插件,我们可以从 Forge 侧挂钩到插件以提供更多修复。
当前已修补的插件:
- Residence(SpigotMC)(GitHub)
- WorldGuard(BukkitDev)(GitHub)
- Citizens(GitHub)
插件 ASM 补丁器
HybridFix 使用 ASM 在运行时动态注入插件类, 以解决插件在 Forge+Bukkit 环境下的兼容性问题。
当前支持的插件:
- Residence:修复与 Residence 6.0.0.0+ 的兼容性。
- 通用:将 InventoryView 的 INVOKEINTERFACE 调用重定向为 INVOKEVIRTUAL。
关于 FakePlayers
HybridFix 利用 Forge FakePlayer 修复一些破坏漏洞,命名逻辑为 [modid-ClassName]。
例如,botania rannuncarpus 补丁使用的假玩家名称为 [botania-SubTileRannuncarpus]。
你可以将这些名称添加到插件的白名单/黑名单中以自定义行为。
命令
/hybridfix dumpitem- 显示手中物品的详细信息。/hybridfix dumpentity- 显示目标实体的详细信息。/hybridfix dumpblock- 显示目标方块的详细信息。/hybridfix version- 显示版本信息。/hybridfix eraseentity- 强制移除目标实体。/mods- 类似/plugins,显示所有已加载的模组。
权限
hybridfix.command.use- 允许访问/hybridfix命令。hybridfix.command.eraseentity.use- 允许访问/hybridfix eraseentity命令。hybridfix.command.mods.use- 允许访问/mods命令。
注意:命令和权限注册在 Bukkit 侧,这意味着你可以使用 LuckPerms 等 Bukkit 权限插件来管理权限。
许可证
本模组基于 LGPL-2.1 许可。
向后移植的 Bukkit 类基于 GPL-3.0 许可。
除非代码中明确说明,其他部分基于 LGPL-2.1 许可。
仓库中经 MCP 重映射并剥离的 CraftBukkit JAR 仅用于开发用途,不包含在发行版中。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。