mirror of
https://github.com/CarmJos/UserPrefix.git
synced 2026-06-13 11:21:15 +08:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 99f2b6ff28 | |||
| 5c5a57af5b | |||
| 044cd1a84f | |||
| 29796ec455 | |||
| 898ba5bf27 | |||
| 2e46888019 | |||
| ac55fc135c |
@@ -1,30 +1,29 @@
|
||||
---
|
||||
name: 问题提交
|
||||
about: 描述问题并提交,帮助我们对其进行检查与修复。
|
||||
title: ''
|
||||
labels: bug
|
||||
assignees: ''
|
||||
name: 问题提交 about: 描述问题并提交,帮助我们对其进行检查与修复。 title: ''
|
||||
labels: bug assignees: ''
|
||||
|
||||
---
|
||||
|
||||
### **问题简述**
|
||||
用简短的话语描述一下大概问题。
|
||||
<!--用简短的话语描述一下大概问题。-->
|
||||
|
||||
### **问题来源**
|
||||
|
||||
<!--
|
||||
描述一下通过哪些操作才发现的问题,如:
|
||||
1. 打开 '...'
|
||||
2. 点击了 '....'
|
||||
3. 出现了报错 '....'
|
||||
-->
|
||||
|
||||
### **预期结果**(可选)
|
||||
如果问题不发生,应该是什么情况
|
||||
<!--如果问题不发生,应该是什么情况-->
|
||||
|
||||
### **问题截图/问题报错**
|
||||
如果有报错或输出,请提供截图。
|
||||
<!--如果有报错或输出,请提供截图。-->
|
||||
|
||||
### **操作环境**
|
||||
请在后台输入 `version` 并复制相关输出。
|
||||
|
||||
<!--请在后台输入 `version` 并复制相关输出。-->
|
||||
|
||||
### **其他补充**
|
||||
如有其他补充,可以在这里描述。
|
||||
<!--如有其他补充,可以在这里描述。-->
|
||||
|
||||
@@ -8,13 +8,13 @@ assignees: ''
|
||||
---
|
||||
|
||||
### **功能简述**
|
||||
简单的描述一下你想要的功能
|
||||
<!--简单的描述一下你想要的功能-->
|
||||
|
||||
### **需求来源**
|
||||
简单的描述一下为什么需要这个功能。
|
||||
<!--简单的描述一下为什么需要这个功能。-->
|
||||
|
||||
### **功能参考**(可选)
|
||||
如果有相关功能的参考,如文本、截图,请提供给我们。
|
||||
<!--如果有相关功能的参考,如文本、截图,请提供给我们。-->
|
||||
|
||||
### **附加内容**
|
||||
如果有什么小细节需要重点注意,请在这里告诉我们。
|
||||
<!--如果有什么小细节需要重点注意,请在这里告诉我们。-->
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
|
||||
<groupId>cc.carm.plugin</groupId>
|
||||
<artifactId>userprefix</artifactId>
|
||||
<version>2.4.2</version>
|
||||
<version>2.4.3</version>
|
||||
|
||||
<name>UserPrefix</name>
|
||||
<description>轻便、高效、实时的用户前缀系统。</description>
|
||||
|
||||
@@ -25,8 +25,10 @@ public class PluginConfig {
|
||||
|
||||
public static class Functions {
|
||||
|
||||
public static ConfigValue<Boolean> NAME_PREFIX = new ConfigValue<>("functions.OnNamePrefix", Boolean.class, true);
|
||||
public static ConfigValue<Boolean> AUTO_USE = new ConfigValue<>("functions.autoUsePrefix", Boolean.class, true);
|
||||
public static ConfigValue<Boolean> NAME_PREFIX = new ConfigValue<>("functions.on-name-prefix.enable", Boolean.class, true);
|
||||
public static ConfigValue<Boolean> NAME_ORDER_DESC = new ConfigValue<>("functions.on-name-prefix.order-desc", Boolean.class, true);
|
||||
|
||||
public static ConfigValue<Boolean> AUTO_USE = new ConfigValue<>("functions.auto-prefix-use", Boolean.class, true);
|
||||
|
||||
public static class Chat {
|
||||
|
||||
|
||||
@@ -73,18 +73,20 @@ public class UserManager {
|
||||
if (tag == null) return; //未启用的情况下,不需要进行任何操作。
|
||||
|
||||
ConfiguredPrefix playerPrefix = UserManager.getPrefix(player);
|
||||
boolean descOrder = PluginConfig.Functions.NAME_ORDER_DESC.get();
|
||||
|
||||
tag.setPrefix(playerPrefix.getContent());
|
||||
tag.setOrder(playerPrefix.getWeight());
|
||||
tag.setOrder(descOrder ? 999 - playerPrefix.getWeight() : playerPrefix.getWeight());
|
||||
|
||||
Main.debug("为玩家 " + player.getName() + " 设置了 " + player.getName() + "的前缀为 #" + playerPrefix.getWeight() + " " + playerPrefix.getName());
|
||||
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
if (onlinePlayer.equals(player)) continue;
|
||||
UserNameTag onlinePlayerTag = getNameTag(onlinePlayer);
|
||||
|
||||
if (onlinePlayerTag != null) {
|
||||
onlinePlayerTag.setPrefix(player, playerPrefix.getContent());
|
||||
onlinePlayerTag.setOrder(player, playerPrefix.getWeight());
|
||||
onlinePlayerTag.setOrder(player, descOrder ? 999 - playerPrefix.getWeight() : playerPrefix.getWeight());
|
||||
Main.debug("为玩家 " + onlinePlayer.getName() + " 设置了 " + player.getName() + "的前缀为 #" + playerPrefix.getWeight() + " " + playerPrefix.getName());
|
||||
|
||||
}
|
||||
@@ -92,7 +94,7 @@ public class UserManager {
|
||||
if (loadOthers) {
|
||||
ConfiguredPrefix onlinePlayerPrefix = UserManager.getPrefix(onlinePlayer);
|
||||
tag.setPrefix(onlinePlayer, onlinePlayerPrefix.getContent());
|
||||
tag.setOrder(onlinePlayer, onlinePlayerPrefix.getWeight());
|
||||
tag.setOrder(onlinePlayer, descOrder ? 999 - onlinePlayerPrefix.getWeight() : onlinePlayerPrefix.getWeight());
|
||||
Main.debug("为玩家 " + player.getName() + " 设置了 " + onlinePlayer.getName() + "的前缀为 #" + onlinePlayerPrefix.getWeight() + " " + onlinePlayerPrefix.getName());
|
||||
}
|
||||
}
|
||||
@@ -225,6 +227,7 @@ public class UserManager {
|
||||
* @param prefixIdentifier 前缀标识
|
||||
* @return 若前缀标识不存在,则返回false;若前缀为默认前缀,或该前缀无权限,或玩家有该前缀的权限,则返回true。
|
||||
*/
|
||||
@SuppressWarnings("BooleanMethodIsAlwaysInverted")
|
||||
public static boolean isPrefixUsable(Player player, String prefixIdentifier) {
|
||||
if (prefixIdentifier == null || prefixIdentifier.equalsIgnoreCase("default")) return true;
|
||||
ConfiguredPrefix prefix = PrefixManager.getPrefix(prefixIdentifier);
|
||||
|
||||
@@ -4,6 +4,7 @@ import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
import org.jetbrains.annotations.Range;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
@@ -12,10 +13,12 @@ import java.util.UUID;
|
||||
|
||||
public class UserNameTag {
|
||||
|
||||
public static final int MAX_ORDER = 999;
|
||||
|
||||
private final Player viewer;
|
||||
private Team team;
|
||||
private final Scoreboard sb;
|
||||
private int order = 99999;
|
||||
private int order = MAX_ORDER;
|
||||
private final Map<UUID, Integer> targetOrders = new HashMap<>();
|
||||
private final Map<UUID, String> previousTeamNames = new HashMap<>();
|
||||
|
||||
@@ -35,7 +38,7 @@ public class UserNameTag {
|
||||
/**
|
||||
* 设置自己的前缀
|
||||
*
|
||||
* @param prefix
|
||||
* @param prefix 前缀内容
|
||||
*/
|
||||
public void setPrefix(String prefix) {
|
||||
team.setPrefix(prefix);
|
||||
@@ -45,8 +48,8 @@ public class UserNameTag {
|
||||
/**
|
||||
* 设置某个玩家的前缀
|
||||
*
|
||||
* @param target
|
||||
* @param prefix
|
||||
* @param target 目标
|
||||
* @param prefix 前缀内容
|
||||
*/
|
||||
public void setPrefix(Player target, String prefix) {
|
||||
if (target == viewer) {
|
||||
@@ -63,11 +66,9 @@ public class UserNameTag {
|
||||
/**
|
||||
* 设置名字在TabList中的顺序
|
||||
*
|
||||
* @param order
|
||||
* @param order 顺序 (0~999)
|
||||
*/
|
||||
public void setOrder(int order) {
|
||||
if (order < 0 || order > 99999)
|
||||
throw new IllegalArgumentException("order must be in 0~99999");
|
||||
public void setOrder(@Range(from = 0, to = 999) int order) {
|
||||
this.order = order;
|
||||
targetOrders.put(viewer.getUniqueId(), order);
|
||||
update(viewer);
|
||||
@@ -78,16 +79,13 @@ public class UserNameTag {
|
||||
*
|
||||
* @param order 顺序
|
||||
*/
|
||||
public void setOrder(Player target, int order) {
|
||||
if (order < 0 || order > 99999)
|
||||
throw new IllegalArgumentException("order must be in 0~99999");
|
||||
public void setOrder(Player target, @Range(from = 0, to = 999) int order) {
|
||||
Team targetTeam = checkTeam(target);
|
||||
String teamName = order + UUID.randomUUID().toString().substring(0, 10);
|
||||
targetTeam.setDisplayName(teamName);
|
||||
targetOrders.put(target.getUniqueId(), order);
|
||||
update(viewer);
|
||||
if (viewer != target)
|
||||
update(target);
|
||||
if (viewer != target) update(target);
|
||||
}
|
||||
|
||||
public void update(Player target) {
|
||||
@@ -110,7 +108,7 @@ public class UserNameTag {
|
||||
team = newTeam;
|
||||
}
|
||||
} else {
|
||||
int order = targetOrders.getOrDefault(target.getUniqueId(), 99999);
|
||||
int order = targetOrders.getOrDefault(target.getUniqueId(), 999);
|
||||
String previousTeamName = previousTeamNames.get(target.getUniqueId());
|
||||
if (previousTeamName == null) {
|
||||
return;
|
||||
@@ -138,7 +136,7 @@ public class UserNameTag {
|
||||
}
|
||||
|
||||
private Team checkTeam(Player target) {
|
||||
int order = targetOrders.getOrDefault(target.getUniqueId(), 99999);
|
||||
int order = targetOrders.getOrDefault(target.getUniqueId(), 999);
|
||||
String name = order + target.getUniqueId().toString().substring(0, 10);
|
||||
Team targetTeam = this.sb.getTeam(name);
|
||||
if (targetTeam == null) {
|
||||
|
||||
@@ -21,8 +21,11 @@ custom-storage:
|
||||
path: "prefixes/" # 一定要指向一个文件夹!
|
||||
|
||||
functions:
|
||||
OnNamePrefix: true # 是否给头顶上添加前缀,该方法用到了头顶的那个计分板,如有冲突请关掉哦~
|
||||
autoUsePrefix: true # 自动前缀显示 当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
|
||||
# 头顶与TabList前缀功能,该方法用到了玩家名计分板接口,如有冲突请关掉哦~
|
||||
on-name-prefix:
|
||||
enable: true # 是否开启本功能
|
||||
order-desc: true # 是否按降序排列,即权重越高的前缀显示在越上面;若为false则按升序排列。
|
||||
auto-prefix-use: true # 自动使用前缀,即当玩家没有自己选择一个前缀的时候,会自动使用所拥有的的前缀中权重最高的那一个
|
||||
chat:
|
||||
# 聊天功能
|
||||
# - 我不推荐使用本插件的聊天功能,而是建议使用其他的聊天插件。
|
||||
|
||||
@@ -39,14 +39,16 @@ GUI:
|
||||
- "§fRight-Click to the first page"
|
||||
|
||||
functions:
|
||||
# Whether to add a prefix to the top of the head,
|
||||
# Add a prefix to the top of the head,
|
||||
# this method uses the scoreboard above the head,
|
||||
# please turn it off if there is a conflict.
|
||||
OnNamePrefix: true
|
||||
on-name-prefix:
|
||||
enable: true # enable or disable
|
||||
order-desc: true # using desc ( higher weight for higher display in TabList)
|
||||
# Automatic prefix select.
|
||||
# When the player does not choose a prefix by himself,
|
||||
# the prefix with the highest weight will be used automatically
|
||||
autoUsePrefix: true
|
||||
auto-prefix-use: true
|
||||
chat:
|
||||
# Chat Function
|
||||
# - I recommend using other chat plugins instead of using this plugin,
|
||||
|
||||
@@ -14,7 +14,7 @@ content: "&b&lPro &b"
|
||||
# 权重 [必须]
|
||||
# 用于GUI、TabList的排序和自动前缀显示
|
||||
# 在GUI中,权重越高的会显示在越后面
|
||||
# 在TabList中,权重越高的会显示在越上面
|
||||
# 在TabList中,显示顺序可以在 config.yml 中自定义
|
||||
weight: 1
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user