メインコンテンツまでスキップ

リロードと設定検証

EasyMenu 7は、サーバーの稼働中にメニュー設定を安全に再読み込みできる /menu reload 機能を備えています。


アトミックリロードの仕組み

/menu reload を実行すると、EasyMenuは実行中のメニューには一切触れず、メモリ上で 完全に独立した「リロード候補(Candidate)」 を作成して事前検証を行います。

/menu reload 実行

1. YAML解析・設定読み込み (バックグラウンド非同期)
2. 単一メニュー内検証 (ID重複、スロット重複、無効な素材)
3. メニュー間検証 (open-menuの遷移先メニューが実在するか)
4. コマンド登録計画 (他プラグインとの重複チェック)

すべての検証に合格した場合のみ、実行中の状態を原子的に差し替え (Commit)

:::tip ロールバック保証 検証中に1箇所でもエラー(ERROR)が見つかった場合、リロード候補は即座に破棄され、リロード前の設定、メニュー、コマンド、キャッシュが100%維持されます。設定ミスによって稼働中のメニューが壊れたり、サーバーがエラーで落ちることはありません。 :::


診断メッセージ(Diagnostics)の形式

リロード時、設定に問題がある場合はコンソールに次のような詳細な診断ログが出力されます。

[shop] menu-items[0].material (diamond) unknown or non-item material: DIMAOND [unknown-material]

ログには以下の情報が含まれます。

  • [shop]: 対象のメニューID
  • menu-items[0].material: YAML内のパス
  • (diamond): 対象の要素ID
  • unknown or non-item material: DIMAOND: エラー原因の説明
  • [unknown-material]: 安定した診断コード

重大度(Severity)

  • ERROR: 構文不正、素材名の間違い、スロット重複、存在しないメニューへの遷移先など。リロードは拒否されロールバックされます。
  • WARNING: 未知のサウンド名など。警告が出力され、代替の安全な処理を用いてリロードは続行されます。
  • INFO: 読み込み完了や統計情報。

開いているメニューの保護(Stale Interaction Rejection)

リロードが完了した瞬間、リロード前にプレイヤーが開いていた古いメニュー画面からのクリック操作は安全に拒否され、意図しない古いコマンドが実行されるのを防ぎます。