NAPOAN.COM by マイクラ思考 
/ UPDATE :

人やMobを通り抜けるには。エンティティの当たり判定を設定するコマンドの解説

エンティティの当たり判定を設定するコマンド

バージョン1.9の大きな変更の一つに、「プレイヤーやMobが当たった時、お互いを押すようになった」点があります。このままでは、既存のコマンドを使った仕掛けや、マルチプレイなどで予期せぬ事故が起こる可能性もあります。でも安心して下さい。この当たり判定は、とあるコマンドの機能を使えば無効化できます。今回は、バージョン1.9でエンティティ同士が押すか押さないかを設定する方法を解説します。

[2019年9月2日] 1.13以上のバージョンに対応させました

バージョン1.9の、コマンドや配布ワールド作成に関する新機能/変更点まとめ
1.9のコマンド関連まとめ
https://napoan.com/wp/pcversion19-command-guide/

▲バージョン1.9はコマンドに関する新要素/仕様変更が盛り沢山。

 

1.9で、エンティティ同士が接触した際跳ね返されるようになりました

バージョン1.9では貫通せず押してしまう

Minecraft1.9の当たり判定に関する仕様変更は、こちらの一枚を見れば一目瞭然ですね。つまりは貫通しなくなったんです。例えばマルチプレイで他のプレイヤーを通り抜けることはできませんし、反対に村人など他のエンティティに押されることもあるのです。

既存の配布ワールドへの影響が心配

些細な変更に思えるかもしれませんが、クリエイターとしてではなくプレイヤーとして遊んでみると違いがよく分かります。ゾンビをするっと通り抜けられないもどかしさ。ダンジョンやアスレチック系の配布ワールドの難易度が大きく変わってしまいそうで心配です...


まだ貫通する方法はあります

でも安心して下さい。バージョン1.9でもエンティティを通り抜ける方法が用意されているんです。コマンドをちょっと打つだけでこの通り。プレイヤーも、村人も、ゾンビも、もう押されることも押してしまうこともありません

 

チームごとに接触時の挙動を設定して、貫通/非貫通を切り替える方法

さて、これからMobやプレイヤーの接触時の挙動(貫通するか否か)を設定するわけですが、ただコマンドを羅列しただけではつまらないですのでざっと作業の流れを説明します。

当たり判定の設定方法

エンティティの当たり判定を設定する、となるとNBTタグやらが出てきそうですが、今回は出てきません。summonコマンドもentitydataコマンドも使いません。使うのはscoreboardコマンドのチーム機能だけです。先に"チーム"を用意して、そのチームのオプションを変更することで当たり判定を設定するんです。

 

1.9の新しいチームルール「collisionRule」の設定内容

まずは"チーム"を作成します。PvPなどで既にチームを作成している場合はそのままで大丈夫です。

チームを新規作成するscoreboardコマンド
/team add チーム名 (表示名)
▲「チーム名」は半角英数字を使って下さい。

そのワールド/サーバーで特別にチーム分けをしていない場合は「当たり判定を無効化するためのチーム」なので、チーム名は「noCollision」「noPush」などが分かりやすいですね。他と被ってもいけませんし。

 

さて、いよいよ作った(作ってある)チームに当たり判定の設定をしますよ!

チームに所属するエンティティの当たり判定(接触時の挙動)を設定するコマンド
/team modify チーム名 collisionRule 設定内容
collisionRuleの「設置内容」一覧
alwaysデフォルトの値です。チームに所属しているプレイヤー、Mob等の当たり判定を持つエンティティはお互いに押し合います。
neverチームに所属している、本来押し合うものも含め全てのエンティティは貫通できるようになります。つまり1.8までの通り抜ける仕様になります。
pushOwnTeam同じチームに所属しているエンティティだけを押せます。
pushOtherTeams他のチームのエンティティだけを押せます。

 

結論から言いますと、チームを作って/scoreboard teams option チーム名 collisionRule neverで通り抜けられるようになるんです。これがバージョン1.9の新しいチームオプション「collisionRule」。

 

チームにプレイヤーやMob等のエンティティを参加させるコマンド
/team join チーム名 ターゲット(@p等のセレクタやプレイヤー名)

例: 近くのゾンビ1体を「noCollision」チームに参加させる
/team join noCollision @e[type=Zombie,c=1]

