MC CommanderMinecraft非公式コマンド支援

制作レシピ / Skyblock:収集チャレンジと一回限りの報酬

Skyblock:収集チャレンジと一回限りの報酬

丸石の所持数判定から、プレイヤー別の進捗・報酬重複防止まで作るJava版向け制作例。

対象:Minecraft Java Edition 1.21.1(このページの例)|掲載例は構文資料と照合した学習用サンプルです。Minecraft実機での動作保証・全バージョン検証を意味しません。

更新日:

収集チャレンジのルール

丸石を32個以上持っているプレイヤーへ、エメラルドを2個だけ配布するチャレンジです。丸石は消費しないため、資材を納品する仕組みとは区別します。Java版の/clearに数量0を指定すると、対象アイテムの所持数を調べられます。

数値を保存する目的を作る

/scoreboard objectives add sb_stone dummy

このObjectiveは各プレイヤーが持つ丸石の個数を一時的に記録します。実行前に同じ名前のObjectiveがないことを確認します。

所持数を測る

/execute as @a store result score @s sb_stone run clear @s minecraft:cobblestone 0

「リピート・無条件・常時実行」で実行します。as @aでプレイヤーごとに実行者を切り替え、store result score @sでその人の測定結果を保存します。アイテムは数量0なので取り除きません。

一度だけ報酬を渡す

/give @a[scores={sb_stone=32..},tag=!sb_stone_paid] minecraft:emerald 2
/tag @a[scores={sb_stone=32..},tag=!sb_stone_paid] add sb_stone_paid

報酬の1行目は所持数を測る装置の後に実行し、2行目はその直後の「チェーン・条件付き」で実行します。sb_stone_paidタグが付くと、丸石を持ったままでも報酬を繰り返し受け取りません。

「丸石を32個渡して報酬をもらう」システムにする場合は、アイテム消費・所持数判定・報酬の順序を改めて設計してください。この例は所持判定だけです。

複数プレイヤーと継続プレイの確認

  1. Aが丸石31個、Bが32個を持つ。Bだけ報酬を受け取ることを確認。
  2. Bが丸石を捨てて拾っても、報酬が増えないことを確認。
  3. ワールドを保存して再開しても、報酬済みタグが残ることを確認。
  4. 新たなチャレンジを追加する際はタグ名やObjective名を変え、既存処理と衝突しないようにする。

この先の作り込み

収集条件を判定する処理と報酬処理を分けます。所持品の数だけで進捗を決めると、アイテムを捨てた場合に結果が変わるため、達成状態も別に記録してください。