診断コード一覧
メニューの読み込みや /menu reload のとき、設定に問題があると、サーバーコンソールに次の形式でログが出力されます。
[shop] menu-items[0].material (diamond) unknown or non-item material: DIMAOND [unknown-material]
行末の [ ] の中が診断コードです。コードは安定した識別子で、メッセージの文言が変わっても同じです。
ログの読み方は リロードと設定検証 を参照してください。
重大度
| 重大度 | 意味 |
|---|---|
| ERROR | リロード候補(またはメニュー)が拒否されます。以前の設定がそのまま使われます。修正が必要です。 |
| WARNING | 問題のある部分だけを取り除く、または既定値を使って続行します。diagnostics.log-warnings-on-load: false で出力を止められます。 |
同じコードでも、原因によってERRORになる場合とWARNINGになる場合があります。下の表の「重大度」を確認してください。
共通の入力ミス
| コード | 重大度 | 原因 | 修正方法 |
|---|---|---|---|
invalid-type | ERROR | キーの値の型が違います。menu-items がリストでない、文字列であるべき値が数値やリストになっている、など。 | メッセージの must be a list / must be text / must be a number / must be true or false / must be a section に合わせて、YAMLの書き方を直します。 |
invalid-value | ERROR | 値が許される範囲や選択肢にありません。click-policy の綴り、executor が player / console でない、delay の duration が0以下、title のtickが負、body の type が不明、type: input の command に {変数名} がない、など。 | メッセージの内容に従って値を直します。type: input の command には、{input}(variable を指定した場合はその名前)を含めます。 |
missing-field | ERROR | 必須のキーがありません。アイテムに command / action / actions がない、アクションの type / menu / message / sound / prompt / world / x / y / z / effect がない、open-command.name がない、input の id がない、cooldown の duration がない、material がない、など。 | 足りないキーを書き足します。装飾専用のアイテムにしたい場合は actions: [] と書きます。 |
アイテム・配置
| コード | 重大度 | 原因 | 修正方法 |
|---|---|---|---|
unknown-material | ERROR / WARNING | アイテムの material が存在しない、またはアイテムでない素材です(ERROR)。menu-background-item の素材が不明です(WARNING。既定の GRAY_STAINED_GLASS_PANE を使って続行)。 | 素材名を直します(例: DIAMOND)。背景を使わないなら none を指定します。 |
invalid-slot | ERROR | slot が 0〜menu-size - 1 の範囲外、または location が 列,行 の形式でない・数値でない・範囲外です。 | slot を範囲内にします。location は "列,行"(列 1〜9、行 1〜menu-size ÷ 9)で書きます。 |
duplicate-slot | ERROR | 複数のアイテムが同じスロットを使っています。 | どちらかのスロットを変えます。 |
duplicate-element-id | ERROR | 複数のアイテムが同じ id を持っています(省略時の自動 id も含む)。 | id を一意にします。 |
slot-overrides-location | WARNING | 1つのアイテムに slot と location の両方があります。slot が優先されます。 | どちらか一方にします。 |
invalid-size | ERROR | menu-size(または presentation.inventory.size)が、9の倍数で 9〜54 の範囲にありません。 | 9, 18, 27, 36, 45, 54 のいずれかにします。 |
unknown-component | WARNING | components に未知のキーがあります。そのキーは無視されます。 | 使えるキー(unbreakable, max-stack-size, damage, max-damage, repair-cost, rarity, item-model, hide-tooltip, enchantment-glint-override)にします。 |
アクション
| コード | 重大度 | 原因 | 修正方法 |
|---|---|---|---|
ambiguous-action | ERROR | action と actions を同時に書いています。 | どちらか一方にします。 |
action-overrides-command | WARNING | command と action / actions を両方書いています。command は無視されます。 | 不要な方を削除します。 |
unknown-action-type | ERROR | アクションの type が未知です。 | 使える種別は command, player-command, console-command, open-menu, close-menu, message, sound, title, teleport, delay, potion-effect, input です。 |
empty-command | ERROR | コマンドが空です(空白だけ、/ だけを含む)。 | コマンドを書きます。 |
no-usable-action | ERROR | action または actions を書いたのに、有効なアクションが1つも残りませんでした。 | 個別のエラーを先に直します。 |
unknown-sound | WARNING | サウンド名が存在しません。その sound だけが取り除かれ、メニューは開きます。 | サウンド名を直します(例: ENTITY_PLAYER_LEVELUP)。 |
unknown-menu-reference | ERROR | open-menu(または sub_<id>)の遷移先に、存在しないメニューIDを指定しています。バリアントや type: input の完了後アクション内も検査されます。 | メニューIDを直すか、対応する sub/<id>.yml を作成します。 |
条件・バリアント
| コード | 重大度 | 原因 | 修正方法 |
|---|---|---|---|
invalid-condition | ERROR | 条件の書き方が不正です。未知のキー、空の権限、world に in / not-in がない、gamemode が空、placeholder に value / operator / compare が揃っていない、未知の operator、all / any がリストでない、など。 | 条件 と Condition 一覧 を参照して直します。 |
invalid-variant | ERROR | バリアントに override セクションがありません。 | override: を追加します。 |
表示・入力・クールダウン・コマンド
| コード | 重大度 | 原因 | 修正方法 |
|---|---|---|---|
invalid-presentation | ERROR / WARNING | 表示モードの名前が不明です(ERROR。presentation.mode または runtime.default-presentation)。native.columns / native.button-width が 1 未満です(WARNING。既定値を使って続行)。 | モードは inventory, native-preferred, native-required, rich-preferred, rich-required, auto から選びます。 |
dialog-key-ignored | WARNING | dialog と presentation を両方書いています。dialog は無視されます。 | どちらか一方にします。 |
invalid-cooldown | ERROR | クールダウンの時間が不正(0以下、数値でない)、またはセクションでも時間でもありません。 | 5s のように正の時間を書きます。 |
invalid-input | ERROR / WARNING | inputs の定義に問題があります。未知の type、min が max を超える、max-length や timeout-seconds が0以下、option に選択肢がない・id が重複している、initial が入力の条件を満たさない、など(ERROR)。min / max を数値以外の型に書いた、options を option 以外に書いた、type: input アクションに入力後の処理がない(WARNING)。 | メッセージの内容に従って直します。 |
duplicate-input-id | ERROR | 同じメニュー内で inputs の id が重複しています。 | id を一意にします。 |
unknown-input-reference | ERROR | アイテムの input-refs が、宣言されていない入力 id を指しています。 | inputs に宣言するか、input-refs を直します。 |
invalid-open-command | ERROR | open-command の name または aliases に使えない文字が含まれる、または32文字を超えています。 | 英数字・_・- のみ、32文字以内にします。 |
コマンド衝突などのメニュー以外のエラー
次のエラーは診断コードを持たず、リロードのログに別の形式で出力されます。
| メッセージ | 原因 | 修正方法 |
|---|---|---|
Command '/xxx' is requested by both 'a' and 'b' | 複数のメニューの open-command が同じコマンド名を使っています。 | 名前や aliases を変えます。 |
Command '/xxx' is already owned by <プラグイン名> | 他のプラグインが同名のコマンドをすでに持っています。 | open-command.name または aliases を変えます。 |
Duplicate menu ID: xxx | 異なるフォルダに同名のYAMLがあります。メニューIDはファイル名で決まるため重複できません。 | ファイル名を変えます。 |
Menu file not found / Configuration file is empty | main.yml が無い、または空です。 | ファイルを復元します。 |
Candidate config.yml is invalid | config.yml のYAMLが読めません。 | インデントや引用符などの文法を直します。 |