制作レシピ / 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個渡して報酬をもらう」システムにする場合は、アイテム消費・所持数判定・報酬の順序を改めて設計してください。この例は所持判定だけです。
複数プレイヤーと継続プレイの確認
- Aが丸石31個、Bが32個を持つ。Bだけ報酬を受け取ることを確認。
- Bが丸石を捨てて拾っても、報酬が増えないことを確認。
- ワールドを保存して再開しても、報酬済みタグが残ることを確認。
- 新たなチャレンジを追加する際はタグ名やObjective名を変え、既存処理と衝突しないようにする。
この先の作り込み
収集条件を判定する処理と報酬処理を分けます。所持品の数だけで進捗を決めると、アイテムを捨てた場合に結果が変わるため、達成状態も別に記録してください。