マイクラ コマンド 釣竿魔法の作り方!とscoreboard (スコアボード) 使い方<java版>

マイクラ コマンド 釣竿魔法の作り方!とスコアボード 使い方になります。
スコアボードコマンドは、自身のスコアの値を設定したり、増減したりできる値の保管や管理できるコマンドになります。

釣竿魔法の作り方

釣竿魔法は釣竿を装備し、使用したときに、何かを変えます。
scoreboard(スコアーボード)を使って、条件と値を変更して作ることができます。

scoreboardとは?

scoreboardとは、値を保存するコマンドになります。
ゲーム内でプライヤー同士がゲームを行った際に、スコアをカウントしたり、保存したり、変更できる便利なコマンドになります。

scoreboardのパラメーター引数一覧

スコアーボードのパラメーターの種類には、大きく分けて2つあります。

objectives パラメーター

objectivesは、目的をしているパラメーターにります。

/scoreboard objectives <パラメーター(要求名)> <引数(値)>

指定できるパラメーター一覧は、以下の通りです。
引数の値を入れると、実行されます。

パラメーター 説明
add オブジェクト名条件表示名のオブジェクトを新しく作成する。
list 作成した全てのスコアの表示名と条件を表示する。
remove 作成した全てのスコアの表示名と条件を削除する。
setdisplay 指定された表示スロット(画面)に表示する。

players パラメーター

playersは、プレイヤーの操作のパラメーターになります。

/scoreboard players <パラメーター(要求名)> <ターゲット引数(値)>

指定できるパラメーター一覧は、以下の通りです。
引数の値を入れると、実行されます。

パラメーター 説明
list 記録がある全てのエンティティを表示する
players get 実行結果としてスコアの値を返す。
players set セットした値を上書きする。
players add 指定したエンティティにやスコアを指定量を加算する。
players remove 指定したエンティティやスコアを指定量だけ減算する。
players reset 指定したエンティティやスコアを全てを削除する。 
players operation 値を算術演算子を使って変更する。

scoreboardでダミーを入れてみよう。

練習にスコアーボードを作ってみよう。

実行コマンドを入れてスコアボード「test」が作成されます。
ダミーなので、テストです。

スコアボードで条件を作ってみよう!

にんじんの釣竿の魔法条件を作ります。

エンチャントしたにんじんの釣竿を用意しましょう。

/give @p minecraft:carrot_on_a_stick{enchants:[{id:fire_protection,lvl:1}]}

①複合条件付きのスコアーボードを作成する

まずは、スコアボードを使って条件を作ります。
プレイヤーがアイテムおよびブロックを使用した時にスコアが増加する「minecraft.used」を使用します。

/* スコアボードをaddで作成、オブジェクト名 cs 複合条件 にんじん釣竿を右手のアイテムの使用時 */ 
/scoreboard objectives add cs minecraft.used:minecraft.Carrot_on_a_Stick

以下のようにオブジェクトが作成されます。

よく使われる複合条件は以下になります。

基本条件 説明
minecraft.custom プレイヤーの統計情報に基づく全ての複合条件の基礎条件で増加する。
minecraft.crafted アイテムを取り出した時に、その数に応じてスコアが増加する。
minecraft.used プレイヤーがアイテムおよびブロックを使用した時にスコアが増加する。
minecraft.broken プレイヤーがアイテムの耐久値を0以下にした時にスコアが増加する。
minecraft.mined プレイヤーがブロックを採掘した時にスコアが増加する。
minecraft.picked_up プレイヤーがドロップアイテムを拾った時にスコアが増加する。
minecraft.dropped プレイヤーがアイテムを捨てるキーを押して捨てた時、あるいはインベントリから直接捨てた時にスコアが増加する。
minecraft.killed プレイヤーがエンティティを倒した時にスコアが増加する。
minecraft.killed_by プレイヤーがエンティティに倒された時にスコアが増加する。
teamkill プレイヤーが特定の色のチームのメンバーを倒した時にスコアが増加する。
killedByTeam プレイヤーが特定の色のチームのメンバーに倒された時にスコアが増加する。

②TNTがあるときに「にんじん付きの棒を」振ったかどうかの判定を用意する

このようにコマンドブロックを用意しましょう。
反復ブロックには、スイッチまたはレバーをつけておきましょう。

反復のコマンドブロックには、以下のようなコマンドを作ります。
アイテムを使用時に増加するプログラムを作成します。

/clear @a[
 scores={cs=1},/* スコアボードのカウント条件 */
 nbt={SelectedItem:{id:"minecraft:Carrot_on_a_Stick",/* データタグに右手のアイテムの指定*/
 tag:{enchantments:[
 {id:fire_protection,lvl:1}
]
}}}
] tnt 1 /* TNTが1つのときにエンチャントを実行 */

スコアの条件の書き方一覧になります。

スコアの条件の書き方 意味
[scores={test=1}] testが1の時だけ実行する
[scores={test=1..}] testが1以上の時だけ実行する
[scores={test=1..3}] testが1から3の時だけ実行する
[scores={test=1,bar=1..5}] testが1かつbarが1から5の時だけ実行する
bar(オブジェクト名)

