バージョン移行ガイド
EasyMenu 7へのアップグレード手順と、過去バージョンからの移行について解説します。
EasyMenu 6 から EasyMenu 7 への移行
要点
- 既存のYAML設定ファイル(
config.yml,main.yml,sub/*.yml,lang/*.yml)は変更不要です。そのまま読み込まれます。 - NegiLib 1.x が必須となりました。
移行手順
- サーバーを停止します。
plugins/フォルダにNegiLib-1.1.1.jarとEasyMenu-7.0.2.jarを配置します。- 旧
EasyMenu-6.x.x.jarを削除します。 - サーバーを起動します。
- コンソールに次のようなログが出力されることを確認します(
EasyMenuを有効化しました。の部分はlanguageの設定で変わります)。
[EasyMenu] EasyMenu has been enabled. NegiLib 1.1.1 (API 1.0), capabilities=N
capabilities= の数字はサーバー環境によって変わります。
要件の変更点
| 項目 | EasyMenu 6 | EasyMenu 7 |
|---|---|---|
| 対応サーバー | Spigot, Paper, Folia | Paper, Purpur, Folia |
| Java | 17 以降 | 17 以降 |
| Minecraft | 1.20.1 以降 | 1.20.1 以降 |
| 必須プラグイン | なし | NegiLib 1.x |
| PlaceholderAPI | 任意 | 任意 |
NegiLibがFoliaスケジューラーAPIを前提とするため、EasyMenu 7ではSpigotはサポートされません。Paper、Purpur、Folia環境をご利用ください。
これまでどおり動作する設定
EasyMenu 6のすべてのYAML記法はEasyMenu 7でも完全に動作します。
menu-title: "&6&lEasyMenu"
menu-opensound: "ENTITY_EXPERIENCE_ORB_PICKUP"
menu-background-item: "GRAY_STAINED_GLASS_PANE"
menu-size: 54
menu-items:
- location: "3,3" # location と slot の両方を引き続きサポート
material: "RED_BED"
name: "&c&lHome"
command: "/home" # 先頭のスラッシュあり・なし両対応
sound: "ENTITY_ENDERMAN_TELEPORT"
close-menu: true
lore:
- "&7Teleport to your home"
- slot: 22
material: "EMERALD"
command: "sub_shop" # サブメニュー "shop" を開く
- slot: 26
material: "BARRIER"
command: "main_mainopen" # メインメニューを開く
型付きアクション(actions:)、click-policy、custom-model-data、input アクションもそのまま動作します。
把握しておきたい挙動の改善
| 変更点 | 理由・影響 |
|---|---|
command: "shop buy diamond" のように先頭スラッシュなしのコマンドがプレイヤーコマンドとして実行可能に(v6ではエラー) | 簡易記法を使いやすくするため |
| アクションを宣言したにもかかわらず1件も生成されなかった場合はリロード時にエラー検出 | ボタンが黙って装飾(無反応)になるのを防ぐため |
存在しないメニューへの open-menu 遷移先をリロード時に検出 | クリックしたプレイヤーだけが失敗するのを未然に防ぐため |
open-menu はターゲットメニューの描画完了を待ってから後続アクションを実行 | 画面遷移後のメッセージが正しく遷移先を指すようにするため |
入力フォームの initial(初期値)が入力条件を満たしているかを検証 | 最初の送信が理由不明で失敗するのを防ぐため |
| 未知のサウンド名は警告となり、サウンド再生アクションのみ除外されてメニューは開く | 装飾のサウンドでメニュー全体が開けなくなるのを防ぐため |
config.yml の新キー
既存の config.yml はそのまま使えます。EasyMenu 7の初回起動時に、以下の新しいキーが既定値で認識されます。
runtime:
default-presentation: inventory # 指定のないメニューの表示形式(既定: インベントリGUI)
diagnostics:
log-warnings-on-load: true
input:
default-timeout-seconds: 60
cooldown:
cleanup-interval-seconds: 60
切り戻し(ロールバック)について
EasyMenu 7はメニューファイル(main.yml、sub/*.yml)を新形式に自動変換・書き換えすることはありません。
一方、config.yml は起動時に、足りない新しいキーが既定値で追記されて保存されます。EasyMenu 6は未知のキーを無視するため、そのままでも動作しますが、完全に元の状態へ戻したい場合は、アップグレード前に config.yml のバックアップを取っておいてください。
元の EasyMenu-6.x.x.jar に差し戻し、必要なら config.yml を戻せば、切り戻せます。
旧記法と推奨記法の対応表
EasyMenu 6までの書き方は、すべてそのまま使えます。新しく書くメニューでは、右の書き方をお勧めします。
| 旧記法(そのまま動作) | 推奨記法 | 違い |
|---|---|---|
location: "5,2" | slot: 13 | location は1始まりの「列,行」。slot は0始まりの番号。両方あると slot が優先されます。 |
command: "/spawn" / command: "spawn" | action: で type: player-command | スラッシュの有無は問いません。どちらもプレイヤー権限で実行されます。 |
command: "sub_shop" | action: で type: open-menu、menu: shop | 簡易記法は内部で open-menu に変換されます。複数アクションと組み合わせるなら actions: を使います。 |
command: "main_mainopen" | type: open-menu、menu: main | 同上。 |
command: でコンソール実行(できない) | type: console-command | command: は常にプレイヤー権限です。コンソール権限が必要なら型付きアクションを使います。 |
dialog: true | presentation: の mode: native-preferred | dialog は簡易記法です。両方書くと presentation が優先されます。 |
menu-size / menu-background-item | presentation.inventory.size / background | どちらも使えます。presentation.inventory を書かなければ前者が使われます。 |
EasyMenu 5.x から EasyMenu 6 への移行(アーカイブ)
EasyMenu 5.xからアップグレードする場合の手順です。
フォルダの自動移行
EasyMenu 5.xで使用されていた以下のフォルダは、初回起動時に自動的に新フォルダへ移行されます。
plugins/EasyMenuPlugin/ → plugins/EasyMenu/
旧 config.yml 内にメニュー定義が含まれており、main.yml が存在しない場合は、メニュー部分が自動的に main.yml へ分離されます。
コマンドの変更
旧バージョンの /menureload コマンドは廃止されました。
/menu reload
権限ノードは easymenu.command.reload(または easymenu.admin)です。
互換記法
location: "5,3"command: "/spawn"command: "sub_shop"command: "main_mainopen"close-menu: true