禁用爆炸伤害
方法对比
应根据破坏路径选择控制方式。原生实体或投射物爆炸使用 EntityExplodeEvent;EliteMobs 的 WorldGuard 方块破坏标志会清空受跟踪精英或投射物事件的方块列表。模拟爆炸和脚本可以直接修改方块。再生仅修复已记录的破坏,不是通用方块保护。
禁用方块破坏
使用 gamerule
/gamerule mobGriefing false 控制原版生物破坏环境的行为,不拦截插件或脚本直接修改方块。
使用 WorldGuard
安装 EliteMobs 和 WorldGuard 后,将区域的 elitemobs-explosion-block-damage 设为 deny。它保护上述受跟踪的原生爆炸事件路径,不拦截任意 Lua/EliteScript 方块编辑,也不覆盖所有模拟爆炸调用。请在受保护区域检查实际使用的技能。
阻止 EliteMobs 火球破坏方块
内置技能是 plugins/EliteMobs/powers/ 下的 Lua 脚本。发现自定义技能后,内置技能的注册项会重新应用,因此添加含 isEnabled: false 的 YAML 元数据文件并不能禁用内置技能。请从 Boss 定义和 EliteMobPowers.yml 的自然生成技能池中移除不需要的技能。对于自定义 Lua 技能,同名 YAML 元数据可以禁用其加载;参见独立 Lua 技能。如需保留爆炸技能并保护地形,应根据它使用受跟踪的原生投射物爆炸还是直接修改方块来选择控制方式。
配置 EliteMobs 爆炸恢复
编辑 plugins/EliteMobs/config.yml。再生默认启用,已记录的方块约一分钟后开始修复;排除项及区域再生标志仍然生效。
当处理器接管来自精英怪、受跟踪投射物或模拟爆炸的爆炸时,EliteMobs 会自行移除方块,并清空原生爆炸的方块列表,因此只有它记录的方块会被破坏。若有插件取消 EliteExplosionEvent,则会取消整场爆炸的方块破坏。
修复时每刻恢复一个方块,从最低的方块开始。站在正被恢复的方块内的实体会被抬到该方块上方;如果这条路径受阻,修复会等待并在下一刻重试。世界卸载时,EliteMobs 会先立即恢复其中所有待修复的方块;如果仍有方块无法放置,则取消卸载。正在被删除的实例副本世界会跳过这一步。
doExplosionRegen: 设为false会禁用此再生处理。原生爆炸仍可能破坏方块而不进行修复。使用此处理的模拟或脚本爆炸会在直接移除方块前返回。doRegenerateContainers: 设为false可让处理器接管的爆炸不影响容器,使其既不被破坏也不被恢复。当处理器被绕过时,例如设置了doExplosionRegen: false或将elitemobs-explosion-regen标志设为deny,原生爆炸仍可能破坏容器。
其他爆炸/火焰技能
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
选择保护规则前,请检查每个技能的脚本。启用再生不会阻止最初的方块破坏;修改一个技能也不会改变其他产生类似效果的脚本。
区域爆炸控制(需要 WorldGuard)
安装两个插件,并创建覆盖目标区域的 WorldGuard 区域。对受跟踪的原生爆炸运行:
/region flag <region-name> elitemobs-explosion-block-damage deny
疑难解答
检查实际技能使用原生事件还是直接修改方块。对于原生事件,确认区域覆盖爆炸位置、标志为 deny,且两个插件已加载。未修复时,检查 doExplosionRegen、再生标志及容器排除项。修复成功不能证明方块破坏被阻止。