クールダウン
アイテムのクリックによるコマンド実行やテレポートに「再使用待機時間(クールダウン)」を設定し、プレイヤーの連打やスパムを防止できます。
記述方法
1. 簡易記法(時間のみ指定)
menu-items:
- slot: 13
material: ENDER_PEARL
name: "&aスポーンへワープ"
cooldown: 5s # 5秒のクールダウン
command: "/spawn"
2. 詳細設定(セクション指定)
menu-items:
- slot: 13
material: ENDER_PEARL
name: "&aスポーンへワープ"
cooldown:
duration: 10s # クールダウン時間 (例: 500ms, 10s, 1m)
bypass-permission: "myserver.cooldown.bypass" # クールダウンを無視できる権限(任意のノード名)
message: "&cクールダウン中です! あと {remaining} 秒お待ちください。" # 残り時間の通知
key: "global_teleport" # 複数アイテムで共有するクールダウンキー
command: "/spawn"
クールダウンの設定項目
| キー | 型 | 既定値 | 説明 |
|---|---|---|---|
duration | 時間文字列 | 必須 | クールダウンの持続時間(下表の単位)。0 や負の値はエラー(invalid-cooldown)です。 |
bypass-permission | 文字列 | なし | この権限を持つプレイヤーはクールダウン制限を受けません。ノード名は自由に決められ、EasyMenuは自動登録しません(権限プラグインで付与してください)。 |
message | 文字列 | 言語ファイル | クールダウン中にクリックした際に送信されるメッセージ。{remaining} で残り秒数が展開されます。 |
key | 文字列 | なし | クールダウンを共有するためのグループ識別子。 |
時間の書き方
時間は 数値 + 単位 で書きます。大文字小文字は区別されません。
| 書き方 | 意味 | 例 |
|---|---|---|
ms | ミリ秒 | 500ms |
s | 秒 | 5s |
m | 分 | 2m |
h | 時間 | 1h |
t | tick(1tick = 50ミリ秒) | 40t |
| 単位なしの整数 | 秒 | 5(5s と同じ) |
小数(1.5s)は使えません。ミリ秒で 1500ms と書いてください。この書き方は delay や potion-effect の duration でも共通です。
共有クールダウン (key)
通常、クールダウンは「プレイヤー + メニュー + アイテム」ごとに個別にカウントされます。
key を設定すると、同じキーを持つ複数のアイテム間で1つのクールダウンを共有できます。
テレポートメニューの例
menu-items:
# スポーンワープ
- slot: 11
material: COMPASS
name: "&aスポーンへ"
cooldown:
duration: 30s
key: "teleport_cooldown" # 共有キー
command: "/spawn"
# ロビーワープ
- slot: 15
material: NETHER_STAR
name: "&bロビーへ"
cooldown:
duration: 30s
key: "teleport_cooldown" # 共有キー
command: "/lobby"
上記の設定では、スポーンワープを使用したプレイヤーは、30秒間ロビーワープも使用できなくなります。
共有キーを指定した場合、クールダウンの単位は「プレイヤー + キー」になります。メニューやアイテムの区別がなくなるため、別のメニューのアイテムとも共有できます。
プレイヤーがサーバーから退出すると、そのプレイヤーのクールダウンは破棄されます。/menu reload ではクールダウンは消えません。
クールダウン消費のタイミングと安全性
EasyMenu 7では、クールダウンは「すべての条件判定(権限・表示・所持金等)を通過した直後、アクションが開始される前(ON_ATTEMPT)」に即座に消費されます。
アクションの途中で入力がキャンセルされたり、コマンドが失敗した場合でもクールダウンは消費されるため、連打によるコマンドスパムや負荷攻撃を未然に防止します。