どうもどうも! EIEIです!
今回は突然始まる新シリーズ、「楽しいコマンド講座」の第1回ということで!
コマンドの力を使って、空中ジャンプを実装してみようと思います!
唐突に新シリーズを始めるんだね!? しかもコマンド。
EIEIさん、マイクラを4年ほどやっているのですが、コマンドはいまいち詳しくないので、
僕がコマンドを触って練習して、それを皆さんにお届けできたらと思い! とりあえず#1書いてます(笑)
コマンドを触ったことがない人でも、実践できるレベルで丁寧に書いていきますので、よろしくお願いします♪
そして、今回作りますのが空中ジャンプ!
物理法則に逆らって、高い場所に飛び乗ったり、落下ダメージを防いだり… という使い方ができます♪
本日もLet’sマイクラ!
※この記事で使用しているコマンドは、Java版1.18.2のものです。
今回使うレッドストーン回路!
記事のタイトルに「講座」とか偉そうに書いていますが、
コマンドオンリーで空中ジャンプを作る技術力が、EIEIさんにはないので…
レッドストーン回路にも少し助けていただきます!
下の画像のようなレッドストーン回路を組みました!
回路を作る時は、レッドストーンリピーターの向きに注意してください。
また、コマンドブロックがいくつも連なっているものに関しても、向きに注意してください!
画像のように、とがっているものが次のコマンドブロックの方向を向いている必要がありますね!
そして、遅延の大きさは基本何でもいいですが、必ず「遅延A ≦ 遅延B」にしてください。
画像では、遅延Aが1遅延、Bが8、Cが11となっています!
次のコマンドをチャット欄に入力して、実行することでコマンドブロックを入手できます!
/give @p minecraft:command_block 1
記事内の青い枠の中には、コマンドの詳細だったり、補足情報を書きこんでいきますので、
「とにかく真似して作ってみたい!」という方は読み飛ばしてもらって構いません(笑)
コマンドに詳しくなりたい方などがいましたら、読むと… もしかしたら賢くなれるかも?
それでは、いよいよコマンドを打ち込んでいきましょう!
コマンドを使って空中ジャンプを実装!
今回作る空中ジャンプの仕様
今回作る空中ジャンプは、次のようにします!
- ニンジン付きの棒を持ったまま右クリックをする
- パーティクルを表示して、プレイヤーに浮遊のエフェクトを与える
- 遅延Aだけ待った後、プレイヤーの浮遊のエフェクトを解除する
- 遅延Bだけ待った後、再使用が可能になる
- 遅延Bと遅延Cを合わせた間、落下ダメージを無効化する
文字に起こすとなんだかややこしいですが、
大して難しいことはしていないですね!
短い時間だけ、「浮遊」を付与することで、ジャンプっぽくします!
もしかしたら、浮遊を使わないで空中ジャンプを実装する方法があるかもしれませんが、
EIEIさんは思いつきませんでした!
スコアボードのコマンドを作る
今回は、「ニンジン付きの棒を右クリックした時」というのを読み取らなければいけません。
この時に活躍するのが、「スコアボード」と呼ばれる、コマンド界にて超便利なものです!
まずは、スコアボードを作りましょう!
スコアボードは、中に値が入っています。
この値は、さまざまな動作などに紐づけをして、増やすことができます!
スコアボードを作りたいので、まずはチャット欄で次のコマンドを実行してください。
/scoreboard objectives add CarrotUsed minecraft.used:minecraft.carrot_on_a_stick
このコマンドは、「ニンジン付きの棒を右クリックした時に値が増える、『CarrotUsed』というスコアボードを作れ」って意味です。
「CarrotUsed」のところには、スコアボードの名前が入ります。
英語や数字ならば好きな名前で大丈夫ですよ!
これを実行しても、特に画面に何か表示される、とかは起きませんが、
見えないところでスコアボードが作られているので安心してください。
次は、常にこのスコアボードの値を0にするコマンドを作ります!
常に0にしたほうが、製作上都合がいいので(笑)
「ニンジン付きの棒を右クリックしたら増えるスコアボード」を常に0にします。
すると、右クリックされた時、一瞬だけ1になってまた0に戻ります!
この「一瞬だけ1になる」というのがポイント。
2以上になることもなく、0か1だけに絞れて作りやすくなります!
リピート、無条件、常時実行のコマンドブロックに、次のコマンドを設定します。
scoreboard players reset @a CarrotUsed
「全プレイヤーの、『CarrotUsed』の値をリセットする」って意味ですね!
これでスコアボードの準備ができました!
この段階では何やっているか分からないと思いますが、
これで良い感じに準備が整いました!
お次は肝心の「右クリックされたとき」の部分です!
右クリックされたときに実行されるコマンド!
いつ右クリックされてもいいように、右クリックされたかどうかを調べるコマンドを、常に実行します。
リピート、無条件、常時実行のコマンドブロックに次のコマンドを打ってください!
execute at @a[scores={CarrotUsed=1}] if block -202 -54 184 minecraft:air run setblock -202 -54 184 minecraft:redstone_block
このコマンドが、一番長くて複雑そうだね!
ここで、万能コマンドのexecuteを使っています!
executeは、「もし~なら」とか「この場所で」とか、いろいろな状況を指定できる便利コマンドです!
最初のほうにあるat @a[scores={CarrotUsed=1}]
の意味は、
「『CarrotUsed』の値が1のプレイヤーの場所で実行する」、すなわち「ニンジン付きの棒を右クリックしたプレイヤーの場所で実行する」
次のif block -202 -54 184 minecraft:air
は、
「もし、(-202 , -54 , 184)が空気ブロックならば、~する」
そして最後についているコマンド、run setblock -202 -54 184 minecraft:redstone_block
は、「(-202 , -54 , 184)をレッドストーンブロックにする」となっています!
なんでわざわざ、空気ブロックじゃないと実行されないようになっているかと言うと、連続で使えないように、クールタイムを作るためです!
「右クリックされた」「クールタイムじゃない」という、2つの条件を調べています!
また、ここで座標を入力しているのですが、ここはお使いのワールドに合わせた座標にしてください。
F3キーを押せば、座標が表示されるので、それを頼りに入力してくださいね!
次に、先ほどの複雑なコマンドを入力したコマンドブロックにつなげて、
チェーン、条件付き、常時実行のコマンドブロックを設置し、次のコマンドを入力します!
effect give @a minecraft:levitation 1 18 true
すべてのプレイヤーに、浮遊のエフェクトを与えるコマンドですね!
条件付きにすると、前にあったコマンドブロックが正常に動作した時のみ作動します。
ここを無条件にしてしまうと、バグるので注意(笑)
18と書いてある場所が、浮遊のエフェクトの強さです。
ここの値が大きいほど、空中ジャンプでの上昇スピードが速くなります。
空中ジャンプの高さは、ここのエフェクトの強さと、遅延Aの大きさで決まります。
作品が完成してから、微調節をすると良いでしょう♪
次も、チェーン、条件付き、常時実行のコマンドブロックをつなげます。
ここで、空中ジャンプをしたことが分かるような、パーティクルを表示します!
今回は、ふわっと浮き上がるイメージで泡のパーティクルを表示するよ!
パーティクルはなくても、空中ジャンプは作れるのですが、せっかくならつけちゃいましょう♪
execute at @a run particle minecraft:bubble_column_up ~ ~ ~ 0.5 0.5 0.5 0.5 100 normal @a
だいぶ簡略化して説明すると、
「プレイヤーのいる場所に泡のパーティクルを100個出す」です。
at @a
は、「プレイヤーのいる場所で実行する」という意味です!
そして、後半の値の羅列が初見だと意味不明だと思いますが、順に解説しますと、~ ~ ~
がパーティクルを出す位置で、これはコマンドが実行された位置という意味になります。0.5 0.5 0.5
が偏差と呼ばれるもので、パーティクルを周囲に広げる範囲、みたいな感じです。
次の0.5
はパーティクルの速さで、100はパーティクルの数です。
minecraft:bubble_column_up
は泡のパーティクルを指定しているので、ここを変えることで、好きなパーティクルを出せますよ! キラキラとか、爆発とかもあります。
これで、「ニンジン付きの棒を右クリックされた瞬間に実行されるコマンド」が組み終わりました。
今、ニンジン付きの棒を右クリックすると、
パーティクルが出て、体が浮くと思います!
右クリックしても反応しない場合、コマンドブロックの実行結果の欄を見てみると、
エラーが出ていたりするので、コピペをミスっていないか、記述が間違っていないか確認しましょう。
上昇を止めるためのコマンド
お次は遅延Aの先にあるコマンドを作ります!
このままだと、1回空中ジャンプを使ったら、高く打ち上げられた後、
二度と使えなくなってしまいますので…(苦笑)
遅延Aだけ待ったら、プレイヤーの浮遊の効果を消すんだね!
遅延Aの先に、インパルス、無条件、動力が必要のコマンドブロックを設置して、次のコマンドを入力。
effect clear @a minecraft:levitation
全プレイヤーの浮遊のエフェクトを消すコマンドです!
次に、レッドストーンブロックを別のブロックへと変更するコマンドを、
チェーン、無条件、常時実行のコマンドブロックをつなげて入力します。
今回は赤色の羊毛を使っていますが、別にどんなブロックでもOKです!
setblock -202 -54 184 minecraft:red_wool
先ほど、「空気ならば実行する」ってコマンドがあったのを覚えていますでしょうか。
なので、空気以外のブロックを置いておけば、クールタイムを表現できるわけです!
正直このコマンドはなくても動くかもしれないけど、一応ね。
羊毛になったほうが分かりやすいので…
そして、そこへまたまたチェーン、無条件、常時実行のコマンドブロックをつなげて、次のコマンドを入力。
gamerule fallDamage false
落下ダメージを受けない設定にするコマンドですね。
「落下ダメージ無効とか甘えだ!」という方は、このコマンドブロックはつけなくても大丈夫です。
遅延Aを1遅延にして、浮遊の強さを18にすると、最大で4ブロック強飛べるので、僕はつけました。
空中ジャンプしたせいで、落下ダメージを受けたらダサいからね(笑)
ここまで作ると、右クリックするとジャンプする、という動作が完成しました!
あとは、クールタイムを解除するコマンドと、
落下ダメージ無効の時間を設定するコマンドだけですね!
クールタイムを解除するコマンド
先ほどから、遅延Bの大きさが、クールタイムになると書いてきましたので、
遅延Bの先に、クールタイムを解除するためのコマンドブロックを設置します!
インパルス、無条件、動力が必要にして、次のコマンドを入力します。
setblock -202 -54 184 minecraft:air
指定した座標を、空気ブロックに変えるコマンドです。
先ほどから用いてきた座標と同じものを使ってくださいね!
最後に、落下ダメージ無効の時間を決定するコマンドを組みます!
遅延Bと遅延Cをつなげた奥に、インパルス、無条件、動力が必要のコマンドブロックを設置します。
gamerule fallDamage true
ずっと落下ダメージが無効にされたらおかしいからね~
僕は遅延Cを3遅延にしています。
僕の設定した値だと、これで地上から2回ジャンプしても、落下ダメージをギリギリ受けなくなります。
これで空中ジャンプのコマンドと回路が完成しました! お疲れ様です!
ニンジン付きの棒を手に持って、右クリックしてみてね!
正しく組めていたら、ニンジン付きの棒を右クリックすると、ジャンプ(っぽい挙動)します!
どんな風に空中ジャンプできる?
浮遊のエフェクトを使っているので、落下中などに使えば、1ブロック半ほど浮くようになりました♪
仕様上、上昇中に使うとびっくりするほど高く飛べます(笑)
これはこれで、大ジャンプとして面白いから残しておきます(笑)
普通のジャンプと合わせて、かなりの高さや距離を飛べるようになりました!
Twitterに空中ジャンプの様子を撮影した動画をアップしたので、
動いている様子を知りたい方はどうぞ!
僕、普段はあまりコマンドをがっつり触らないのですが、
これを機に他のものに手を出してもいいかもしれない…
ちなみに、冒頭でマイクラ歴4年とか偉そうに書いていますが、
僕のコマンドの知識は赤ちゃんなので、もし「ここはこうしたほうが良いよね?」という部分がありましたら、
コメント欄で優しく教えてくださると嬉しいです(笑)
コマンドも、エディションやバージョンによって仕様とかちょっと違うしね~
さて、今回は空中ジャンプをコマンドを使って作ってみました!
この講座の第2回がいつかは分かりませんが、もしリクエストなどあれば教えてください!
…あんまり難しいとEIEIさん諦めちゃいますが。
それでは皆さん、バイバ~イ!
コメント
にしゃくさんへ返信
確かに、1つ何か作ろうとすると数十分以上かかりますもんね~
1日にちょっとだけ、みたいにして作っていくのが良いかもしれません。
dataコマンドとtaaributeコマンドを使えば変えられるのですか、ありがとうございます!
executeやらscoreboardは、ずっとgoogleで調べながら作っています(苦笑)
コマンドはできるのですが、いつも根気がなくて
何かを作ろうとしても途中でやめてしまいます、、、
MOBのHPを変えるのはdataコマンドとattributeコマンドをつかえばいけますね。
executeとscoreboardコマンド本当にすごい、、、!
マイクラガチ勢さんへ返信
エンドラ以外のmobなら、エフェクトが効くので簡単そうですね!
エンダードラゴンは、summonコマンドを使えばいける… のでしょうか?
1度試してみます♪
統合版の人さんへ返信
軽く調べた感じですが、おそらく今回使ったコマンドは統合版にも存在したり、
代用が効くのでできなくはないと思います!
ただ、Java版と構文が違ったり、いろいろあるので、コピペだけでは難しいかもです…
もしできるのならばエンドラのHPを
変えるなどのことをやってほしい
これって総合版でもできますか?
やっていることが難しそう(笑)