btb(NBTフォーマット)とは?

ntbとは、NBTフォーマットになります。
マインクラフトの色々なデータは NBT(Named Binary Tag) という独自の形式で保存しています。ゲーム中でコマンドでアクセスするために使われているものが「データタグ」です。

{<タグ名>:<値>}

現在持っているアイテムを指定したいので、この場合は、「SelectedItem」はにんじんの釣竿になります。

スコアの条件の書き方 意味
Dimension プレイヤーがいるディメンション。
playerGameType プレイヤーのゲームモード。
Score プレイヤーの死亡回数。
SelectedItemSlot プレイヤーが選択している、つまり現在手に持っているホットバーインベントリのスロット番号。
SelectedItem プレイヤーが現在手に持っているアイテム。
SpawnX/SpawnY/SpawnZ プレイヤーが最後に使用したベッド、つまりリスポーン地点の座標。
リスポーンする時にベッドが破壊されていた場合、このデータタグは消去されます。
よってこのデータタグ自体が存在しない場合があります。
SpawnForced プレイヤーが最後に使用したベッドが破壊されていた場合でも、強制的にその座標にリスポーンします。
Sleeping プレイヤーがベッドで寝ている状態。
SleepTimer プレイヤーがベッドで寝始めてから経過した時間をゲームtick(1秒=20)で表します。
foodLevel プレイヤーの満腹度。
満腹状態のとき 20 です。
foodExhaustionLevel プレイヤーが最後に使用したベッドが破壊されていた場合でも、強制的にその座標にリスポーンします。
Sleeping プレイヤーがベッドで寝ている状態。
foodTickTimer プレイヤーがベッドで寝始めてから経過した時間をゲームtick(1秒=20)で表します。
foodLevel プレイヤーの満腹度。満腹状態のとき 20 です。
foodExhaustionLevel プレイヤーの行動によって蓄積された消耗レベル。
消耗レベルが 4.0 を超えたとき、4.0 減算され、隠し満腹度が 1.0 消費される。
foodSaturationLevel プレイヤーの隠し満腹度レベル。
foodTickTimer プレイヤーの満腹度による体力増減のためのタイマー。
満腹度が 17 以上のときtickが経過することによって自動的に加算され、80 を超えると 0 にリセットされ、体力が 1 増加します。
満腹度が 0 のときtickが経過することによって自動的に加算され、80 を超えると 0 にリセットされ、体力が 1 減少します。
Inventory プレイヤーのインベントリにあるアイテムのリスト。
EnderItems プレイヤーがエンダーチェストに格納したアイテムのリスト。
XpLevel プレイヤーが持っている能力。外部ツールで書き換えが可能。

XpP
プレイヤーが次のレベルに上がるために必要な、経験値バーの進捗パーセント。

XpSeed
プレイヤーが次のエンチャントを実行する時に使用されるエンチャントシード値。

XpTotal
fプレイヤーがそれまでに集めた経験値の合計。

tag(タグ)とは?

tagとは、簡単にエンティティやアイテム、ブロックそれぞれの識別する名札名になります。アイテムのデータータグを使って、振る舞いを指定します。

このタグ(blast_protection)を指定して、tnt が1個あるとき、火炎耐性(耐火)を減らすことができます。

③人参の棒を振った時に雷を召喚

チェーンブロックには以下のコマンドを入れます。
(条件付き、常時実行)

/execute as @a[
 scores={cs=1},/* スコアボードのカウント条件 */
 nbt={SelectedItem:{id:"minecraft:Carrot_on_a_Stick"},/* データタグに右手のアイテムの指定*/
 tag:{enchantments:[{id:blast_protection,lvl:1}
]
}}}
 at @s run summon minecraft:lightning_bolt ^ ^ ^5 /* 向いている方向の5ブロック先に雷を召喚*/

④にんじんの棒を振った時に振った時にTNTを召喚

チェーンブロックには以下のコマンドを入れます。
(条件付き、常時実行)

/execute @a[
 scores={cs=1},/* スコアボードのカウント条件 */
 nbt={SelectedItem:{id:"minecraft:Carrot_on_a_Stick"},/* データタグに右手のアイテムの指定*/
 tag:{enchantments:[{id:fire_protection,lvl:1}
]
}}}
]
  at @s run summon minecraft:tnt ^ ^ ^5 /* 向いている方向の5ブロック先 TNTを召喚 */

⑤スコアボードをリセットする

チェーンブロックには以下のコマンドを入れます。
(条件付き、常時実行)

/scoreboard players reset /* スコアボードリセット*/
  @a[scores={cs=1},/* スコアボードのカウント条件 */
 nbt={SelectedItem:{id:"minecraft:Carrot_on_a_Stick"},/* データタグに右手のアイテムの指定*/
 tag:{enchantments:[{id:fire_protection,lvl:1}
] 
}}}
] cs /* オブジェクト名*/