召喚プリセット
Minecraft カスタム村人取引コマンド
カスタム村人の取引が複雑なのは、有用なデータが Offers の中に隠れているためです。この記事では、召喚コマンドをコピーする前に、ショップの構想、村人としてのアイデンティティ、取引コスト、販売アイテム、最大利用回数、Tags を一箇所にまとめて整理します。
プリセット結果
編集可能な 2 件の取引と、後段の Command Pack ロジックで安定して使える Tags を備えた、永続的な村人ショップのプリセットが得られます。
出力
村人取引召喚出力
/summon minecraft:villager ~ ~ ~ {CustomName:{text:"Relic Trader",color:"gold"},CustomNameVisible:1b,PersistenceRequired:1b,VillagerData:{profession:"minecraft:librarian",level:5,type:"minecraft:plains"},Offers:{Recipes:[{buy:{id:"minecraft:emerald",count:12},sell:{id:"minecraft:enchanted_book",count:1,components:{"minecraft:stored_enchantments":{"minecraft:mending":1}}},maxUses:999999,rewardExp:0b},{buy:{id:"minecraft:diamond",count:3},sell:{id:"minecraft:player_head",count:1,components:{"minecraft:custom_name":{text:"Relic Token",color:"aqua",italic:false}}},maxUses:64,rewardExp:0b}]},Tags:["relic_trader"]}The longest command line is 616 characters, 360 over the 256-character chat input limit. Pasting it into chat can truncate the line and make Minecraft report a syntax error even when the generated command is valid.
- Use a Command Block: run
/give @s command_block, place it, then paste this command into the block command field. - Use a
.mcfunctionfor a reusable datapack: save the line without the leading slash atsaves/<world>/datapacks/<pack>/data/<ns>/function/<name>.mcfunctionwith a minimalpack.mcmeta, run/reload, then run/function <ns>:<name>. Do not paste.mcfunctioncontent into chat.
プリセットのスクリーンショット
プリセットを作成
- Summon を開き、エンティティとして villager を選択します。
- まず VillagerData を設定し、職業、バイオームの種類、レベルがショップの役割と一致するようにします。
- Offers.Recipes の中で、buy と sell のペアとして取引を追加してください。
- 後段のコマンドからショップを見つけて保護できるよう、PersistenceRequired と Tags を追加します。
取引データは入れ子構造になっている
村人の取引コマンドはデバッグしにくい題材です。アイテムのデータが buy、buyB、sell のいずれにも現れる可能性があるからです。まずは取引をひとつだけのシンプルな構成で動かし、それから追加のレシピを積み上げてください。
NBTForge は関連アイテムのプリセットの隣にコマンドを並べておけるため、この用途では特に便利です。先に販売アイテムを組み立ててから、そのアイテムを sell スタックとして貼り付ける、あるいは作り直すという流れにできます。
- 常設ショップでは maxUses を活用してください。
- 取引によって村人のレベルを上げたくない場合は、rewardExp:0b を指定します。
- 後始末、保護、エリア判定のロジック用に Tags を活用します。
マップ経済のワークフロー
村人のショップは、たいていの場合より大きな Command Pack に属する存在です。召喚コマンドを、エリア設定、タイトルプロンプト、テスト用村人のバックアップ用クリアコマンドなどと組み合わせてください。
取引コストは読み取りやすく保ってください。珍しい通貨を必要とするショップであれば、その通貨アイテムを先に独自の Give プリセットとして作っておきましょう。
プリセットを実際の Project に合わせ込む
Minecraft カスタム村人取引コマンドは、単にコピーする文字列ではなく、テスト済みの出発点として扱ってください。出力がきちんと動いた段階で、わかりやすい Project 名を付けて保存し、対象の Minecraft バージョンを書き残し、scoreboard、ボスバー、ルートテーブル、リセット行など関連するセットアップコマンドの近くに置いておきます。
プリセットをマップ、サーバー、Command Pack へ公開する前に、起動中の Workbench の中だけで動かすのではなく、いったんコピーした成果物から実行してみてください。これによって、依存関係の抜け、古いセレクター、Edition の選び間違い、ローカルでの作業状態に依存して偶然動いていただけのコマンドなどを洗い出せます。
- 選択した Edition と Version は、共有するコマンドにそのまま反映させます。
- ダメージ、キル、クリア、テレポートを行う前に、無害なコマンドでセレクターの挙動を確認してください。
- 長いコマンドをチャットに貼り付けるのではなく、Project か関数スタイルのワークフローへ移しましょう。
- エンティティ、アイテムコンポーネント、passenger、データパックのリソースを変更した後は、警告内容をもう一度見直してください。
FAQ
村人の取引でカスタム名付きアイテムを販売できますか?
はい。販売アイテムには、選択した Java バージョンファミリに応じて、アイテムコンポーネントもしくは NBT を持たせられます。
カスタム村人が消えてしまうのはなぜですか?
PersistenceRequired を付与したうえで、対象の難易度とエリアでコマンドを試してください。あわせて、後からショップのエンティティを再発見できるよう、Tags も保存しておきます。
このプリセットを Command Pack に組み込むべきタイミングは?
出力がセットアップ行、リセットコマンド、ルートテーブルのリソース、scoreboard の状態、繰り返し実行するテストに依存している場合は、Command Pack のエントリとして扱います。単発で安全に使えるコマンドであれば、引き続き出力から直接コピーするので構いません。
このワークフローを開く
関連する Summon ワークベンチから始め、ワールドに合わせてプリセット項目を調整します。