方块耐久 v2.0(Block Durability):从枪火破障到重炮攻城
当前版本:v2.0.0
支持平台:NeoForge 1.21.1 / Forge 1.20.1
可选联动:TaCZ、Create Big Cannons
代码开源:GitHub v2.0.0
模组下载:Modrinth 发布页
累计下载:5k+
“葡萄美酒夜光杯,你和掩体一起飞。”
在 Minecraft 里,方块面对攻击时通常只有两个结果:瞬间消失,或者毫发无损。
端着枪对墙面倾泻火力,除了粒子效果,墙体可能连一道划痕都没有;RPG 或火炮落下去,爆炸中心以内的普通方块直接消失,仅仅相隔一格的边缘方块却像没被波及;如果对方用黑曜石围了一圈基地,常规爆炸更是很难打开缺口。
方块耐久(Block Durability) 要解决的就是这种割裂感。它给方块加入生命值、裂纹进度和逐渐失效的过程,让“掩体正在被打坏”变成看得见、算得出的结果,而不只是一个全有或全无的开关。
到了 v2.0.0,这个模组不再只服务 TaCZ 的枪械命中。枪弹、范围爆炸和机械动力火炮都被拉进同一套耐久系统,TaCZ 也从必需前置变成了可选联动。
NOTE如果你是从 v1 回来看这篇文章,最需要更新的是两件事:没装 TaCZ 时模组依然可以处理原版及第三方爆炸;配置里新增了独立的
[explosion]分组。
方块为什么需要“血量”
如果把方块看成掩体,那么它至少应该有三个阶段:完整、受损、失效。
原版对大多数攻击只提供最后一个阶段。模组要做的是在中间补上“受损”,让多次命中能够累积。子弹每打中一次就扣一点耐久,爆炸根据距离造成不同程度的伤害,方块则用原版挖矿裂纹展示自己还剩多少余量。
这带来两个直接变化:
- 一堵墙不是被第一发子弹判定一次,而是会在持续火力下慢慢开裂,直到某个位置率先被打穿。
- 爆炸边缘不再只负责添粒子。中心区域可能直接崩碎,外围方块会留下浅裂纹,再挨几轮火力后才彻底倒下。
它不会让所有方块都变成可破坏对象。只有进入白名单的方块才会启用这套机制,既控制玩法范围,也避免把整个世界的方块都塞进耐久计算。
v2.0:爆炸也进入耐久系统
v2.0 的核心改动是接管爆炸后的“余波”。
TaCZ 爆炸物
TaCZ 的 RPG、榴弹等爆炸物现在会根据自己的爆炸范围,对周围白名单方块追加距离衰减的耐久伤害。
原本只造成实体冲击的爆炸,现在也能留下真实的地形破坏:中心区域直接被炸掉,外围方块出现裂纹,需要后续攻击才能彻底破坏。
原版与第三方爆炸
TNT、苦力怕以及其他模组产生的爆炸,仍然保留原本“直接炸毁”的逻辑。已经被原版爆炸选中的方块会正常消失,不会重复扣一次耐久;没有被直接炸掉的范围内方块,则会继续受到余波伤害。
这意味着爆炸不只是向外删掉一圈方块,还会在弹坑边缘继续制造层层裂纹。开启 handleVanillaExplosions 后,这类原版及模组爆炸都会进入同一套余波结算。
掩体开始真的有用
只有距离衰减还不够,否则爆炸容易隔着墙继续伤到后方方块。
模组会从爆炸中心向目标方块做碰撞射线检测。如果路径上存在其他实心碰撞体,冲击波就会被挡住,后方方块不再继续吃这次余波伤害。厚墙、双层墙和专门铺出来的防爆掩体,也就有了实际战术价值。
重炮攻城:机械动力火炮的连续破坏
机械动力火炮的炮弹爆炸同样可以进入耐久结算。
第一发高爆弹落下时,墙面可能出现一大片密集裂纹;接下来的炮弹继续命中同一区域,中心砖石先被炸掉,外围方块的裂纹进一步加深,最后在连续炮火中打开缺口。
这种手感更适合攻城战和派系服:进攻方需要用持续火力覆盖同一片区域,防守方也能通过加厚墙体、增加层数来拖延被打开的时间。
枪火仍然保留:子弹一寸寸啃开掩体
爆炸是 v2.0 的主角,但原来的枪击破坏并没有消失。
TaCZ 子弹命中白名单方块后,会按 damagePerHit 扣除耐久,也可以开启 useBulletDamage,改用子弹自身伤害乘以 bulletDamageMultiplier。受击时同步裂纹、碎屑粒子和打击音效,耐久耗尽后再破坏方块。
栅栏命中的修复
v2.0 当前实现不再依赖 Mixin,而是通过数据包覆盖 tacz:bullet_ignore 标签,把栅栏和栅栏门从忽略列表中移出。铁栏杆和树叶仍然保留在忽略项里。
这样栅栏能正常参与命中与耐久结算,同时尽量少碰 TaCZ 的内部逻辑,整合包里的冲突面也更小。
给方块一个可计算的 HP
模组没有为每种方块手写固定血量。默认情况下,最大 HP 由原版硬度和配置倍率共同决定:
其中 H 是方块的原版硬度,M 对应配置里的 hardnessMultiplier。
默认 hardnessMultiplier = 1.5、minBlockHP = 1.0。所以在默认设置下,黑曜石按 50 × 1.5 计算是 75 HP,而不是直接给成 150 HP。
如果你希望黑曜石成为需要重炮持续轰击的顶级建材,可以在白名单里追加 minecraft:obsidian,再把这次测试的倍率调成 3.0。
[whitelist]blockWhitelist = [ # 保留配置文件里原有的白名单条目 "minecraft:obsidian"]
[hp_calculation]minBlockHP = 1.0hardnessMultiplier = 3.0blockHPOverrides = []代入公式后,黑曜石就是:
在这样的设置下,开启默认爆炸参数,大约需要 20~30 发机械动力火炮的高爆弹才能打穿黑曜石。实际数量会受命中位置、爆炸范围、伤害倍率和服务器配置影响,不需要把测试数字当成固定值。
CAUTION白名单采用覆盖式配置。追加黑曜石时请保留你原有的 Tag 和方块 ID,不要把默认的玻璃、木板等条目一起删掉。
服主和整合包作者能调什么
v2.0 的配置重点不是把强度写死,而是让服务器自己决定破坏节奏。
| 配置项 | 默认值 | 作用 |
|---|---|---|
damageMultiplier | 1.0 | 爆炸造成的耐久伤害倍率 |
maxRadius | 16.0 | 单次爆炸最多扫描的半径,限制大型爆炸的额外开销 |
handleVanillaExplosions | true | 是否处理 TNT、苦力怕和其他模组爆炸 |
healTimeoutSeconds | 120 | 方块停止受伤后恢复满血的时间 |
白名单支持三种写法:
- 方块标签:
tag:minecraft:planks、tag:c:glass_blocks - 精确 ID:
minecraft:obsidian - 通配符:
minecraft:*glass
使用 Tag 时,遵循同一标签规范的其他模组方块会自动纳入白名单。个别方块还可以在 blockHPOverrides 中用 "modid:block_id=hp" 单独覆盖血量。
管理员可以在游戏内动态调整恢复时间:
/gamerule blockDurabilityHealSeconds 60设为 0 就会关闭自愈,让受损裂纹长期留在世界里。配置支持热重载,白名单和 HP 缓存会在重载后更新。
从 v1 升级时
- TaCZ 现在是可选依赖。没有安装 TaCZ 时,模组仍能处理原版和其他模组的爆炸耐久。
master主分支面向 NeoForge 1.21.1,forge-1.20.1分支继续维护 Forge 1.20.1。- 主分支要求 NeoForge
21.1.80+,Forge 分支对应47.3.0+。 - 大型整合包升级前建议备份世界和现有配置文件。旧配置会自动补齐新增项,但每个整合包的爆炸倍率和白名单仍然值得重新检查。
版本、下载与源码
| Minecraft | 加载器 | 文件 |
|---|---|---|
| 1.21.1 | NeoForge | blockdurability-2.0.0-neoforge.jar |
| 1.20.1 | Forge | blockdurability-1.20.1-2.0.0-forge.jar |
项目采用 MIT 协议开源,源码和完整配置说明都在 GitHub。
- Modrinth:下载方块耐久 v2.0.0
- GitHub:zhuimeng1233/block-durability
如果你正在做现代战争、末日生存或阵营对抗整合包,欢迎带着配置和实机反馈来 GitHub 提 Issue。掩体怎样从完整到坍塌,应该由玩法和服务器节奏决定,而不是被一个“炸得掉 / 炸不掉”的开关锁死。