【楽しいコマンド講座#1】MODなし! 空中ジャンプを作ってみる!

コマンド講座

 どうもどうも! EIEIです!

 今回は突然始まる新シリーズ、「楽しいコマンド講座」の第1回ということで!

 コマンドの力を使って、空中ジャンプを実装してみようと思います!

マイン
マイン

唐突に新シリーズを始めるんだね!? しかもコマンド。

 EIEIさん、マイクラを4年ほどやっているのですが、コマンドはいまいち詳しくないので、

 僕がコマンドを触って練習して、それを皆さんにお届けできたらと思い! とりあえず#1書いてます(笑)

EIEI
EIEI

コマンドを触ったことがない人でも、実践できるレベルで丁寧に書いていきますので、よろしくお願いします♪

 そして、今回作りますのが空中ジャンプ!

 物理法則に逆らって、高い場所に飛び乗ったり、落下ダメージを防いだり… という使い方ができます♪

 本日もLet’sマイクラ!

※この記事で使用しているコマンドは、Java版1.18.2のものです。

スポンサーリンク

今回使うレッドストーン回路!

 記事のタイトルに「講座」とか偉そうに書いていますが、

 コマンドオンリーで空中ジャンプを作る技術力が、EIEIさんにはないので…

 レッドストーン回路にも少し助けていただきます!

EIEI
EIEI

下の画像のようなレッドストーン回路を組みました!

↑コマンドブロックは、コマンドを使わないと入手できないので注意! サバイバルとかではもちろん作れない回路ですね(笑)

 回路を作る時は、レッドストーンリピーターの向きに注意してください。

 また、コマンドブロックがいくつも連なっているものに関しても、向きに注意してください!

マイン
マイン

画像のように、とがっているものが次のコマンドブロックの方向を向いている必要がありますね!

 そして、遅延の大きさは基本何でもいいですが、必ず「遅延A ≦ 遅延B」にしてください。

EIEI
EIEI

画像では、遅延Aが1遅延、Bが8、Cが11となっています!

次のコマンドをチャット欄に入力して、実行することでコマンドブロックを入手できます!

/give @p minecraft:command_block 1

 記事内の青い枠の中には、コマンドの詳細だったり、補足情報を書きこんでいきますので、

 「とにかく真似して作ってみたい!」という方は読み飛ばしてもらって構いません(笑)

EIEI
EIEI

コマンドに詳しくなりたい方などがいましたら、読むと… もしかしたら賢くなれるかも?

 それでは、いよいよコマンドを打ち込んでいきましょう!

コマンドを使って空中ジャンプを実装!

今回作る空中ジャンプの仕様

 今回作る空中ジャンプは、次のようにします!

  • ニンジン付きの棒を持ったまま右クリックをする
  • パーティクルを表示して、プレイヤーに浮遊のエフェクトを与える
  • 遅延Aだけ待った後、プレイヤーの浮遊のエフェクトを解除する
  • 遅延Bだけ待った後、再使用が可能になる
  • 遅延Bと遅延Cを合わせた間、落下ダメージを無効化する
マイン
マイン

文字に起こすとなんだかややこしいですが、

大して難しいことはしていないですね!

EIEI
EIEI

短い時間だけ、「浮遊」を付与することで、ジャンプっぽくします!

 もしかしたら、浮遊を使わないで空中ジャンプを実装する方法があるかもしれませんが、

 EIEIさんは思いつきませんでした!

スコアボードのコマンドを作る

 今回は、「ニンジン付きの棒を右クリックした時」というのを読み取らなければいけません。

 この時に活躍するのが、「スコアボード」と呼ばれる、コマンド界にて超便利なものです!

EIEI
EIEI

まずは、スコアボードを作りましょう!

スコアボードは、中に値が入っています。
この値は、さまざまな動作などに紐づけをして、増やすことができます!

 スコアボードを作りたいので、まずはチャット欄で次のコマンドを実行してください。

/scoreboard objectives add CarrotUsed minecraft.used:minecraft.carrot_on_a_stick

 このコマンドは、「ニンジン付きの棒を右クリックした時に値が増える、『CarrotUsed』というスコアボードを作れ」って意味です。

マイン
マイン

「CarrotUsed」のところには、スコアボードの名前が入ります。

英語や数字ならば好きな名前で大丈夫ですよ!

↑このコマンドを実行して、スコアボードを作ってください!

 これを実行しても、特に画面に何か表示される、とかは起きませんが、

 見えないところでスコアボードが作られているので安心してください。

 次は、常にこのスコアボードの値を0にするコマンドを作ります!

EIEI
EIEI

常に0にしたほうが、製作上都合がいいので(笑)

「ニンジン付きの棒を右クリックしたら増えるスコアボード」を常に0にします。
すると、右クリックされた時、一瞬だけ1になってまた0に戻ります!
この「一瞬だけ1になる」というのがポイント。
2以上になることもなく、0か1だけに絞れて作りやすくなります!

 リピート、無条件、常時実行のコマンドブロックに、次のコマンドを設定します。

