Allow setting display name for servers (#30)

This commit is contained in:
FreeMonoid 2023-03-31 16:21:17 +03:00 committed by GitHub
parent f14a92b432
commit ef7e07c59d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 36 additions and 1 deletions

View File

@ -23,7 +23,7 @@ public enum Placeholder {
CURRENT_DATE((plugin, player) -> DateTimeFormatter.ofPattern("dd MMM yyyy").format(LocalDateTime.now())),
CURRENT_TIME((plugin, player) -> DateTimeFormatter.ofPattern("HH:mm:ss").format(LocalDateTime.now())),
USERNAME((plugin, player) -> plugin.getFormatter().escape(player.getPlayer().getUsername())),
SERVER((plugin, player) -> player.getServerName()),
SERVER((plugin, player) -> player.getServerDisplayName(plugin)),
PING((plugin, player) -> Long.toString(player.getPlayer().getPing())),
PREFIX((plugin, player) -> player.getRole().getPrefix().orElse("")),
SUFFIX((plugin, player) -> player.getRole().getSuffix().orElse("")),

View File

@ -56,6 +56,12 @@ public class Settings {
@YamlComment("Only show other players on a server that is part of the same server group as the player.")
private boolean onlyListPlayersInSameGroup = true;
@Getter
@YamlKey("server_display_names")
@YamlComment("Define custom names to be shown in the TAB list for specific server names.\n" +
"If no custom display name is provided for a server, its original name will be used.")
private Map<String, String> serverDisplayNames = Map.of("very-long-server-name", "VLSN");
@YamlKey("enable_papi_hook")
private boolean enablePapiHook = true;
@ -110,6 +116,17 @@ public class Settings {
formats.getOrDefault(serverGroup, "%username%"));
}
/**
* Get display name for the server
*
* @param serverName The server name
* @return The display name, or the server name if no display name is defined
*/
@NotNull
public String getServerDisplayName(@NotNull String serverName) {
return serverDisplayNames.getOrDefault(serverName, serverName);
}
/**
* Get the server group that a server is in
*

View File

@ -34,6 +34,12 @@ public final class TabPlayer implements Comparable<TabPlayer> {
return role;
}
/**
* Get the server name the player is currently on.
* Isn't affected by server aliases defined in the config.
*
* @return The server name
*/
@NotNull
public String getServerName() {
return player.getCurrentServer()
@ -41,6 +47,18 @@ public final class TabPlayer implements Comparable<TabPlayer> {
.orElse("unknown");
}
/**
* Get the display name of the server the player is currently on.
* Affected by server aliases defined in the config.
*
* @param plugin The plugin instance
* @return The display name of the server
*/
@NotNull
public String getServerDisplayName(@NotNull Velocitab plugin) {
return plugin.getSettings().getServerDisplayName(getServerName());
}
@NotNull
public CompletableFuture<Component> getDisplayName(@NotNull Velocitab plugin) {
final String serverGroup = plugin.getSettings().getServerGroup(getServerName());