Feature NBT Deadlock Be Gone

Feature NBT Deadlock Be Gone

修复由https://bugs.mojang.com/browse/MC-246262导致的死锁问题

世界生成

本模组的唯一目标是修复仅存在于 1.18 MC 中的这个漏洞:https://bugs.mojang.com/browse/MC-246262


该漏洞发生在世界生成期间将 NBT 结构放置到世界中时,如果该结构替换了任何类型的方块实体(如刷怪笼、箱子、 lectern、床、告示牌等),可能会导致游戏死锁。这……很糟糕。你的游戏会卡死并冻结,刻(Tick)不再运行。

问题的根源在于,用于在世界中放置结构方块的方法不具备世界生成安全性,内部使用了错误的世界对象。本模组修复此漏洞的方式是:当传递给 NBT 放置方法的世界是 WorldGenRegion 类时,直接跳过对这些不安全方法的调用。更多信息和深入细节请参见上述漏洞报告。

对于模组开发者而言,此漏洞可能更频繁地出现,因此将此模组作为预防措施安装可能是个好主意。

此漏洞不会出现在 1.17.x 及以下版本中,并在 1.19 及以上版本中已修复。它似乎只存在于 1.18.x 版本中。


模组开发者:

要在开发环境中使用,请将以下内容添加到 build.gradle 的 repositories 块中:

    maven {

       // FeatureNBTDeadlockBeGone

       url "https://nexus.resourcefulbees.com/repository/maven-public/"   

    }

然后,在 build.gradle 的 dependencies 块中添加:

 FORGE(Forge):

    `runtimeOnly fg.deobf("com.telepathicgrunt:FeatureNBTDeadlockBeGone-Forge:2.0.0+1.18.2")`

 FABRIC(Fabric):

    `modRuntimeOnly "com.telepathicgrunt:FeatureNBTDeadlockBeGone-Fabric:2.0.0+1.18.2"`

 QUILT(Quilt):

    `modRuntimeOnly "com.telepathicgrunt:FeatureNBTDeadlockBeGone-Quilt:2.0.0+1.18.2"`

将 2.0.0+1.18.2 更改为你想要的版本。