- 版权类型
- 原创
- 插件中文名称
- 称号套装
- 插件英文名称
- PlayerTitle-Suit
- 原帖地址
- #
- 支持的核心(服务端)
- Spigot
- Paper
- Folia
- Purpur
- PufferFish
- Leaves
- 语言支持
- 中文(简体)
- 前置组件
- PlayerTitle
AttributePlus-3.x
PlaceholderAPI
- 适配版本(Java)
- 1.21
- 1.20
- 1.19
[MD]
## ✨ 功能特性
- 🎭 **套装系统**: 配置多个称号组成套装
- 📊 **阶梯效果**: 收集不同数量称号获得不同属性加成
- 🔄 **累加模式**: 支持阶梯属性累加(2件套+4件套属性共存)
- ⚔️ **AttributePlus集成**: 使用AP3持久化和静态属性源,性能优异
- 🖥️ **GUI界面**: 美观的图形界面查看和激活套装
- 🎮 **手动激活**: 玩家在GUI中手动激活/取消套装
- 🎯 **条件限制**: 支持等级、权限、世界、变量等激活条件
- 📝 **PlaceholderAPI**: 提供丰富的变量支持,可显示称号套装进度
- 💾 **数据持久化**: 玩家套装激活状态和属性永久保存
- 🔧 **热重载**: 支持配置文件热重载,属性自动更新
## 📦 依赖插件
| 插件 | 要求 | 说明 |
|------|------|------|
| PlayerTitle | 必须 | 称号插件本体 |
| AttributePlus | 必须 | 属性插件 (3.x) |
| PlaceholderAPI | 可选 | 变量支持 (条件判断需要) |
## 🖥️ GUI 界面
### 套装列表界面
- 显示所有套装及收集进度
- 进度条可视化展示
- 已激活套装显示附魔效果
- 支持分页浏览
- 刷新按钮、统计信息
### 套装详情界面
- 套装完整信息展示
- 左侧显示所需称号(✔已拥有 / ✘未拥有)
- 右侧显示阶梯效果及属性加成
- **激活按钮**: 点击激活套装获得属性加成
- **取消按钮**: 点击取消激活移除属性
- **升级按钮**: 收集更多称号后升级阶梯
## 📋 命令
### 玩家命令
| 命令 | 权限 | 说明 |
|------|------|------|
| `/titlessuit` | - | 打开套装GUI |
| `/titlessuit open` | - | 打开套装GUI |
| `/titlessuit list` | - | 查看所有套装(文字) |
| `/titlessuit info <套装ID>` | - | 查看套装详情(含条件状态) |
| `/titlessuit check [玩家]` | - | 检查套装状态 |
### 管理员命令
| 命令 | 权限 | 说明 |
|------|------|------|
| `/titlessuit reload` | titlessuit.command.reload | 重载配置(自动更新所有玩家属性) |
| `/titlessuit refresh [玩家/all]` | titlessuit.command.refresh | 刷新套装属性 |
| `/titlessuit forceupdate [玩家/all]` | titlessuit.command.refresh | 强制更新套装(refresh别名) |
| `/titlessuit give <玩家> <套装ID> [阶梯]` | titlessuit.command.give | 强制为玩家激活套装 |
| `/titlessuit remove <玩家> <套装ID>` | titlessuit.command.remove | 强制移除玩家套装 |
| `/titlessuit save` | titlessuit.command.save | 保存所有玩家数据 |
| `/titlessuit debug <on/off>` | titlessuit.command.debug | 调试模式 |
**命令别名**: `/tsuit`, `/ts`, `/套装`
### `/titlessuit info` 输出示例
```
=== 套装详情 ===
ID: dragon_set
名称: §6§l龙之霸主
描述:
§7传说中的龙之套装
需要的称号 (4):
§7- 龙之子 §8(ID:1) §a✔
§7- 龙之怒 §8(ID:2) §a✔
§7- 龙之魂 §8(ID:3) §c✘
§7- 龙之王 §8(ID:4) §c✘
激活条件:
§7- 等级要求: §f30 §a✔ §7(当前: 35)
§7- §a等级要求: §f>= 50 §c✘ §7(当前: 35)
§7- §e金币要求: §f>= 100000 §c✘ §7(当前: 50000)
阶梯效果:
§b2件套:
§7物理伤害: 30
§7生命力: 100
§b4件套:
§7物理伤害: 200
§7生命力: 800
你的进度: §f2/4 §7(50%)
§c✘ 无法激活套装
```
> 命令会显示所有激活条件(等级、权限、世界、变量条件)及其当前状态(✔满足 / ✘不满足),并在括号中显示当前值。
## 🔑 权限
| 权限 | 说明 | 默认 |
|------|------|------|
| titlessuit.command | 基础命令权限 | 所有人 |
| titlessuit.admin | 管理员权限 | OP |
| titlessuit.command.reload | 重载配置 | OP |
| titlessuit.command.check | 检查其他玩家套装状态 | OP |
| titlessuit.command.refresh | 刷新套装属性 | OP |
| titlessuit.command.give | 强制给玩家激活套装 | OP |
| titlessuit.command.remove | 强制移除玩家套装 | OP |
| titlessuit.command.save | 保存玩家数据 | OP |
| titlessuit.command.debug | 调试模式 | OP |
## 📊 PlaceholderAPI 变量
> **重要**: 变量前缀为 `titlessuit`(无下划线),因为 PlaceholderAPI 使用下划线分隔标识符和参数
### 基础变量
| 变量 | 说明 | 示例输出 |
|------|------|---------|
| `%titlessuit_count%` | 已激活套装数量 | `3` |
| `%titlessuit_list%` | 已激活套装列表 | `龙之霸主, 元素掌控者` |
| `%titlessuit_total%` | 服务器套装总数 | `10` |
### 套装相关变量
| 变量 | 说明 | 示例输出 |
|------|------|---------|
| `%titlessuit_<套装ID>_activated%` | 套装是否激活 | `true` / `false` |
| `%titlessuit_<套装ID>_tier%` | 当前激活阶梯 | `4` |
| `%titlessuit_<套装ID>_progress%` | 收集进度 | `2/4` |
| `%titlessuit_<套装ID>_percent%` | 收集百分比 | `50%` |
| `%titlessuit_<套装ID>_name%` | 套装名称 | `龙之霸主` |
| `%titlessuit_<套装ID>_missing%` | 缺少称号数量 | `2` |
| `%titlessuit_<套装ID>_owned%` | 已拥有称号数量 | `2` |
| `%titlessuit_<套装ID>_required%` | 需要的称号总数 | `4` |
| `%titlessuit_<套装ID>_canactivate%` | 是否可以激活 | `true` / `false` |
| `%titlessuit_<套装ID>_maxtier%` | 可达到的最高阶梯 | `2` |
| `%titlessuit_<套装ID>_status%` | 套装状态 | `已激活` / `可激活` / `称号不足` / `条件不满足` |
### 称号相关变量 ⭐新增
| 变量 | 说明 | 示例输出 |
|------|------|---------|
| `%titlessuit_title_<称号ID>_info%` | 该称号所属套装及进度 | `龙之霸主 (2/4), 元素掌控者 (1/5)` |
| `%titlessuit_title_<称号ID>_names%` | 该称号所属套装名称 | `龙之霸主, 元素掌控者` |
> **使用场景**: 可在 PlayerTitle 的称号 Lore 中添加这些变量,让玩家查看称号时直接看到套装收集进度!
## 📁 配置文件
| 文件 | 说明 |
|------|------|
| `config.yml` | 主配置文件 |
| `suits.yml` | 套装配置文件 |
| `messages.yml` | 消息配置文件 |
| `gui.yml` | GUI界面配置文件 |
| `playerdata/` | 玩家数据目录 (自动生成) |
## 🔧 配置说明
### 套装配置项
| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| name | String | 套装ID | 套装名称 (支持颜色代码) |
| cumulative | Boolean | false | 是否累加阶梯属性 |
| description | List | `[]` | 套装描述 |
| required_titles | List | 必填 | 需要的称号ID列表 |
| conditions.min_level | Int | 0 | 最低等级要求 |
| conditions.permission | String | 无 | 权限要求 |
| conditions.world | String | 无 | 世界限制 |
| conditions.placeholders | List | `[]` | 变量条件列表 (PlaceholderAPI) |
| tiers | Map | 必填 | 阶梯效果配置 |
| commands | List | `[]` | 全套激活时执行的命令 |
### 累加模式说明
- **cumulative: false** (默认): 只激活最高阶梯的属性
- 示例: 玩家拥有 4 件套时,只有 4 件套的属性生效,2 件套属性会被移除
- **cumulative: true**: 激活所有达成阶梯的属性(累加)
- 示例: 玩家拥有 4 件套时,2 件套 + 3 件套 + 4 件套的属性全部生效
### 变量条件配置
支持使用 PlaceholderAPI 变量作为激活条件,格式:`%变量% 比较符 值`
**支持的比较符:**
| 比较符 | 说明 | 示例 |
|--------|------|------|
| `==` | 等于 | `%player_name% == Steve` |
| `!=` | 不等于 | `%player_world% != world_nether` |
| `>` | 大于 | `%player_level% > 30` |
| `<` | 小于 | `%statistic_time_played% < 72000` |
| `>=` | 大于等于 | `%vault_eco_balance% >= 10000` |
| `<=` | 小于等于 | `%player_health% <= 20` |
| `contains` | 包含 | `%faction_name% contains Test` |
| `!contains` | 不包含 | `%player_displayname% !contains [VIP]` |
**格式1 - 简单列表:**
```yaml
conditions:
min_level: 30
placeholders:
- "%vault_eco_balance% >= 50000"
- "%player_level% >= 30"
- "%faction_power% > 100"
```
**格式2 - 带自定义显示名(用于GUI显示):**
```yaml
conditions:
min_level: 30
placeholders:
1:
condition: "%vault_eco_balance% >= 50000"
display: "&e金币要求"
2:
condition: "%player_level% >= 30"
display: "&b等级要求"
```
带显示名格式在GUI中会显示为 `金币要求: 当前值/50000`,更加直观易懂。
### 多套装支持
**完美支持!** 如果一个称号同时属于多个套装,变量会自动显示所有相关套装的进度,用逗号分隔:
**示例**: 称号 #5 属于 3 个套装
```
输出: 龙之霸主 (2/4), 元素掌控者 (1/5), VIP尊享 (3/3)
```
## ❓ 常见问题 (FAQ)
插件开发交流群:1072832808
### Q1: 修改套装属性后需要重启吗?
**A**: 不需要!执行 `/ts reload` 即可,所有玩家的属性会自动更新为新配置的数值。
### Q2: 玩家获得新称号后套装没有激活?
**A**: 如果是非自动模式,玩家需要打开GUI手动激活。如果是自动模式:
- 等待定时检查(如果开启)
- 玩家切换一次称号
- 使用 `/ts forceupdate <玩家名>` 强制更新
### Q3: 累加模式和非累加模式有什么区别?
**A**:
- **非累加** (cumulative: false): 4件套激活时,只有4件套属性,2件套属性被移除
- **累加** (cumulative: true): 4件套激活时,2+3+4件套属性全部生效
### Q4: 属性没有生效怎么办?
**A**: 检查以下内容:
1. 属性名是否与 AttributePlus 的 `attribute.yml` 一致
2. 属性格式是否正确(注意空格和冒号)
3. 开启 `debug: true` 查看详细日志
4. 使用 `/ap stats <玩家名>` 查看 AP 属性源中是否有 `playertitle_suit_` 开头的属性
### Q5: 如何让称号显示套装进度?
**A**: 在 PlayerTitle 的称号配置中添加:
```yaml
lore:
- "%titlessuit_title_<称号ID>_info%"
```
详见 [称号套装进度显示](#-称号套装进度显示playertitle-集成) 章节。
### Q6: 如何强制清除玩家的套装属性?
**A**: 方法1(推荐):
```
/ts remove <玩家名> <套装ID>
```
方法2(彻底清除):
```
/ap takeattr <玩家名> playertitle_suit_*
```
### Q7: 数据库类型如何选择?
**A**:
- **SQLite** (默认): 适合小型服务器(<100人),无需额外配置
- **MySQL**: 适合大型服务器或多服跨服共享数据
## 🎯 高级功能
### 累加模式实战案例
**场景**: 龙之系列套装,希望玩家收集越多属性越强
```yaml
dragon_set:
name: "&6&l龙之霸主"
cumulative: true # 开启累加
required_titles: [1, 2, 3, 4, 5, 6]
tiers:
2:
attributes: ["物理伤害: 50", "生命力: 200"]
4:
attributes: ["暴击几率: 10%", "暴击伤害: 30%"]
6:
attributes: ["吸血几率: 15%", "移动速度: 10%"]
```
**效果**:
- 2件套:物理伤害+50, 生命力+200
- 4件套:物理伤害+50, 生命力+200, 暴击几率+10%, 暴击伤害+30%
- 6件套:上述全部 + 吸血几率+15%, 移动速度+10%
### 变量条件高级用法
**场景**: VIP套装,需要满足金币、等级、游戏时长三项条件
```yaml
vip_set:
conditions:
placeholders:
1:
condition: "%vault_eco_balance% >= 1000000"
display: "&e金币"
2:
condition: "%player_level% >= 100"
display: "&b等级"
3:
condition: "%statistic_time_played% >= 144000"
display: "&d游戏时长"
```
在 GUI 中会显示为:
```
激活条件:
- 金币: ≥1000000
- 等级: ≥100
- 游戏时长: ≥144000
```
### 命令执行示例
**阶梯命令**: 每个阶梯可以执行不同命令
```yaml
tiers:
2:
commands:
- "say %player% 激活了2件套!"
- "effect give %player% minecraft:speed 30 1"
4:
commands:
- "say %player% 激活了4件套!"
- "title %player% title {\"text\":\"龙之传人\"}"
```
**全套命令**: 只在达到最高阶梯时执行
```yaml
commands:
- "broadcast &6%player% 完成了龙之霸主套装!"
- "give %player% diamond 64"
[/MD]