generate-permission-systemlisted
Install: claude install-skill MrPippi/MJP-Claude-Skills
# Generate Permission System Skill
## 目標
依使用者提供的插件名稱與權限節點清單,自動產生:
- `PermissionManager.java` 工具類別(靜態方法封裝)
- `plugin.yml` 的 `permissions:` 區段(含描述、default、children 繼承)
---
## 使用流程
1. **詢問基本資訊**:插件名稱、權限節點清單、預設是否僅 OP 可用
2. **推導節點樹**:自動生成根萬用節點 `pluginid.*`,將所有節點列為 children
3. **產生 plugin.yml permissions 區段**(YAML)
4. **產生 PermissionManager.java**(靜態工具類,含每個節點的常數與便捷方法)
5. **說明如何在主類與指令中調用**
---
## 輸入參數說明
| 參數 | 說明 | 範例 |
|------|------|------|
| `plugin_name` | 插件名稱(CamelCase) | `MyPlugin` |
| `permission_nodes` | 權限節點清單(可含子節點) | `myplugin.admin`, `myplugin.use` |
| `default_op_only` | 預設是否僅 OP 可用(true/false) | `true` |
---
## 代碼範本
### 1. plugin.yml permissions 區段
```yaml
permissions:
myplugin.*:
description: MyPlugin 所有權���
default: op
children:
myplugin.admin: true
myplugin.use: true
myplugin.admin:
description: MyPlugin 管理員權限
default: op
myplugin.use:
description: MyPlugin 一般使用權限
default: true
```
**規則:**
- 根節點(`pluginid.*`)使用 `children` 聚合所有子節點
- `default` 值:`op`(僅 OP)、`true`(所有人)、`false`(無人)、`not op`(非 OP)
- 依 `default_op_only` 決定葉節點預設值
---
### 2. PermissionManager.java
```java
package com.example.myplugin.manager;
import org.bukkit.entity.Player;
import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.PluginManager;
/**
* MyPlugin 權限管理工具類別
* 所有節點已在 plugin.yml 宣告,此類提供便捷的檢查方法。
*/
public final class PermissionManager {
// 權限節點常數
public static fi