接触時の挙動を設定したチームに、プレイヤーやMobを参加させるわけですが、一つのエンティティは複数のチームに同時に所属することはできませんのでご注意下さい。既にPvP用などのチームがある場合、既存のチームに対して当たり判定の設定をすればOKです。

片方だけ当たり判定をなくせばOK

貫通させたいエンティティを両方チームに参加させる必要はありません。片方のエンティティのチームが貫通する設定になっていればお互い通り抜けられます。

 

エンティティを最初から当たり判定の無い(貫通する)状態で召喚するには

最初からチームに所属した状態で召喚するには

当たり判定の設定はチームごとに設定するので、例えばダンジョン系の配布ワールドで「ゾンビが召喚される」などの仕掛けでいちいちMobをチームに参加させるのは大変面倒ですね。そこで、最初から当たり判定の無いチームに参加した状態で召喚しましょう。

最初から当たり判定の無いチームに所属した状態でエンティティを召喚するコマンド
まず、チームの作成と跳ね返し無効化:
/team add 当たり判定無効化用のチーム名 (表示名)
/team modify チーム名 collisionRule never

次に、エンティティ召喚時にチームを指定!
/summon エンティティID 座標x y z {Team:"チーム名"}

先に当たり判定を無効化するエンティティのためのチームを作っておいて、NBTタグ「Team」を使って、エンティティの所属チームを指定します。実にシンプル。

 


 

ということで今回のコマンド解説はここまで。最後までお読み頂きありがとうございました。そういえば「最近書いた記事」コーナーはやめました。代わりに左(メニュー)の関連記事をチェックして頂ければ幸いです。

Tweet

コメント

記事の内容が最新のものと異なる場合があります。ご了承ください。

“人やMobを通り抜けるには。エンティティの当たり判定を設定するコマンドの解説” への16件のフィードバック

  1. 名無しのクラフター より:

    これでいつかの村人式右クリックアイテム1.9でも使えるように・・・!
    さんありがとうございます!

  2. おれは思った あのクリックアイテム1.9でやるとどうなるのか

  3. Chespin_2015 より:

    おそらくゲッ☆タンするんじゃないかな?

  4. 2001 Y より:

    毎回毎回関係ないことばかりコメントしてしまっていますが、少し字が小さくないですか?
    もう少し大きくてもいい気がします。
    あくまで、私的感想ですので、お気になさらず。

  5. 匿名 より:

    どんな端末で読まれているのか教えて頂けないでしょうか。確かに大きなスマホやタブレットだと小さいですね…

  6. 匿名 より:

    横400px以下の端末で文字を小さくするようにしていたのですが、やめました。タブレットと同じ基本13pxの大きさで表示されます。ご指摘ありがとうございました。

  7. たいやき より:

    おもしろいwww(画像が)

  8. NIKOWARA より:

    そんなコマンドあったんだ!
    安心(^^)♪

  9. 2001 Y より:

    いえいえ、返信遅れてしまい申し訳ありませんでした。
    ちなみに、思ったのは、iMacとiPadminiでの表示です。

  10. ookiikuma より:

    collisionRuleの「設置内容」一覧の所ですが
    pushOtherTeamsとpushOwnTeamsが逆だと思います

  11. 匿名 より:

    http://minecraft.gamepedia.com/Scoreboard#Command_reference
    ▲Wikiの解説を再確認しましたが、
    「When set to “pushOwnTeam”, players will only push other players on their team and mobs. 」
    ということでpushOwnTeamは「それぞれのチームの他のプレイヤーを押せる」
    「When set to “pushOtherTeams”, players will only push players on opposing teams. 」
    pushOtherTeamsは「対立するチームのプレイヤーを押せる」
    とあります。記事内の説明は合っているはずなのですが…

  12. ookiikuma より:

    16w05bと16w06aで試してみましたがpushOwnTeamの時は他のチームのプレイヤーのみ押せて,
    pushOtherTeamの時は同じチームのプレイヤーのみ押せました。
    バグなんでしょうかねえ

  13. でんでん より:

    1.9~の場合
    「/scoreboard teams join チーム名 @e」
    をリピートコマンドブロックに入力すればエンティティを全てチームに入れられますよ。

  14. 匿名 より:

    リピートじゃなくても、一回実行すれば全てのエンティティがチームに入りますよ。

  15. はげ より:

    チームのプレイヤーからの攻撃をうけなくするにはどうしたらいいですか?

ookiikuma へ返信する コメントをキャンセル

メールアドレスが公開されることはありません。