/scoreboar コマンドを使用して、
稼いだポイントを交換できる店を作ってみた。

主な特徴

  • まとめ買い, 1個買いを選べる
  • 詐欺防止機能
  • それなりに小さい

構造

  • 画像参照

コマンド

準備編

  • /scoreboard objectives add money dummy "points"
    • スコアの変数money(呼び名 `points)実装
  • /scoreboard objectives setdisplay list money
    • 参加者リスト(Tabキーで出るやつ)に所持ポイント表示

店のコマンドブロック

Aのブロック

  • インパルス, 無条件, 動力が必要
  • /give @p[scores={money=5..}, dx=-3, dy=-3, dz=0]() <付与アイテム>
    • # @p : 最も近くのプレーヤー
    • # scores={money=5..} : money(スコア)が5以上で
    • # dx=-3, dy=-3, dz=0 : 範囲内のプレーヤー (上図ダイヤブロックの位置がちょうどいい範囲)

Bのブロック(チェーン)

  • チェーン, 条件付き, 常時実行
  • /scoreboard players remove @p[dx=-3, dy=-4, dz=0]() money <料金>
    • # @p : 最も近くのプレーヤー
    • # scores={money=5..} : money(スコア)が5以上で
    • # dx=-3, dy=-4, dz=0 : 範囲内のプレーヤー (上図ダイヤブロックの位置がちょうどいい範囲)
    • # scoreboard players remove <指定したプレーヤー> :指定したプレーヤーのmoney(スコア)を<料金>だけ減らす
  • # 方角に応じて座標の範囲は+ -調整

使用法

  • スイッチの前(上図ダイヤブロックの位置)に立つ
  • 下部のレバーへ触れると、まとめ買いモード(戻すまでポイントと交換し続ける)
  • 上部のスイッチを押すと、1個買いモード

おまけ

  • アイテム/ポイント交換機もコマンドを置き換えるだけで可能

  • Aの処理 /clear @p[dx=-3, dy=-3, dz=0]() <回収するアイテム> <回収する数>

    • 特定座標範囲の人のアイテムを指定個数回収する
  • Bの処理 /scoreboard players add @p[dx=-3, dy=-4, dz=0]() money 1

    • 特定座標範囲の人へスコア(money)を1加算する