今回は「経験値を自在に操るコマンド”xp”」を解説します。
これをマスターすればエンチャント用の経験値を一瞬で獲得することができます。
その他にもマイクラでのゲーム制作で「レベルを利用したタイマー」として利用できたりと、簡単でありながら大変便利なコマンドです。
ぜひ使いこなしてくださいね!
※本記事はminecraft統合版・PE向けに執筆していますのでJava版では正常に動作しない可能性がございます
マイクラのxpコマンドの使い方
/xp 10 @s
/xp 経験値を操作するよ
10 10の経験値を与えるよ
@s 自分自身に(経験値を与えるよ)
自分自身に10の経験値を与えることができます。
注意:自分がサバイバルモードやアドベンチャーモードになっていないと経験値やレベルが確認できません。
「10」の部分はマイナスをつけることで経験値を「減らす」こともできます。
/xp -10 @s
@s の部分を @a にすることで全員に経験値を付与したり、全プレイヤーから経験値を取り上げることもできます。
これがxpコマンドの基本的な使い方です。
レベルを直接与えることもできる
経験値の部分はレベルを設定することで「1レベル与える」とか「3レベル減らす」といったことも可能です。
/xp 1L @s
1L の部分が1レベル、ということですね。
ここの値を変更することで好きなレベルを与えることができます。
Lは小文字を使用してもOKですが、大文字で書いた方がわかりやすいのでいつも大文字で書くようにしています。
この部分もマイナスをつけることで「レベルを剥奪する」ことができます。
/xp -3L @s
これでプレイヤーのレベルを自由に操作することができますね。
レベルによってプレーヤーに特殊能力を与える
xpコマンドを使ってプレーヤーのレベルを操作できるようになったら、いよいよ実践として
「レベル毎に特殊能力を与える」
という処理にチャレンジしてみましょう。
特殊能力を与えるコマンドはeffectコマンドでしたね。
effectコマンドの使い方はこちらを参考にしてください。
エフェクトコマンド効果付与でマイクラが違うゲームに!effect解説
全員に1秒間、スピード2をつけるeffectコマンド
/effect @a speed 1 2
これを反復コマンドブロックに書いて、レッドストーンを「常にアクティブ」にすればOKでした。
ではこのコマンドを「レベル3以上のプレイヤーの足を速くする」というように改変していきます。
プレイヤーのレベルの指定方法
@a の後にカッコでレベルの指定をすることができます。
- @a[lm=3] 3レベル以上の全てのプレイヤー
- @a[l=5] 5レベル以下の全てのプレーヤー
- @a[lm=3,l=5] 3レベル以上、5レベル以下の全てのプレーヤー
- @a[lm=10,l=10] 10レベルである全てのプレーヤー
「3レベル以上の全てのプレーヤーの足が速くなる(speedエフェクト2をつける)」
はこのような書き方になります
/effect @a[lm=3] speed 1 2
レベルをお金とした自動販売機を作る
レベルを減らす処理を利用して、次は簡単な自動販売機を作ってみましょう。
①衝撃コマンドブロック(無条件、レッドストーンが必要)
/give @p[lm=3,r=4] diamond_sword
②チェーンコマンドブロック(条件付き、常にアクティブ)
/xp -3L @p[r=4]
①と②を、このように向きを揃えて繋げればOKです。
①のコマンドブロックの説明欄に必要なレベル数を入力して表示しておくとより自動販売機っぽくできます。
注意点としてはr=4と指定することで「半径4ブロック以内のプレーヤー」を対象にアイテムを渡す、という範囲指定をしていますので、自動販売機同士は4ブロック以上の距離を開けるなどの工夫が必要です。
r=4の部分の数値をr=2やr=3に調整することで自販機同士の場所ももう少しコンパクトにできそうです。
もう1つのポイントとして、②つ目のチェーンブロックは「条件付き」で実行されるようにしています。
これによって①のコマンドブロックの実行が成功した場合(レベル3以上のプレーヤーにダイヤ剣を渡せた場合)のみ、②が発動して経験値が減らされるという処理になっています。
少し場所はとりますが、とても簡単にレベル自動販売機ができてしまうのでおすすめです!
経験値を使ったタイマーの作り方
最後に経験値をタイマーとして使える方法をご紹介します。
経験値をタイマーにするとはどういうことかといいますと、「1秒毎にレベルが1ずつ減っていく」という処理を動かしてタイマーに見立てる、というこです。
例えば何かのゲームスタート時に全プレイヤーに60レベルを与えて、1秒毎に1レベルずつ減らす処理を動かすことで1分後にゲーム終了、のような動きができます。
youtubeで実際にタイマーの作り方を紹介する動画も公開してます!
タイマーの作り方
- 全員に「レベル10」を与える(10秒タイマーになる)
/xp 10L @a - 全員のレベルを1秒毎に1ずつ減らす(ティックの遅延を20)
/xp -1L @a - レベルが0になった人の数を数える
/testfor @a[l=0]
1のコマンドはゲーム開始時などの1回だけ実行されればOKです。
ポイントは「全員に」レベル10を与えているというところですね。
全員のレベルを揃えることでタイマーの役割を担います。
2のコマンドは反復コマンドの常にアクティブに書いた上で、”ティックの遅延”という設定に20を入力してください。
マインクラフトの世界では20ティック=1秒になりますので、これで1秒毎に2のコマンドを実行する、つまり1秒毎に全員から1レベル減らすという処理になります。
3のコマンドブロックも反復の常にアクティブにしておきます。
ポイントはこのコマンドブロックには”コンパレーター”を繋げておくところです。
testforコマンドが書かれたコマンドブロックにコンパレーターをつなげることで、
「testforで数えた人数分だけの強さのレッドストーン信号が出る」
という性質があります。
3のコマンドではレベルが0の人の人数を数えていますので、つまりレベルが0になる(タイマーが0になる)とコンパレーターからレッドストーン信号が出ます。
あとはこのコンパレーターに衝撃のコマンドブロックを繋いでおけば、タイマーが0になったら発動するという回路の出来上がりです!
以上ですがいかがでしたでしょうか?
経験値コマンドをマスターすれば自動販売機からタイマーまで作れるようになります。
ぜひこれを利用して遊んでみてくださいね!