generate-event-listenerlisted
Install: claude install-skill MrPippi/MJP-Claude-Skills
# Generate Event Listener Skill
## 目標
依使用者提供的事件名稱清單,產生結構正確、可直接貼入專案的 `Listener` 實作類別,包含常用欄位存取範例與執行緒安全提醒。
---
## 使用流程
1. **詢問事件清單**:使用者列出要監聽的事件(例:`PlayerJoinEvent, BlockBreakEvent`)
2. **詢問選項**:
- EventPriority(預設 `NORMAL`)
- 是否 `ignoreCancelled`(預設 `true`)
- 是否需要取消事件(`event.setCancelled(true)`)
3. **產生 Listener 類別**:含所有指定事件的 handler 方法
4. **輸出註冊方式**:在 `onEnable()` 中呼叫
---
## 輸入參數說明
| 參數 | 範例 | 說明 |
|------|------|------|
| `class_name` | `PlayerListener` | 類別名稱 |
| `package` | `com.example.myplugin.listeners` | 套件名 |
| `events` | `PlayerJoinEvent, PlayerQuitEvent` | 要監聽的事件清單 |
| `priority` | `NORMAL` | EventPriority(LOW/NORMAL/HIGH/HIGHEST/MONITOR) |
| `ignore_cancelled` | `true` | 是否忽略已取消的事件 |
---
## 代碼範本
### 玩家事件 Listener
```java
package com.example.myplugin.listeners;
import com.example.myplugin.MyPlugin;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerDeathEvent;
public class PlayerListener implements Listener {
private final MyPlugin plugin;
public PlayerListener(MyPlugin plugin) {
this.plugin = plugin;
}
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
public void onPlayerJoi