リロードと設定検証
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]: 対象のメニューIDmenu-items[0].material: YAML内のパス(diamond): 対象の要素IDunknown or non-item material: DIMAOND: エラー原因の説明[unknown-material]: 安定した診断コード
重大度(Severity)
- ERROR: 構文不正、素材名の間違い、スロット重複、存在しないメニューへの遷移先など。リロードは拒否されロールバックされます。
- WARNING: 未知のサウンド名など。警告が出力され、代替の安全な処理を用いてリロードは続行されます。
- INFO: 読み込み完了や統計情報。
開いているメニューの保護(Stale Interaction Rejection)
リロードが完了した瞬間、リロード前にプレイヤーが開いていた古いメニュー画面からのクリック操作は安全に拒否され、意図しない古いコマンドが実行されるのを防ぎます。