GhostBuster
基本信息
GhostBuster 是 FoamFix 里处理「幽灵区块加载」(ghost chunkloading)的子系统, 由 3 个类 + 3 个字节码补丁构成。
命令
/ghostbuster [on|off] —— 仅在 gbEnableDebugger = true 时注册
(FoamFixMod.serverStarting → event.registerServerCommand(new CommandGhostBuster()))。
| 参数 | 行为 |
|---|---|
on |
GhostBusterLogger.debugChunkProviding = true |
off |
GhostBusterLogger.debugChunkProviding = false |
| 无参数 / 非法参数 | 打印当前状态 |
⚠️ 该命令只切换日志开关,不启用任何修复 —— 修复由
gbEnableFixes等配置项在类加载期决定(见 BugfixMod Settings)。 「开着命令但没开修复」是常见误解。
日志落盘
FoamFixMod.serverStopped 调用 GhostBusterLogger.saveLogFile() ——
服务器停止时才写文件。gbDebuggerLogFilePath 为空则输出到 MC 日志文件。
补丁分工
| 补丁 | 目标类 | 机制 |
|---|---|---|
GhostBusterHook |
net/minecraft/world/gen/ChunkProviderServer.provideChunk |
插入 hook 调 GhostBusterLogger.onProvideChunk |
GhostBusterWrapStaticLiquid ×2 |
BlockStaticLiquid(Block.updateTick 与 BlockStaticLiquid.isFlammable) |
包装静态流体方法 |
GhostBusterEarlyReturnPatcher.updateTick ×5 |
见下表 | 在 updateTick 开头插入提前返回 |
5 个 EarlyReturn 目标与递归深度参数
| 目标类 | 第二参数 | 含义 |
|---|---|---|
net/minecraft/block/BlockGrass |
3 |
草方块传播深度 |
biomesoplenty/common/blocks/BlockBOPGrass |
3 |
BOP 草方块 |
net/minecraft/block/BlockDynamicLiquid |
4 |
源码注释 1.7.10 max slope distance |
net/minecraftforge/fluids/BlockFluidClassic |
4 |
源码注释 recursionDepth limit |
net/minecraftforge/fluids/BlockFluidFinite |
1 |
有限流体 |
net/minecraft/block/BlockVine |
4 |
藤蔓 |
表中
BlockFluidClassic属gbFixFluidsModded,其余按对应配置项开关。 第二个参数是递归深度上限,值取自源码实参,不是推测。
⚠️ 第三方目标类
biomesoplenty/common/blocks/BlockBOPGrass 是 Biomes O’ Plenty 的类。
本 mod 无 @Mod 依赖声明(BOP 仅在 gt5 时代可选),
该补丁被 gbFixGrassBOP(默认 true)控制。
若 BOP 未安装,类不存在则补丁不会命中 —— 字节码补丁按类名匹配,
不存在的类不会被加载,因此不会崩;但这是隐式行为,不是显式保护。
相关条目
源码
src/main/java/pl/asie/foamfix/ghostbuster/CommandGhostBuster.javasrc/main/java/pl/asie/foamfix/ghostbuster/GhostBusterLogger.javasrc/main/java/pl/asie/foamfix/ghostbuster/GhostBusterSafeAccessors.javasrc/main/java/pl/asie/foamfix/coremod/GhostBusterHookPatcher.javasrc/main/java/pl/asie/foamfix/coremod/GhostBusterWrapperPatcher.javasrc/main/java/pl/asie/foamfix/bugfixmod/coremod/patchers/GhostBusterEarlyReturnPatcher.java