# 简单昵称
一个独立昵称插件,支持 [MiniMessage](https://docs.advntr.dev/minimessage/)
MiniMessage 预装在 Paper 中,Paper 的所有分支都支持 MiniMessage。
此插件现在使用 **MySQL** 或 **SQLite** 来保存昵称,从而实现更快的索引和更好的昵称保护。
## 功能
- 使用 MiniMessage 格式设置和重置昵称。
- 保存昵称以便稍后使用。
- 基于 SQL 的存储(MySQL 或 SQLite)。
- 昵称保护系统:
- 保护在线玩家的昵称
- 保护离线玩家的昵称
- 保护玩家用户名不被用作昵称
- 可配置选项,如果昵称功能需要权限
## 指令
### 玩家指令
`/nick set `
- 使用 MiniMessage 标签(``、`` 等)设置你的昵称。
`/nick save [nickname]`
- 保存你当前的昵称,以便稍后使用 `/nick save`
- 你也可以提供一个昵称直接保存
`/nick delete `
- 删除你保存的其中一个昵称。
`/nick reset`
- 将你的昵称重置为你的原始用户名。
`/nick who `
- 显示拥有该昵称的玩家的用户名。
`/nick help`
- 显示帮助文本。
### 管理员指令
`/nick admin set `
- 使用管理员的权限进行格式设置,为另一位玩家设置昵称。
`/nick admin reset `
- 重置另一位玩家的昵称。
`/nick admin delete `
- 从玩家的列表里删除一个已保存的昵称。
`/nick admin lookup `
- 显示玩家的当前昵称和所有已保存的昵称。
`/nick reload`
- 重新加载配置和语言包。
## 权限
### 玩家权限
| 权限 | 描述 | 默认值 |
|-----------------------|-------------------------------------------|--------|
| `simplenick.nick.set` | 设置你自己的昵称。 | `op` |
| `simplenick.nick.reset` | 重置你自己的昵称。 | `op` |
| `simplenick.nick.delete` | 删除你保存的一个昵称。 | `op` |
| `simplenick.nick.who` | 使用 `/nick who ` 查找用户名。 | `true` |
**颜色权限**
| 权限 | 描述 | 默认值 |
|--------------------------|---------------------------------------|--------|
| `simplenick.color.basic` | 使用颜色标签 (``、``)。 | `op` |
| `simplenick.color.gradient` | 使用渐变标签 (``)。 | `op` |
| `simplenick.color.rainbow` | 使用 ``。 | `op` |
| `simplenick.color.reset` | 使用 ``。 | `op` |
**格式权限**
| 权限 | 描述 | 默认值 |
|-----------------------------------|-----------------------|--------|
| `simplenick.format.bold` | 使用 ``/``。 | `op` |
| `simplenick.format.italic` | 使用 ``/``。 | `op` |
| `simplenick.format.underline` | 使用 ``/``。 | `op` |
| `simplenick.format.strikethrough` | 使用 ``/` `。 | `op` |
| `simplenick.format.obfuscated` | 使用 ``/` `。 | `op` |
### 管理员权限
| 权限 | 描述 | 默认值 |
|---------------------------|-----------------------------------------|--------|
| `simplenick.admin.set` | 为另一位玩家设置昵称。 | `op` |
| `simplenick.admin.reset` | 重置另一位玩家的昵称。 | `op` |
| `simplenick.admin.delete` | 删除另一位玩家的已保存昵称。 | `op` |
| `simplenick.admin.lookup` | 查找玩家的当前和已保存昵称。 | `op` |
| `simplenick.reload` | 重新加载插件配置和语言包。 | `op` |
### 绕过权限
| 权限 | 描述 | 默认值 |
|-------------------------------------|------------------------------------------------------|--------|
| `simplenick.bypass.username` | 使用另一位玩家的用户名作为昵称。 | `false`|
| `simplenick.bypass.length` | 设置长度超过配置最大长度的昵称。 | `false`|
| `simplenick.bypass.regex` | 设置不匹配配置正则表达式的昵称。 | `false`|
| `simplenick.bypass.nick-protection` | 绕过昵称保护 (在线/离线/过期)。 | `false`|
## 占位符API
所有占位符现在都以 **`simplenick`** 开头,以保持一致性。
| 占位符 | 描述 |
|----------------------------------|--------------------------------------------------------|
| `%simplenick_nickname%` | 玩家的解析后的昵称。 |
| `%simplenick_mininick%` | 玩家的原始 MiniMessage 昵称 (`Name `)。 |
| `%simplenick_prefixed-nickname%` | 带有配置前缀应用的昵称。 |
| `%simplenick_prefixed-mininick%` | 原始 MiniMessage 昵称带有前缀。 |
---
## 配置
### MySQL
如果你在使用 MySQL,你知道该怎么填。 插件默认使用 SQLite,如果需要使用 MySQL 需要启用它
### 昵称长度
这是昵称可以达到的最大长度 *在* 颜色和格式被计算出来之后。因此,如果你的昵称类似于 `ThisIsAConvolutedExample`,将被检查的文本将是 `ThisIsAConvolutedExample`。不建议将此值设置低于 3,因为可能会出现意想不到的副作用。
### 昵称正则表达式
这是昵称中允许使用的字符。默认情况下,它只允许字母数字字符和下划线 `[A-Za-z0-9_]+` - 你可以使用资源,例如 https://regexr.com/,来确保你的正则表达式正确解析
### 选项权限
这些设置了特定功能是否需要权限。如果你不了解权限插件以及如何使用它们,你可以将函数设置为 'false',让插件正常工作。如果你了解权限以及如何使用它们,你可能不需要此部分。
**昵称**
适用于:
- `/nick set`
- `/nick reset`
- `/nick save`
允许玩家更改他们出现的名称。
**颜色**
适用于颜色标签,例如 ``、`<#aabbcc>`、``、`` 和 ``
允许玩家更改他们的名称和名称的颜色。
**格式**
适用于格式标签,例如 ``(下划线)、``(*斜体*)、``(**粗体**)、``(~~删除线~~)和 ``(o̴̲̅b̷̨̈́f̷̩̋u̴̳͂ş̸̓c̷̥̈́a̸͇͂t̷̯͋e̷͎̚d̷̟͝)
**谁**
访问`/nick who `,显示与特定昵称关联的用户名。
### 昵称保护
允许保护已使用的昵称。 这不会保护已保存的昵称或保护昵称免受保存。
**在线保护**
仅阻止玩家使用当前在线的玩家的昵称。 允许玩家使用离线玩家的昵称。
**离线保护**
阻止玩家使用其他人当前使用的昵称,无论他们是否在线,只要昵称过期时间未过。
**离线保护过期**
玩家需要离线多少天才能使他们的昵称保护过期,设置为`-1`表示永远不会过期,但我不建议这样做。
**用户名保护**
阻止玩家将自己昵称为某个人的用户名。 仅检查已经登录服务器的玩家。
**用户名保护过期**
此值控制玩家离线多少天才能将其用户名被认为是允许被用作昵称。 将其设置为`-1`,表示 protection 永远不会过期
### 最多保存数
控制玩家可以保存多少个昵称,目前没有为此设置覆盖权限,对所有具有保存权限的玩家生效
### 标签列表昵称
更改标签列表以使用玩家的当前昵称。 如果你已经有任何可以处理此插件,我建议你使用那个,或者使用我的另一个插件 [Simple Custom Tab List](https://modrinth.com/plugin/simple-custom-tablist),因为此选项非常有限并且容易与其他插件出现问题。 如果你有一个非常简单的服务器设置,并且你只是想让昵称显示在标签列表中,那么它将有效,但是如果你有 geyser 或其他可能更改分数板和其他随机软件的插件,你将希望使用单独的插件来处理标签列表
### 昵称前缀
设置昵称应该是什么前缀,用于占位符`%simplenick_prefixed-nickname%` 和 `%simplenick_prefixed-mininick%`,以及玩家的显示名称。
### `config.yml`
```yaml
mysql:
enabled: false
ip: "localhost:3306"
name: simplenicks
username: username1
password: badpassword!
# 昵称应该达到的最大长度,不包括格式设置
# (所以一个名字像 BillyBob 将只计算 'BillyBob' - 并且会是 8 个字符)
# 将此值设置为任何低于 "3" 的数字都可能导致意想不到的副作用
max-nickname-length: 30
# 有效最终昵称字符的正则表达式。
# 请注意,使用非字母数字字符可能会导致其他插件出现问题以及其他意想不到的副作用
nickname-regex: "[A-Za-z0-9_]+"
# 应该由权限插件设置什么功能?
require-permission:
nick: true
color: true
format: true
who: false
# 阻止某些名称被用作昵称
# 过期时间以天为单位,设置为 -1 将永远不会过期
nickname-protection:
username:
enabled: true
expires: 30
online:
enabled: false
offline:
enabled: false
expires: 30
# 玩家可以保存多少个昵称?
max-saves: 5
# 应该更改标签列表中的名称吗?
# (如果你使用任何其他标签列表插件,请将此设置为 false,使用占位符 API 占位符在这些插件中进行操作)
tablist-nick: false
# 为拥有昵称的玩家应设置什么前缀? 如果你想没有前缀,请设置 ""
nickname-prefix: ""
# 开发选项,这将淹没你的日志,除非被要求,否则不建议启用
debug-mode: false
```
---
## 从旧版本迁移
如果你正在从 SimpleNicks 的**不支持 SQL 的版本**升级:
- **数据存储:**
- 旧版本使用 YML 或 PersistentDataContainer (PDC) 存储昵称。
- 新版本使用 **MySQL 或 SQLite**。现有数据将自动迁移。
- **指令:**
- 管理员命令现在位于 `/nick admin` 下,而不是共享玩家命令结构。
- `/nick save` 现在可以接受参数 (`/nick save `)。
- **权限:**
- 颜色和格式权限已移动到自己的节点 (`simplenick.color.*` 和 `simplenick.format.*`)。
- 颜色和格式现在可以不使用权限来启用,请检查新的配置选项
- **删除了** `simplenick.admin.restrictive`、`simplenick.admin.basic` 和 `simplenick.admin.full`。 权限现在是 `simplenick.admin.set`
- 管理员昵称设置现在始终使用 *管理员自己的权限*。(之前是“admin basic”功能)
- **删除了**`simplenick.admin.save` - 因为现在使用的是 brigadier,你可以用
- **占位符 API:**
- 为了保持一致性,占位符已重命名。
- `%simplenicks_mininick%` → `%simplenick_mininick%`
- `%simplenicks_nickname%` → `%simplenick_nickname%`
- 新的前缀变体:`%simplenick_prefixed-nickname%`、`%simplenick_prefixed-mininick%`。
- 以前该占位符始终包含前缀(如果设置了前缀),现在只有前缀变体才会包含前缀。 这对于某些区域需要前缀而其他区域不需要这很有用。