[FIX] 瑞克穆德的营地地块实体

[FIX] 瑞克穆德的营地地块实体

修复了与Rikmuld的露营模组有关的tile_entity崩溃问题。提供了用于试运行的配置。

Bug修复

一个非常简单的模组,如果没有Rikmuld的露营模组在你的整合包中,它自身什么都不会做(实际上会被禁用)。



问题:

当另一个世界生成模组(例如失落城市)在帐篷的TileEntity已被放置后,覆盖或移除了其下方的方块时,露营模组的帐篷可能会与世界不同步。这个孤立遗留的TileEntity会持续尝试对一个已不存在的方块进行tick,在TileEntityTent#update内部抛出scala.MatchError,导致每次该区块加载时服务器崩溃——这会对任何受影响的区块造成永久性的崩溃循环,除非手动编辑存档,否则无法恢复。

功能特性:

  • 区块加载时自动清理 — 在受影响的区块加载时,立即静默移除孤立的TileEntityTent实例,使其永远不会被tick,从而彻底防止崩溃。

  • 追溯修复 — 可修复在安装本修复模组之前生成的世界和区块,无需新建世界。

  • 软依赖 — 通过反射在运行时检测露营模组;如果未安装则不做任何操作,无需硬依赖。

  • /tentghostfix scan — 一个仅限管理员使用的命令,强制扫描已保存到磁盘的所有区块(直接读取区域文件),报告整个世界中找到并移除的幽灵帐篷的确切数量,而无需等待玩家意外触发到它们。

  • dryRun 配置选项 — 如果你想在自己的世界中先验证行为,可以运行扫描或让被动钩子以仅审计模式运行(记录检测结果而不移除任何内容)。



    💙 如果你想支持我的工作并喜欢我所做的事情,可以在这里给我打赏。 🧡

    (这当然是可选的,但如果你这样做,我将非常感激!)