更新日:
1. Java版1.21.9以降:ゲームルールで切りかえる
/gamerule pvp false
これだけで、ワールド全体でプレイヤーがほかのプレイヤーにダメージを与えられなくなります。元に戻すときは true にします。1.21.11でほかのゲームルールの名前が変わりましたが、pvp は同じ名前のままです。サーバーでも、OP権限があればゲーム中に切りかえられます。
2. Java版1.21.8以前のサーバー:server.properties
pvp=false
1.21.8以前のサーバーでは、サーバーのフォルダにある server.properties の pvp を false にして、サーバーを再起動します。1.21.9でこの設定はなくなり、1のゲームルールに変わりました。設定ファイルの書き方は server.propertiesのおすすめ設定 を見てください。
3. どのバージョンでも使える:チームで攻撃を止める
/team add peace "なかよし"
/team modify peace friendlyFire false
/team join peace @a
同じチームの人どうしは攻撃できない、というチームの設定を使う方法です。1.21.8以前の1人用ワールドやLANのように、server.properties がないときにも使えます。あとから入った人もチームに入るように、次のコマンドをくり返しコマンドブロック(常時実行)に入れておきます。
/team join peace @a[team=]
team= は「どのチームにも入っていない人」という意味です。チームの使い方は teamコマンドの使い方 にまとめています。
4. 決まった場所だけPvPできるようにする(くり返し)
/team leave @a[x=100,y=60,z=200,dx=30,dy=20,dz=30]
/execute as @a[team=] unless entity @s[x=100,y=60,z=200,dx=30,dy=20,dz=30] run team join peace @s
3のチームを作ったうえで、1行目をくり返しコマンドブロックに、2行目をチェーンに入れます。アリーナの範囲に入った人はチームから外れて戦えるようになり、外に出るとまたチームに入って攻撃できなくなります。範囲の決め方は 範囲に入ったら発動するコマンド を見てください。
チームに入っていない人からチームの人への攻撃は止まらないので、アリーナの中から外の人をたたけないように、アリーナはさくや壁で囲んでおきます。
5. 統合版の場合
/gamerule pvp false
統合版には前から pvp のゲームルールがあり、同じ書き方で切りかえられます。ワールドの設定画面の「フレンドリーファイア」をオフにしても、同じようにプレイヤー同士で攻撃できなくなります。
うまくいかないときの確認ポイント
- gamerule pvp がエラーになる:Java版1.21.8以前にはこのゲームルールがありません。2か3の方法を使います。
- server.properties を変えても効かない:サーバーを再起動したか、バージョンが1.21.9以降でないか確認します。
- チームの人どうしで攻撃できてしまう:
friendlyFire falseを設定したか、/team list peaceで全員が入っているか確認します。
よくある質問
モブからのダメージも止まりますか?
止まりません。pvp はプレイヤー同士の攻撃だけです。モブからのダメージも止めたいときは、耐性のエフェクトや無敵になるコマンドを使います。
一部の人だけ攻撃できなくできますか?
攻撃できなくしたい人たちだけを同じチームに入れ、friendlyFire を false にします。
ミニゲーム中だけPvPをオンにできますか?
ゲームを始めるコマンドに gamerule pvp true を入れ、終わるときに false に戻します。