配布ワールド作成に! 指定範囲内でダッシュを禁止する方法 – マルチプレイや1.8、1.9両方対応【Minecraft】
アスレチック系の配布ワールド作成者の皆さん、ワールドに新しい”縛り”を作ってみませんか? 今回は「ダッシュ」を禁止する – つまりプレイヤーが走れなくなるコマンドを解説します。
指定した範囲のプレイヤーのみに縛りをかけることも可能です。例えばダッシュできる部屋とダッシュできない部屋を作ったりして、あなたが作ったダンジョンに訪れた人を自在に縛り上げましょう!
ダッシュを禁止するってどんな感じ? 範囲を指定して縛れます
アスレチック系の配布ワールド、またはサーバーのマップを作成している皆さん、▲のスクショをご覧ください。ダッシュジャンプすれば溶岩を飛び越えられますが、もしダッシュできなかったら…?
ということで今回は、「いくら頑張ってもダッシュできない」縛りを作る方法を解説します。もちろんマルチプレイにも対応していますので、みんなで集まって遊ぶ際にもご活用下さい。
▲ダッシュできない、というよりはダッシュに「鈍化」の効果を上書きして止めている感じです。走っている感覚はしますが、実際の移動速度は通常の歩行ぐらいになります。
ワールド全域でダッシュを禁止だなんてキツい縛りはいたしません。▲のように、アスレチック内の指定した範囲だけ走れなくすることも可能です。例えば”鉄骨渡り”はダッシュ禁止、など色々な場面で使えますね。
1.8と1.9共通の下準備、scoreboardの作成
ここからは、バージョン1.8もしくはバージョン1.9での仕掛けの作り方を解説していきます。1.8と1.9では作る回路の形は違いますが、どちらのバージョンでも以下のコマンドでscoreboardを作成しましょう。
- ダッシュ禁止の仕掛けを動かすために必要なscoreboardを作成するコマンド
- /scoreboard objectives add sprintTime stat.sprintOneCm 走った時間
新しいscoreboardのオブジェクトを作成します。名前は「sprintTime」、表示名は「走った時間」にします。スコアを数える基準を「stat.sprintOneCm」とすればダッシュの時間がスコアになります。
scoreboardコマンド内に「stat.sprintOneCm」という言葉が出てきましたが、これはscoreboardコマンドの「stat」機能で、プレイヤーのあらゆる行動をスコアにしてくれるんです。Wikiにカウントできる行動が一覧で載っていて、例えば何か食べたら吐き気がするだとか、ジャンプすると死亡する仕掛けなどが作れます。
- プレイヤーの行動をスコアにする便利な「stat」機能の完全ガイド
http://doanryo.com/wp/43129260/
▲だいぶ前の記事なので多少見苦しい部分もありますが、実はstat機能でカウントできる行動一覧の日本語版を書いています。様々な種類の”縛り”を設けてみたい方はご一読下さい。
1.8の場合の仕掛けの作り方。fillクロックを使います
バージョン1.8でこの仕掛けを作る手順を解説していきます。コマンド解説恒例の赤石クロックを使い、横2ブロックのレッドストーンブロックを出現させた後、上下に「1」「2」のコマンドブロックを設置します。
「A」に入力するコマンド |
---|
/fill ~ ~-1 ~ ~1 ~-1 ~ redstone_block |
「B」に入力するコマンド |
/fill ~ ~1 ~ ~1 ~1 ~ stone |
「1」に入力するコマンド |
/scoreboard players reset @a[scoresprintTimemin=2] sprintTime ▲実はこちらのコマンドのほうが後に実行されるので すが、便宜上先に解説します。 先ほど作成した「sprintTime」スコアは、プレイヤーがダッシュすると増えます。これが「2」になったら、sprintTimeスコアをリセットします。走り続けるとスコア増加→リセット を繰り返すんです。 |
「2」に入力するコマンド |
/effect @a[scoresprintTimemin=1] slowness 1 0 true 走り初めようとして、「sprintTime」スコアが1になったプレイヤーに「slowness」、つまり鈍化の効果レベル1を1秒与えます。走り続けるとリセット→増加→リセットを繰り返しますから、延々と足が遅くなります。 |
バージョン1.9での仕掛けの作り方。とてもコンパクトです
バージョン1.8だとクロックのせいで余計な場所を取りますが、バージョン1.9なら▲のように2つのコマンドブロックだけで動きます。「Repeat」「Always Active(常時実行)」等、1.9からのコマンドブロックの設定項目についてはこちらの記事で解説しています。さらに、左のレッドストーンブロックを消せば回路をOFFにもできて便利!
「1」のコマンド | RepeatUnconditional(無条件)Needs Redstone(レッドストーン動力が必要) |
---|---|
/scoreboard players reset @a[scoresprintTimemin=2] sprintTime 「リピート」モードなので常時実行されます。「Needs Redstone(レッドストーン動力が必要)」にしているので、レッドストーンブロックなどの動力がないと以降のコマンドは実行されません。 |
|
「2」のコマンド | ChainUnconditional(無条件)Always Active(常時実行) |
/effect @a[scoresprintTimemin=1] slowness 1 0 true 「チェーン」モードでUnconditional(無条件)なので、「1」に動力が繋がっていれば一緒に動作します。 |
ダッシュ禁止の範囲を指定する方法。一部の場所だけ走れなくする
ワールド内ので、部分的にダッシュ禁止ゾーンを作るには、先ほどのコマンドを実行するターゲットの範囲を絞り込みましょう。走れなくしたい範囲を大きな四角として捉え、北西の端っこを「原点」とします。
原点の座標を調べたら、先ほど解説した「1」「2」のコマンドの四角括弧内に「x=○,y=○,z=○」という形式で追記します。例えば原点がx=100,y=64,z=-200だった場合、コマンド2つは以下のようになります。
/scoreboard players reset @a[scoresprintTimemin=2,x=100,y=64,z=-200] sprintTime
/effect @a[scoresprintTimemin=1,x=100,y=64,z=-200] slowness 1 0 true
次に、さらに「範囲の広がり」を「dx=○,dy=○,dz=○」の形で追記します。例えば原点から東へ13ブロック、上へ5ブロック、南へ9ブロックの範囲でダッシュ禁止にする場合は以下のようなコマンドになります。
/scoreboard players reset @a[scoresprintTimemin=2,x=100,y=64,z=-200,dx=13,dy=5,dz=8] sprintTime
/effect @a[scoresprintTimemin=1,x=100,y=64,z=-200,dx=13,dy=5,dz=8] slowness 1 0 true
SaziumR氏の1.9用ダッシュ禁止機構をご紹介。
今回の「ダッシュ禁止の仕掛け」を作るきっかけになったのは、SaziumR氏が制作したこちらの仕掛けです。DropBoxでダウンロードできます。この機構はバージョン1.9用で、ダッシュをやめると速やかに通常の速度に戻り、動作は完璧! …なのですが、私の力ではマルチプレイやバージョン1.8に対応させられませんでした。
SaziumR氏、素晴らしい機構をありがとうございました。丁寧な解説もあり大変勉強になりました。私もコマンドをもっと使いこなせるようになって、いつかSaziumR氏のものをマルチや1.8にも対応させたいです..
いかがでしたか。この仕掛けを色々な場面で使って頂けたら幸いです。
「これはどうするの?」などコメント待ってます。
最近書いたコマンド解説記事