scoreboard players reset @a CarrotUsed

マイン
マイン

「全プレイヤーの、『CarrotUsed』の値をリセットする」って意味ですね!

↑これを作ると、おそらくチャット欄に大量の実行ログが流れてきます(笑) あとで対策するので、今は無視していいですよ。

 これでスコアボードの準備ができました!

EIEI
EIEI

この段階では何やっているか分からないと思いますが、

これで良い感じに準備が整いました!

 お次は肝心の「右クリックされたとき」の部分です!

スポンサーリンク

右クリックされたときに実行されるコマンド!

 いつ右クリックされてもいいように、右クリックされたかどうかを調べるコマンドを、常に実行します。

 リピート、無条件、常時実行のコマンドブロックに次のコマンドを打ってください!

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)をレッドストーンブロックにする」となっています!

なんでわざわざ、空気ブロックじゃないと実行されないようになっているかと言うと、連続で使えないように、クールタイムを作るためです!

EIEI
EIEI

「右クリックされた」「クールタイムじゃない」という、2つの条件を調べています!

 また、ここで座標を入力しているのですが、ここはお使いのワールドに合わせた座標にしてください。

マイン
マイン

F3キーを押せば、座標が表示されるので、それを頼りに入力してくださいね!

↑回路の途切れている部分に、レッドストーンブロックを設置するコマンドですね!

 次に、先ほどの複雑なコマンドを入力したコマンドブロックにつなげて、

 チェーン、条件付き、常時実行のコマンドブロックを設置し、次のコマンドを入力します!

effect give @a minecraft:levitation 1 18 true

EIEI
EIEI

すべてのプレイヤーに、浮遊のエフェクトを与えるコマンドですね!

条件付きにすると、前にあったコマンドブロックが正常に動作した時のみ作動します。
ここを無条件にしてしまうと、バグるので注意(笑)

 18と書いてある場所が、浮遊のエフェクトの強さです。

 ここの値が大きいほど、空中ジャンプでの上昇スピードが速くなります。

マイン
マイン

空中ジャンプの高さは、ここのエフェクトの強さと、遅延Aの大きさで決まります。

 作品が完成してから、微調節をすると良いでしょう♪

↑レッドストーンブロックの設置に成功したら、プレイヤーに浮遊を与えます!

 次も、チェーン、条件付き、常時実行のコマンドブロックをつなげます。

 ここで、空中ジャンプをしたことが分かるような、パーティクルを表示します!

EIEI
EIEI

今回は、ふわっと浮き上がるイメージで泡のパーティクルを表示するよ!

 パーティクルはなくても、空中ジャンプは作れるのですが、せっかくならつけちゃいましょう♪

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は泡のパーティクルを指定しているので、ここを変えることで、好きなパーティクルを出せますよ! キラキラとか、爆発とかもあります。

↑パーティクルは70近くの種類があるので、好きなものを調べて使っちゃいましょう!

 これで、「ニンジン付きの棒を右クリックされた瞬間に実行されるコマンド」が組み終わりました。

EIEI
EIEI

今、ニンジン付きの棒を右クリックすると、

パーティクルが出て、体が浮くと思います!

 右クリックしても反応しない場合、コマンドブロックの実行結果の欄を見てみると、

 エラーが出ていたりするので、コピペをミスっていないか、記述が間違っていないか確認しましょう。

スポンサーリンク

上昇を止めるためのコマンド

 お次は遅延Aの先にあるコマンドを作ります!

 このままだと、1回空中ジャンプを使ったら、高く打ち上げられた後、

 二度と使えなくなってしまいますので…(苦笑)

マイン
マイン

遅延Aだけ待ったら、プレイヤーの浮遊の効果を消すんだね!

 遅延Aの先に、インパルス、無条件、動力が必要のコマンドブロックを設置して、次のコマンドを入力。

effect clear @a minecraft:levitation

EIEI
EIEI

全プレイヤーの浮遊のエフェクトを消すコマンドです!

↑浮遊の時間を短くすることで、ジャンプを再現します!

 次に、レッドストーンブロックを別のブロックへと変更するコマンドを、

 チェーン、無条件、常時実行のコマンドブロックをつなげて入力します。

マイン
マイン

今回は赤色の羊毛を使っていますが、別にどんなブロックでもOKです!

setblock -202 -54 184 minecraft:red_wool

先ほど、「空気ならば実行する」ってコマンドがあったのを覚えていますでしょうか。
なので、空気以外のブロックを置いておけば、クールタイムを表現できるわけです!

EIEI
EIEI

正直このコマンドはなくても動くかもしれないけど、一応ね。

羊毛になったほうが分かりやすいので…

↑画像では無条件にしていますが、別に条件付きにしても問題なく動作します。

 そして、そこへまたまたチェーン、無条件、常時実行のコマンドブロックをつなげて、次のコマンドを入力。

gamerule fallDamage false

マイン
マイン

