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

クールダウン

アイテムのクリックによるコマンド実行やテレポートに「再使用待機時間(クールダウン)」を設定し、プレイヤーの連打やスパムを防止できます。


記述方法​

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
ttick(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)」に即座に消費されます。

アクションの途中で入力がキャンセルされたり、コマンドが失敗した場合でもクールダウンは消費されるため、連打によるコマンドスパムや負荷攻撃を未然に防止します。