見出し画像

【マイクラ統合版】MOBの敵対距離を伸ばす方法【MOBの索敵範囲が広くなる!】

 マイクラの多くのMOBは、約30マス以内のMOBやプレイヤーにしか敵対しません。距離が離れていれば襲ってくることもなく、一度殴って敵対したとしても少し離れるだけで追ってこなくなります。この距離を広げる方法は日本語で調べた限り存在しません。「マイクラ 統合版」+「敵対距離」「索敵範囲」などで検索しても、関係ない情報が出てきたり、yahoo知恵袋で知ったかぶりをしている人が出てくるだけです。配布ワールドを作っている人のなかには、この仕様に悩まされた方もいると思います。
 しかし私は、RPGを作る過程で敵対距離を広げる方法を発見しました。今回はその方法を共有します。ビヘイビアーパックは必須ですのでご注意ください。ビヘイビアーパックの作り方が分からない方は、小見出し「ビヘイビアーパックを作る」のところに貼ってあるリンク先で学習してください。

ビヘイビアーパックに慣れている人向けの解説

 MOBには「追従距離」のステータスがあり、「"minecraft:follow_range"」で定義されています。名前の通り、追従できる距離の上限のことです。エンダーマンやガストにはこれが広めに設定されていますが、多くのMOBには何も設定されていません。そのため、デフォルトの値(30ぐらい?)が適用されています。これのせいで、"minecraft:behavior.nearest_attackable_target"や"minecraft:behavior.hurt_by_target"内の"max_dist"の値をどれだけ大きくしても、それ以上の距離のエンティティに敵対することができなくなっていました。ですので、この「"minecraft:follow_range"」を設定してあげることで、どこまでも追いかけてくるMOBを作ることができます。

普通に解説

ビヘイビアーパックを作る

 MOBの敵対範囲を広げるには、そのMOBのビヘイビアーファイルを書き換える必要があります。まずはビヘイビア―パックを作成してください。
 ビヘイビア―パックの作り方がわからない場合、以下のリンク先で学習してください。私が説明するよりも絶対に分かりやすいです。「ビヘイビア―パックを作成し、ウシを攻撃的にしよう」という内容ですので、ウシに殴られることに成功すれば今回必要な知識は充分です。
ビヘイビアー パックの概要 | Microsoft Learn

敵対範囲を変更したいMOBのビヘイビアーファイルを入れる

 以下のリンク先で、マイクラ統合版のデフォルトのビヘイビア―パックをダウンロードしてください。ダウンロードしたフォルダの中の「behavior_pack」フォルダ、その中の「entities」フォルダを開いてください。そこにMOBのビヘイビアファイルがあります。
 そこから、敵対範囲を変更したいMOBのビヘイビアフォルダをコピーして、自身のビヘイビアパックの「entities」フォルダにペースト(貼り付け)してください。
Releases · Mojang/bedrock-samples

例としてゾンビのビヘイビア―ファイルを入れているが、実際は自分が変更したいMOBのビヘイビア―ファイルを入れる。

ビヘイビアーファイルを書き換える

 自身のビヘイビアーパックにコピペしたファイルを開きます。ダウンロードしたフォルダのものではなく、自身のビヘイビアーパックにコピペしたものです。
「"components"」と書いてある行を探してください。その行のひとつ下に空白の1行を追加してください。

ゾンビ以外でも同じ位置に空白の1行を入れる。

その空白の1行に、以下のコードをコピペしてください。

"minecraft:follow_range": {
      "value": 80,
      "max": 80
     },

これでモブの敵対範囲の上限が80マスになりますが、この値は必要に応じて変更してください。また、これではまだ上限を設定しただけです。「80マスまで敵対できるにはできるけど、敵対する気はない」みたいな状態ですので、次の設定が必要になります。
 そもそもMOBの敵対条件は主に2種類です。ゾンビがプレイヤーを襲う、オオカミがヒツジを襲う、というように「能動的に敵対する」もの。オオカミに襲われたスケルトンがオオカミに反撃する、温厚なラマを殴ったらツバを吐いて反撃してくる、というように「攻撃されて敵対する」もの。それぞれの条件にも有効範囲が決められています。それぞれの設定方法を解説します。