落下ダメージを受けない設定にするコマンドですね。

 「落下ダメージ無効とか甘えだ!」という方は、このコマンドブロックはつけなくても大丈夫です。

 遅延Aを1遅延にして、浮遊の強さを18にすると、最大で4ブロック強飛べるので、僕はつけました。

EIEI
EIEI

空中ジャンプしたせいで、落下ダメージを受けたらダサいからね(笑)

↑この落下ダメージオフは、遅延Cが終わるまで続けます。ずっと続いたら怖いからね(笑)

 ここまで作ると、右クリックするとジャンプする、という動作が完成しました!

マイン
マイン

あとは、クールタイムを解除するコマンドと、

落下ダメージ無効の時間を設定するコマンドだけですね!

クールタイムを解除するコマンド

 先ほどから、遅延Bの大きさが、クールタイムになると書いてきましたので、

 遅延Bの先に、クールタイムを解除するためのコマンドブロックを設置します!

 インパルス、無条件、動力が必要にして、次のコマンドを入力します。

setblock -202 -54 184 minecraft:air

EIEI
EIEI

指定した座標を、空気ブロックに変えるコマンドです。

先ほどから用いてきた座標と同じものを使ってくださいね!

↑これで、遅延Bを待った後に、空気ブロックに置き換わることで、クールタイムを解除できます!

 最後に、落下ダメージ無効の時間を決定するコマンドを組みます!

 遅延Bと遅延Cをつなげた奥に、インパルス、無条件、動力が必要のコマンドブロックを設置します。

gamerule fallDamage true

マイン
マイン

ずっと落下ダメージが無効にされたらおかしいからね~

 僕は遅延Cを3遅延にしています。

 僕の設定した値だと、これで地上から2回ジャンプしても、落下ダメージをギリギリ受けなくなります。

↑落下ダメージを有効にするコマンドです!

 これで空中ジャンプのコマンドと回路が完成しました! お疲れ様です!

EIEI
EIEI

ニンジン付きの棒を手に持って、右クリックしてみてね!

 正しく組めていたら、ニンジン付きの棒を右クリックすると、ジャンプ(っぽい挙動)します!

どんな風に空中ジャンプできる?

浮遊のエフェクトを使っているので、落下中などに使えば、1ブロック半ほど浮くようになりました♪

 仕様上、上昇中に使うとびっくりするほど高く飛べます(笑)

EIEI
EIEI

これはこれで、大ジャンプとして面白いから残しておきます(笑)

マイン
マイン

普通のジャンプと合わせて、かなりの高さや距離を飛べるようになりました!

↑こういうのを使って、アスレチックやアクションマップを作るのも楽しそうです!

 Twitterに空中ジャンプの様子を撮影した動画をアップしたので、

 動いている様子を知りたい方はどうぞ!

EIEI
EIEI

僕、普段はあまりコマンドをがっつり触らないのですが、

これを機に他のものに手を出してもいいかもしれない…

 ちなみに、冒頭でマイクラ歴4年とか偉そうに書いていますが、

 僕のコマンドの知識は赤ちゃんなので、もし「ここはこうしたほうが良いよね?」という部分がありましたら、

 コメント欄で優しく教えてくださると嬉しいです(笑)

マイン
マイン

コマンドも、エディションやバージョンによって仕様とかちょっと違うしね~

 さて、今回は空中ジャンプをコマンドを使って作ってみました!

 この講座の第2回がいつかは分かりませんが、もしリクエストなどあれば教えてください!

 …あんまり難しいとEIEIさん諦めちゃいますが。

 それでは皆さん、バイバ~イ!

コメント

  1. EIEI より:

    にしゃくさんへ返信
    確かに、1つ何か作ろうとすると数十分以上かかりますもんね~
    1日にちょっとだけ、みたいにして作っていくのが良いかもしれません。

    dataコマンドとtaaributeコマンドを使えば変えられるのですか、ありがとうございます!
    executeやらscoreboardは、ずっとgoogleで調べながら作っています(苦笑)

  2. にしゃく より:

    コマンドはできるのですが、いつも根気がなくて
    何かを作ろうとしても途中でやめてしまいます、、、
    MOBのHPを変えるのはdataコマンドとattributeコマンドをつかえばいけますね。
    executeとscoreboardコマンド本当にすごい、、、!

  3. EIEI より:

    マイクラガチ勢さんへ返信
    エンドラ以外のmobなら、エフェクトが効くので簡単そうですね!
    エンダードラゴンは、summonコマンドを使えばいける… のでしょうか?
    1度試してみます♪

  4. EIEI より:

    統合版の人さんへ返信
    軽く調べた感じですが、おそらく今回使ったコマンドは統合版にも存在したり、
    代用が効くのでできなくはないと思います!
    ただ、Java版と構文が違ったり、いろいろあるので、コピペだけでは難しいかもです…

  5. マイクラガチ勢 より:

    もしできるのならばエンドラのHPを
    変えるなどのことをやってほしい

  6. 総合版の人 より:

    これって総合版でもできますか?
    やっていることが難しそう(笑)

タイトルとURLをコピーしました