爆発ダメージの無効化
方法の比較
ダメージの発生経路に応じて制御を選びます。通常のエンティティ・投射物の爆発は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メタデータを追加しても無効化できません。不要なパワーはボス定義とEliteMobPowers.ymlの自然スポーン用リストから削除してください。カスタムLuaパワーは、同じベース名のYAMLメタデータで読み込みを無効化できます。独立したLuaパワーを参照してください。爆発パワーを有効にしたまま地形を保護する場合は、追跡対象の通常投射物爆発か直接のブロック編集かに応じて保護方法を選びます。
EliteMobs爆発再生の設定
plugins/EliteMobs/config.ymlを編集します。既定で有効な再生では、登録されたブロックが約1分後に修復を始めます。除外設定やリージョンの再生フラグも適用されます。
エリート、追跡対象の投射物、模擬爆発による爆発をこの処理が引き受けた場合、EliteMobsは自分でブロックを除去し、通常の爆発のブロック一覧を空にします。そのため、破壊されるのはEliteMobsが記録したブロックだけです。EliteExplosionEventをキャンセルするプラグインは、その爆発によるブロックダメージ全体をキャンセルします。
修復は1ティックに1ブロックずつ、低い位置のブロックから順に行われます。修復中のブロックの中にエンティティが立っている場合は、そのブロックの上へ持ち上げられます。その経路が塞がれている場合、修復は待機して次のティックで再試行します。ワールドがアンロードされるときは、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、再生フラグ、コンテナ除外を確認します。修復できたことは、破壊を防げた証拠にはなりません。