攻撃されて敵対する範囲を設定する

 「"minecraft:behavior.hurt_by_target"」と書かれた行を探してください。その下に「"priority"」と書かれた行があります。その行のひとつ上に、以下のコードをコピペしてください。

"max_dist": 80,

 数値は距離を表しているので、必要に応じて変更してください。

能動的に敵対する範囲を設定する

 「"minecraft:behavior.nearest_attackable_target"」と書かれた行を探してください。そこに「"max_dist"」と書かれたところがあるはずです。そのうえには、いろいろ書いていますがよく見るとMOBの種類がひとつ、または複数書いています。「そのMOBに対しては、この距離以内なら敵対する」ということです。ですので、例えばプレイヤーに対して遠距離からでも敵対するようにするには、「player」の単語がある場所から次の「"max_dist"」の値を変更します。

ファイルを保存する

 ファイルの書き換えが終わったら、保存してください。これでビヘイビア―パックの編集は完了です。マイクラでビヘイビアーパックを有効にすると、MOBの敵対距離が変わっているはずです。

注意点

  • 敵対距離をどれだけ広く設定したとしても、敵MOBが演算チャンク内にいなければ敵対しません。これは、コマンド「tickingarea」を使って解決できます。逆に、演算チャンク内であれば、描画範囲外であっても敵対し、こちらに向かってきます。

  • 必要な敵対距離に対して+10~20マスぐらいに設定することを推奨します。コマンド「damage」で強制的に敵対させる場合、ノックバックによって敵対範囲外に出る場合があるためです。

  • 敵対距離を極端に広くすると、動作が重くなるかもしれません。私がこの方法を発見する前、敵MOBの敵対距離の短さに難儀しており、ヤケクソで"max_dist"の値を10000にしたのですが、ちょっと離れるだけで敵対が解除されるのはそのままに、動作がカックカクになりました。

【意外と重要】なぜこれを発見できたのか

 ビヘイビアーファイルに"max_dist"や"within_radius"など、距離に関する記述があり、この数値を上げれば敵対範囲が拡大する。普通に考えればそうですが、実際はうまくいきません。他にそれっぽい記述もビヘイビアーファイル内にないため、過去にこれを試した方たちは「できないもの」として諦めていったのでしょう。私も一度は諦めようとしました。
 しかし私は往生際の悪い人間なので、どうにかならないかと考え続けました。その結果、あることに気づいたのです。「エンダーマン、普通あんなにテレポートしてたらすぐ敵対範囲外になって敵対解除することないよな?それは敵対範囲が広いからではないか?」。そこで、エンダーマンのビヘイビアーファイルを探ってみると、「"minecraft:follow_range"」の記述を見つけました。"follow_range"、つまり"追従距離"です。他の多くのMOBにはこれが設定されておらず、デフォルト設定として追従距離が30マス程度になっており、それ以上の距離で敵対することができなかったのです。
 このように、「これしたいけど、できない」となった場合、他のMOBにそれができている者がいないか考えることで、新たな発見が得られることがあります。覚えておいてください。

私の作品の宣伝

 私は、オオカミが一緒に戦ってくれるRPG配布ワールド「英友」を制作しました。共闘がコンセプトであり、マルチプレイにも対応しています。このRPG内に、敵の侵攻から砦を守る「防衛戦」があります。防衛戦となると、敵が遠くからでも砦に向かって侵攻してくれないと困るため、今回の技術が必要でした。リンクを貼っておくので、ぜひ遊んでみてください!また、YouTubeに自作の配布ワールドの紹介やスキルの紹介、実況など、いろいろと上げているので、そちらもチェックしていただけると幸いです。
英友 ~オオカミとの共闘RPG~ | クラフターズコロニー -マイクラの配布サイト-

YouTubeチャンネル
https://youtube.com/@minekohacraft?si=cfUNzXwS6rkaO5vq

 防衛戦での敵MOBは、tpコマンドでむりやり動かすこともできましたが、いろいろと大変ですし、ノックバックしなくなるので、流れてくる敵を攻撃するだけの味気ない戦闘になってしまいます。だからどうしても敵対範囲を広げたかったのです。理由は他にもいろいろありますが、「防衛戦のため」というのが一番大きいです。


いいなと思ったら応援しよう!