コマンド生成の検証方法
MC Commanderでは「入力欄が動くこと」と「Minecraftで受け付けられる構文であること」を分けて検査します。過去に見つかった不具合も含め、どのように再発を防いでいるかを公開します。
検査を4段階に分けています
- ページ検査:入力欄、生成結果、コピー、保存、共有など、ブラウザ上の機能が欠けていないか確認します。
- コード検査:JavaScriptとPHPの構文エラー、内部リンク切れ、読み込みファイルの不足を自動検査します。
- 出力形式の回帰テスト:名前付きGive、Unbreakable、Summon、Tellrawなど、過去に壊れやすかった出力を固定テストします。
- ゲーム内確認:実際にMinecraft本体で確認した場合のみ、対象エディションとバージョンを明示して「ゲーム内確認済み」と扱います。
名前付きGiveの再発防止
Java 1.20.5以降では、名前付きアイテムは単純な[name=...]ではなく、minecraft:custom_nameコンポーネントを使用します。日本語、引用符、アポストロフィ、バックスラッシュを含む名前を回帰テストし、無効な旧形式が出力された場合は表示・コピー前に検出します。
/give @p minecraft:diamond_sword[minecraft:custom_name={"text":"検証の剣"}] 1バージョンごとに構文を分ける理由
| 対象 | 主な扱い |
|---|---|
| Java 1.12.2以前 | 旧NBTと旧ID体系を考慮 |
| Java 1.13~1.20.4 | 名前空間付きIDと従来NBT |
| Java 1.20.5~1.21.4 | Item Stack Componentsへ移行 |
| Java 1.21.5以降 | Text Componentやエンティティデータの変更を考慮 |
| Bedrock Edition | Java版NBTを流用せず、統合版で可能な構文だけを出力 |
Java版と統合版で同じ機能を一対一変換できない場合は、無理に「対応済み」とせずページ上で制限を表示します。
実際に修正した不具合
- GiveページでJavaScriptの読み込み状態によって入力フォームが表示されない問題。
- 名前付きアイテムで無効な
[name=...]形式が再発しないよう回帰テストを追加。 - Java 1.21.5以降のUnbreakable、Summon装備、属性、クリック・ホバーイベントをバージョン別に分離。
- BedrockのTellraw・TitlerawをJava版のテキスト構文と混同しないよう出力を分離。
「自動テスト・仕様照合を実施」の意味
サイトの「自動テスト・仕様照合を実施」は、公式仕様との照合、コード検査、回帰テストを実施していることを意味します。実際のMinecraft本体で全組み合わせを実行したという意味ではありません。不具合報告は再発防止テストへ反映します。
IDの確認方法と、確認できていない範囲
アイテム・ブロック・エンティティ・効果・エンチャント・属性のIDは、種類ごとに別の一覧で確認しています。/give はアイテムの一覧だけ、/setblock と /fill はブロックの一覧だけ、/summon はエンティティの一覧だけを見るため、たとえば効果のIDを /give に入れても出力しません。
IDの一覧は、Minecraft本体のデータ生成機能が出力する公式の登録データ(registries.json)から作る仕組みにしています。公式データを取り込んだバージョンは公式データだけで判定し、まだ取り込んでいないバージョンはサイトで整理した一覧で判定します。
コマンドの形は、公式のコマンド定義(commands.json)の構造と照合しています。確認しているのは、コマンドの分岐の順番、数値の範囲、座標やターゲットセレクターの書き方、IDが登録されているかどうかまでです。NBTやテキスト、アイテムのcomponentsの細かい書き方は、この照合ではなくサイト独自の出力テストで確認しています。
Java版26.3(2026年9月公開)はまだ公式データを取り込んでいないため、選択肢には入れていません。26.2向けの出力は多くの場合26.3でも使えますが、確認済みではありません。
関連ページ
コンテンツ制作・検証方針 / 運営者情報 / お問い合わせ / 目的別コマンドガイド