# 更新显示名称
## 概述
UpdateDisplayNames 是一个 Paper 插件,它可以自动更新玩家的显示名称和标签列表名称为指定的格式。
## 功能
- 支持 LuckPerms、Vault 和 PlaceholderAPI
- 支持占位符中的 MiniMessage 和传统颜色代码
- 具有 API,允许排除特定玩家来自显示名称更新
## 安装方法
要安装此插件,请从发布页面下载适用于正确 Minecraft 版本的插件,并将其放入您的插件目录中。
## 命令
| 命令 | 描述 | 权限 |
|--|--|--|
| `/updatedisplayname reload` | 重新加载配置 | `updatedisplayname.command` |
| `/updatedisplayname update` | 更新所有玩家的名称 | `updatedisplayname.command` |
| `/updatedisplayname enable [true\|false]` | 启用/禁用插件的功能 | `updatedisplayname.command` |
| `/updatedisplayname playerlist` | 显示排除列表 | `updatedisplayname.command` |
## 配置
插件应该无需任何配置即可正常工作。
但是,如果您想更改某些内容,以下是配置值:
| 选项 | 默认值 | 描述 |
|--|--|--|
| `displayname --> enable` | `true` | 插件是否应更新玩家的显示名称。 |
| `displayname --> format` | `` | 玩家显示名称格式。 |
| `tablist --> enable` | `true` | 插件是否应更新玩家的标签列表名称。 |
| `tablist --> format` | `` | 玩家标签列表名称格式。 |
| `update_interval` | `60` | 名称应更新的秒数间隔。 |
## 使用 API
### 导入
使用 Gradle:
```kotlin
repositories {
maven("https://maven.chaossquad.net/releases")
}
dependencies {
compileOnly("net.jandie1505:UpdateDisplayName:1.0-RELEASE")
}
```
使用 Maven:
```xml
ChaosSquad-Repository-releases
ChaosSquad Repository
https://maven.chaossquad.net/releases
```
```xml
net.jandie1505
UpdateDisplayName
1.0-RELEASE
provided
```
### 用法
```java
// General features
public void ApiExample() {
UDNApi api = UpdateDisplayName.getApi();
Player player = Bukkit.getPlayer("playername")
boolean updatesEnabled = this.updatesEnabled; // 获取插件功能状态
api.setUpdatesEnabled(false); // 禁用插件功能
api.updatePlayers(); // 更新所有玩家的显示名称
api.updatePlayer(player); // 更新指定玩家的显示名称
Set excludedPlayers = api.getExcludedPlayers(); // 获取排除的玩家
boolean excluded = api.isPlayerExcluded(player); // 检查玩家是否被排除
DataStorage config = api.getPluginConfig(); // 获取插件配置
// 获取配置值
boolean enableDisplaynameUpdate = config.optBoolean(UpdateDisplayname.CONFIG_ENABLE_DISPLAYNAME, false);
String displayNameFormat = config.optString(UpdateDisplayName.CONFIG_FORMAT_DISPLAYNAME, null);
boolean enableTablistName = config.optString(UpdateDisplayName.CONFIG_ENABLE_TABLIST_NAME, false);
String tablistFormat = config.optString(UpdateDisplayName.CONFIG_TABLIST_FORMAT, null);
int updateInterval = config.optInt(UpdateDisplayName.CONFIG_UPDATE_INTERVAL, 60);
// 设置配置值
config.set(UpdateDisplayname.CONFIG_ENABLE_DISPLAYNAME, true);
config.set(UpdateDisplayname.CONFIG_FORMAT_DISPLAYNAME, "");
config.set(UpdateDisplayname.CONFIG_ENABLE_TABLIST_NAME, true);
config.set(UpdateDisplayname.CONFIG_TABLIST_FORMAT, "");
config.set(UpdateDisplayname.CONFIG_UPDATE_INTERVAL, 60);
}
// 事件:更新显示名称
@EventHandler
public void onDisplayNameUpdated(DisplayNameUpdatedEvent event) {
if (event.getPlayer().getName().equals("forbiddenName")) {
event.setCancelled(true)
return;
}
if (event.getUpdatedDisplayName() == null) {
Bukkit.broadcast(Component.text("玩家 " + event.getPlayer().getName() + " 的显示名称已重置"))
return;
]
Bukkit.broadcast(Component.empty()
.append(Component.text("更新玩家 " + event.getPlayer().getName() + " 的显示名称: "))
.append(event.getUpdatedDisplayName())
);
}
// 事件:更新标签列表名称
@EventHandler
public void onDisplayNameUpdated(TablistNameUpdatedEvent event) {
if (event.getPlayer().getName().equals("PleaseDontGiveMeATablistName")) {
event.setCancelled(true)
return;
}
if (event.getUpdatedTablistName() == null) {
Bukkit.broadcast(Component.text("玩家 " + event.getPlayer().getName() + " 的标签列表名称已重置"))
return;
]
Bukkit.broadcast(Component.empty()
.append(Component.text("更新玩家 " + event.getPlayer().getName() + " 的标签列表名称: "))
.append(event.getUpdatedTablistName())
);
}
```
### JavaDocs
点击[这里](https://jandie1505.github.io/UpdateDisplayName/) 获取 JavaDocs。