purpur-api-callerlisted
Install: claude install-skill MrPippi/MJP-Claude-Skills
# Purpur API Caller / Purpur API 代碼產生器
## 技能名稱 / Skill Name
purpur-api-caller
## 目的 / Purpose
為需要使用 Purpur 專屬 API 的插件產生正確的 Java 代碼,包含執行環境偵測守衛(確保同一 JAR 可在 Paper 和 Purpur 上執行)。
## 觸發條件 / Triggers
- 「Purpur API」
- 「PlayerAFKEvent」
- 「purpur.yml 配置」
- 「Purpur 特有功能」
- 「purpur event」
- 「EntityAirChangeEvent」
## 輸入參數 / Inputs
| 參數 | 範例 | 說明 |
|------|------|------|
| `api_type` | `afk_event` | 要使用的 Purpur API 類型(見下方速查表) |
| `plugin_package` | `com.mynetwork.myplugin` | 插件套件名稱 |
| `purpur_only` | `false` | 是否要求僅在 Purpur 上執行(true = 加入執行環境守衛) |
## 輸出產物 / Outputs
- 對應 API 的 Java 代碼片段或完整類別
## Purpur API 速查表 / API Quick Reference
| API 類型 | 套件 | 說明 |
|---------|------|------|
| `PlayerAFKEvent` | `org.purpurmc.purpur.event.player` | 玩家進入 AFK 狀態 |
| `PlayerNotAFKEvent` | same | 玩家離開 AFK 狀態 |
| `EntityAirChangeEvent` | `org.purpurmc.purpur.event.entity` | 實體空氣值變化 |
## 代碼範本 / Code Templates
### 1. AFK 事件監聽器(`PlayerAFKEvent`)
```java
package {plugin_package}.listeners;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import org.purpurmc.purpur.event.player.PlayerAFKEvent;
import org.purpurmc.purpur.event.player.PlayerNotAFKEvent;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
/**
* Handles Purpur-specific AFK events.
* Only register this listener if Purpur is available at runtime.
* See: MyPlugin.isPurpurAvailable()
*/
public class PurpurAfkListener implements