Add ability for player disguises to copy existing players display name
This commit is contained in:
parent
0a3bda1a8e
commit
a92c8fb55e
@ -258,6 +258,9 @@ public class DisguiseConfig {
|
|||||||
@Getter
|
@Getter
|
||||||
@Setter
|
@Setter
|
||||||
private static long lastUpdateRequest;
|
private static long lastUpdateRequest;
|
||||||
|
@Getter
|
||||||
|
@Setter
|
||||||
|
private static boolean copyPlayerTeamInfo;
|
||||||
|
|
||||||
public static boolean isArmorstandsName() {
|
public static boolean isArmorstandsName() {
|
||||||
return getPlayerNameType() == PlayerNameType.ARMORSTANDS;
|
return getPlayerNameType() == PlayerNameType.ARMORSTANDS;
|
||||||
@ -678,6 +681,7 @@ public class DisguiseConfig {
|
|||||||
setVelocitySent(config.getBoolean("SendVelocity"));
|
setVelocitySent(config.getBoolean("SendVelocity"));
|
||||||
setViewDisguises(config.getBoolean("ViewSelfDisguises"));
|
setViewDisguises(config.getBoolean("ViewSelfDisguises"));
|
||||||
setWarnScoreboardConflict(config.getBoolean("Scoreboard.WarnConflict"));
|
setWarnScoreboardConflict(config.getBoolean("Scoreboard.WarnConflict"));
|
||||||
|
setCopyPlayerTeamInfo(config.getBoolean("Scoreboard.CopyPlayerTeamInfo"));
|
||||||
setWitherSkullPacketsEnabled(config.getBoolean("PacketsEnabled.WitherSkull"));
|
setWitherSkullPacketsEnabled(config.getBoolean("PacketsEnabled.WitherSkull"));
|
||||||
setWolfDyeable(config.getBoolean("DyeableWolf"));
|
setWolfDyeable(config.getBoolean("DyeableWolf"));
|
||||||
setTablistRemoveDelay(config.getInt("TablistRemoveDelay"));
|
setTablistRemoveDelay(config.getInt("TablistRemoveDelay"));
|
||||||
|
@ -272,6 +272,12 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (DisguiseConfig.isCopyPlayerTeamInfo() &&
|
||||||
|
(DisguiseConfig.getPlayerNameType() == DisguiseConfig.PlayerNameType.TEAMS ||
|
||||||
|
DisguiseConfig.getPlayerNameType() == DisguiseConfig.PlayerNameType.ARMORSTANDS)) {
|
||||||
|
name = DisguiseUtilities.getDisplayName(name);
|
||||||
|
}
|
||||||
|
|
||||||
if (name.equals(playerName)) {
|
if (name.equals(playerName)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -337,13 +343,13 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
if (!canSee(player))
|
if (!canSee(player)) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, addTab);
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, addTab);
|
||||||
}
|
}
|
||||||
}
|
} catch (InvocationTargetException e) {
|
||||||
catch (InvocationTargetException e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -436,8 +442,9 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
currentLookup = new LibsProfileLookup() {
|
currentLookup = new LibsProfileLookup() {
|
||||||
@Override
|
@Override
|
||||||
public void onLookup(WrappedGameProfile gameProfile) {
|
public void onLookup(WrappedGameProfile gameProfile) {
|
||||||
if (currentLookup != this || gameProfile == null || gameProfile.getProperties().isEmpty())
|
if (currentLookup != this || gameProfile == null || gameProfile.getProperties().isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setSkin(gameProfile);
|
setSkin(gameProfile);
|
||||||
|
|
||||||
@ -485,8 +492,7 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
string.contains(",\"name\":")) {
|
string.contains(",\"name\":")) {
|
||||||
try {
|
try {
|
||||||
return DisguiseUtilities.getGson().fromJson(string, WrappedGameProfile.class);
|
return DisguiseUtilities.getGson().fromJson(string, WrappedGameProfile.class);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
catch (Exception ex) {
|
|
||||||
throw new IllegalStateException(
|
throw new IllegalStateException(
|
||||||
"Tried to parse " + string + " to a GameProfile, but it has been formatted incorrectly!");
|
"Tried to parse " + string + " to a GameProfile, but it has been formatted incorrectly!");
|
||||||
}
|
}
|
||||||
@ -505,14 +511,14 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||||
if (!canSee(player))
|
if (!canSee(player)) {
|
||||||
continue;
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, deleteTab);
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, deleteTab);
|
||||||
ProtocolLibrary.getProtocolManager().sendServerPacket(player, addTab);
|
ProtocolLibrary.getProtocolManager().sendServerPacket(player, addTab);
|
||||||
}
|
}
|
||||||
}
|
} catch (InvocationTargetException e) {
|
||||||
catch (InvocationTargetException e) {
|
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -604,8 +610,9 @@ public class PlayerDisguise extends TargetedDisguise {
|
|||||||
currentLookup = new LibsProfileLookup() {
|
currentLookup = new LibsProfileLookup() {
|
||||||
@Override
|
@Override
|
||||||
public void onLookup(WrappedGameProfile gameProfile) {
|
public void onLookup(WrappedGameProfile gameProfile) {
|
||||||
if (currentLookup != this || gameProfile == null || gameProfile.getProperties().isEmpty())
|
if (currentLookup != this || gameProfile == null || gameProfile.getProperties().isEmpty()) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
setSkin(gameProfile);
|
setSkin(gameProfile);
|
||||||
|
|
||||||
|
@ -235,6 +235,38 @@ public class DisguiseUtilities {
|
|||||||
return team.getPrefix() + team.getColor() + player.getName() + team.getSuffix();
|
return team.getPrefix() + team.getColor() + player.getName() + team.getSuffix();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String getDisplayName(String playerName) {
|
||||||
|
if (StringUtils.isEmpty(playerName)) {
|
||||||
|
return playerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
Team team = Bukkit.getScoreboardManager().getMainScoreboard().getEntryTeam(playerName);
|
||||||
|
|
||||||
|
if (team != null && (!StringUtils.isEmpty(team.getPrefix()) || !StringUtils.isEmpty(team.getSuffix()))) {
|
||||||
|
return team.getPrefix() + team.getColor() + playerName + team.getSuffix();
|
||||||
|
}
|
||||||
|
|
||||||
|
Player player = Bukkit.getPlayer(playerName);
|
||||||
|
|
||||||
|
if (player == null) {
|
||||||
|
return playerName;
|
||||||
|
}
|
||||||
|
|
||||||
|
team = Bukkit.getScoreboardManager().getMainScoreboard().getEntryTeam(player.getUniqueId().toString());
|
||||||
|
|
||||||
|
if (team == null || (StringUtils.isEmpty(team.getPrefix()) && StringUtils.isEmpty(team.getSuffix()))) {
|
||||||
|
String name = player.getDisplayName();
|
||||||
|
|
||||||
|
if (name.equals(playerName)) {
|
||||||
|
return player.getPlayerListName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
return team.getPrefix() + team.getColor() + player.getName() + team.getSuffix();
|
||||||
|
}
|
||||||
|
|
||||||
public static void saveViewPreferances() {
|
public static void saveViewPreferances() {
|
||||||
if (!DisguiseConfig.isSaveUserPreferences()) {
|
if (!DisguiseConfig.isSaveUserPreferences()) {
|
||||||
return;
|
return;
|
||||||
|
@ -158,7 +158,6 @@ public class PlayerSkinHandler implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
getCache().invalidate(player);
|
getCache().invalidate(player);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -109,6 +109,9 @@ Scoreboard:
|
|||||||
# Should the scoreboard warn you if it detects a potential conflict?
|
# Should the scoreboard warn you if it detects a potential conflict?
|
||||||
# If self disguises are disabled, or the scoreboard is using IGNORE_SCOREBOARD then this does nothing.
|
# If self disguises are disabled, or the scoreboard is using IGNORE_SCOREBOARD then this does nothing.
|
||||||
WarnConflict: true
|
WarnConflict: true
|
||||||
|
# When disguising as a player, should the prefix/suffix of the player disguise name copy the team info?
|
||||||
|
# Only takes effect if using PlayerNames TEAMS or ARMORSTANDS
|
||||||
|
CopyPlayerTeamInfo: true
|
||||||
|
|
||||||
# Shall I notify those with the correct permission when there's a LibsDisguises update?
|
# Shall I notify those with the correct permission when there's a LibsDisguises update?
|
||||||
# Disabling this will also disable notifications when the plugin updated
|
# Disabling this will also disable notifications when the plugin updated
|
||||||
|
Loading…
Reference in New Issue
Block a user