禁用爆炸伤害
方法对比
| 方法 | 作用范围 | 影响原版怪物 | 影响 EliteMobs | 推荐 |
|---|---|---|---|---|
| /gamerule mobGriefing false | 全局 | 是 | 可能不影响* | 仅用于原版怪物 |
| WorldGuard elitemobs-explosion-block-damage | 按区域 | 否 | 是 | 选择性保护的最佳方案 |
| doExplosionRegen: false | 全局 | 否 | 是(阻止恢复) | 想要永久性破坏时使用 |
*由于采用了自定义的爆炸处理机制,mobGriefing 对 EliteMobs 是否生效尚未确认
禁用方块破坏
使用 gamerule
运行命令 /gamerule mobGriefing false。这可以阻止原版怪物爆炸造成的方块破坏。
警告: 由于 EliteMobs 采用了自定义的爆炸处理机制,此命令可能不会影响 EliteMobs 的爆炸。EliteMobs 的爆炸有自己的恢复系统。请使用下方专门针对 EliteMobs 的方法以获得可靠的效果。
使用 WorldGuard
在你的 WorldGuard 区域中将 EliteMobs 自定义 WorldGuard 标志 elitemobs-explosion-block-damage 设为 deny。这可以阻止 EliteMobs 的爆炸破坏方块。
注意: 这需要同时安装 EliteMobs 和 WorldGuard。这是由 EliteMobs 注册的自定义标志,并非标准的 WorldGuard 标志。它只影响 EliteMobs 的爆炸,不影响原版怪物。
阻止 EliteMobs 火球破坏方块
EliteMobs 的火球技能(如 attack_fireball 和 tracking_fireball)是位于 plugins/EliteMobs/powers/ 文件夹中的 Lua 脚本。这些内置 Lua 技能没有逐个技能的 isEnabled 开关——阻止其方块破坏的推荐方式是使用下方支持的某种方块破坏控制手段:
- 按区域: 将 WorldGuard 标志
elitemobs-explosion-block-damage设为deny(参见上方的 WorldGuard 部分)。这会阻止 EliteMobs 的爆炸在该区域内破坏方块,同时仍允许技能的其余效果(击退、对实体的伤害)。 - 全服清理: 保持
doExplosionRegen: true(默认值),这样任何被破坏的方块都会在约一分钟后自动恢复,使破坏只是暂时性的。
配置 EliteMobs 爆炸恢复
EliteMobs 的爆炸会在爆炸后约 1 分钟自动开始恢复方块。你可以在 config.yml 文件中控制此行为:
- 打开
plugins/EliteMobs/config.yml - 找到以下设置:
doExplosionRegen:设为false以阻止方块恢复(方块保持被破坏状态)doRegenerateContainers:设为false以阻止箱子/容器恢复
注意: 如果 doExplosionRegen 为 true(默认值),方块会自动修复,使爆炸破坏只是暂时性的而非永久性的。
其他爆炸/火焰技能
EliteMobs 自带若干会造成爆炸或火焰的其他技能。它们都是位于 plugins/EliteMobs/powers/ 文件夹中的 Lua 脚本:
末影龙技能:
ender_dragon_aimed_fireball.luaender_dragon_disco_fireballs.luaender_dragon_fireball_bombardment.luaender_dragon_ender_fireball_bombardment.lua
其他爆炸技能:
gold_explosion.luaarrow_fireworks.luafireworks_barrage.lua
基于火焰的技能:
firestorm.luaflame_pyre.luaflamethrower.luaattack_fire.lua
与火球技能一样,这些内置 Lua 技能也没有逐个技能的 isEnabled 开关。要阻止它们造成的方块破坏,请使用 WorldGuard 的 elitemobs-explosion-block-damage 标志,或上文所述的爆炸恢复设置。
区域爆炸控制(需要 WorldGuard)
如果你只想在特定区域禁用爆炸:
- 安装 WorldGuard 插件
- 创建或选择一个 WorldGuard 区域
- 设置 EliteMobs 自定义标志:
/region flag <region-name> elitemobs-explosion-block-damage deny
这只会阻止 EliteMobs 的爆炸在该区域内破坏方块,而其他地方的爆炸仍然正常。
疑难解答
如果设置 WorldGuard 标志后方块仍被破坏:
- 确认该区域确实覆盖了发生爆炸的地点(用
/region info检查) - 确认标志已设为
deny:/region flag <region-name> elitemobs-explosion-block-damage deny - 确保同时安装并加载了 EliteMobs 和 WorldGuard(检查启动日志)
- 检查服务器日志中是否有 EliteMobs 或 WorldGuard 的错误
如果方块被破坏后不再恢复:
- 检查
doExplosionRegen是否已启用——方块会在爆炸后约 1 分钟开始恢复 - WorldGuard 标志会完全阻止区域内的方块破坏;爆炸恢复只控制对已发生破坏的清理
- 若要在整个服务器范围内永久保护方块,请在 config.yml 中设置
doExplosionRegen: false