TNT逻辑 - 逼真的爆炸物理效果

TNT逻辑 - 逼真的爆炸物理效果

爆炸现在会触发真实的、逐方块的结构坍塌。看着整栋建筑崩塌——一次一个方块。

杂项

TNT Logic Enhanced

TNT Logic Enhanced

炸掉支撑,建筑就会倒塌。

倒塌演示 倒塌演示
倒塌演示 倒塌演示

你一定见过这种场景:你炸掉了一座塔的底部,但塔的其余部分却悬在空中纹丝不动。这个模组解决了这个问题。

每次爆炸后,模组会检查剩余的结构,判断哪些方块仍然有支撑,然后让其余的一切以掉落方块的形式坍塌。炸掉塔的基座,整座塔就会倾倒。炸掉桥墩,桥的中间部分就会塌陷。砍断树干,整棵树连同树叶一起倒下。

爆炸本身保持不变——你得到的还是原版的弹坑。模组所做的一切都发生在爆炸之后。


C v2 的新内容

版本 2 是对坍塌逻辑的重写。第一个版本用来炸东西非常有趣,但对于你真正在乎的世界来说可能过于粗暴。这个版本保留了破坏效果,同时去掉了那些令人头疼的意外。

  • 你的物品还是你的。 箱子、木桶、潜影盒、熔炉、漏斗和其他容器永远不会丢失里面的物品,无论周围的建筑发生了什么。
  • TNT 采矿再次变得安全。 地下的爆炸只会检查真正可能掉落的部分,因此不会卡顿,洞穴顶部也不会塌到你头上。最多只有弹坑正上方少量方块会碎裂。浮空岛的下方也是如此。
  • 基岩稳固。 任何悬挂在基岩或其他不可破坏方块上的东西都会留在原地。
  • 无害的爆炸依然无害。 风弹,以及关闭了 mobGriefing 的苦力怕,不会移动任何一个方块。
  • 有上限。 每次爆炸最多 2500 个方块掉落(可以修改)。超过限制的部分会直接碎裂消失,而不是让地面上铺满成千上万的物品。
  • 巨型浮空建筑会被有意忽略。 一根柱子上的巨大天空基地不会一次性掉落数千个方块。
  • 更新无痛。 如果你的配置仍然保留着 1.x 的旧 STAY 默认值,它只会切换一次为新的 FALL 默认值。如果你在那之后自己设置了 STAY,模组会保留它。
  • 在所有平台上表现一致——Fabric、Forge 和 NeoForge,相同的选项和默认值。

工作原理

当 TNT 爆炸时,模组会检查弹坑周围的方块,以及其上方矗立的建筑,然后问一个问题:这个方块是否仍然有东西支撑?没有支撑的方块就会开始掉落。

它们也不是直直地往下掉。方块会从爆炸点向外倾倒,并在下落过程中散开,起始位置越高,散得越远。一座塔最终会变成地上的一堆瓦砾,而不是紧挨着旧塔形成一根新的柱子。

以下是一些预期效果的示例:

如果你炸掉…… ……会发生什么
一座高塔的基座 整座塔倒塌,包括顶部
一栋完好房屋旁边的位置 出现一个弹坑和少量松散方块——房屋完好无损
一座桥的中间桥墩 中间出现缺口,两端仍然架在桥台上
悬挑结构下方唯一的支柱 悬挑结构完全坍塌
一堵又长又厚的墙的底部 缺口上方的所有东西都掉落,边缘整齐——不会留下悬空的桥段,也不会留下细柱子
一棵树的树干 树连同树叶一起倒下;旁边的那棵树不受影响
地下 15 格处的一个房间 你会得到一个小洞穴,地面上的房屋毫无察觉
地基下方同时引爆多个 TNT 房屋倒塌,没有任何东西悬空

什么能支撑建筑

一个方块只有在直接或通过其他方块支撑于坚实地面或基岩等不可破坏方块上时,才能保持不落。而且并非每个方块都能承受相同的重量:

支撑物 大致可承载
完整方块(石头、木板、泥土……) 35 个方块
墙 15 个方块
台阶、楼梯和其他非完整方块 10 个方块
栅栏 6 个方块
铁栏杆 5 个方块
玻璃 3 个方块

所以,一整块地板架在一根栅栏柱上,一旦下方其他支撑都没了,它是撑不住的。

有些方块完全不能支撑任何东西:

  • 火把、花、草、地毯、告示牌——任何你可以穿过的方块。一根梁放在火把上和放在空气中掉落的結果是一样的。
  • 树叶。 一栋恰好挨着树的房屋不会被树支撑。
  • 容器。 地板下面的箱子不会让房屋保持站立。

容器

容器永远不会承载建筑,也永远不会丢失里面的内容物。失去支撑的容器会怎样,由你通过 containerCollapseMode 决定:

模式 效果
FALL(默认) 随建筑一起掉落,物品仍在里面
STAY 留在原地,内容物不受影响
BREAK 被破坏并掉落物品(潜影盒会像原版一样保留里面的物品)

被爆炸直接击中的容器与原版行为完全一致。


细节

  • 床、门、高花和伸出的活塞不会以半块的形式落地。它们会整体破碎并只掉落一个物品。
  • 掉落的方块落在台阶、楼梯、栅栏、墙、火把、灯笼、营火、花、地毯、雪层、玻璃或树叶上时,会将其压碎并取代它的位置。不会产生任何复制。
  • 靠近爆炸的玻璃会碎裂。

配置

  • Forge / NeoForge: config/tntlogic-common.toml
  • Fabric: config/tntlogic.json
选项 默认值 作用
maxFallingBlocksPerExplosion 2500 每次爆炸可以掉落多少方块(10-10000)
enableLargeStructuresCollapse true 掉落的方块会向两侧散开;关闭后它们会直直下落
physicsScatteringForce 0.2 方块被抛向两侧的距离(0.0-2.0)
instabilityRadius 5 距弹坑多远范围内检查支撑(1-15)
maxCollapseRadius 32 高建筑坍塌的最大影响范围(1-64)
scanHeightAboveExplosion 16 弹坑上方检查多少格(4-64)
looseBlockChance 0.35 弹坑正上方悬空的方块(例如洞穴顶部)掉落的概率。设为 0 可关闭
dropExcessBlocksAsItems false 超过上限的方块以物品形式掉落而非碎裂(可能卡顿)。容器始终会掉落其内容物
containerCollapseMode FALL FALL、STAY 或 BREAK——参见上文“容器”

注意事项

有了这个模组,TNT 不再只是采矿工具——在错误的地方引爆一次就可能让整栋建筑倒塌。请谨慎使用,在尝试大动作之前备份你的世界。

如果你想让体验更加真实,可以把 TNT 当作稀有而珍贵的东西。以它现在的能力,也许它甚至值得一个更难的合成配方。明智地使用它,否则就看着你的世界崩塌吧。