forked from Upstream/Velocitab
46 lines
2.0 KiB
Java
46 lines
2.0 KiB
Java
package net.william278.velocitab.config;
|
|
|
|
import com.velocitypowered.api.proxy.ServerConnection;
|
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
|
import net.william278.velocitab.Velocitab;
|
|
import net.william278.velocitab.player.TabPlayer;
|
|
import org.jetbrains.annotations.NotNull;
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.function.BiFunction;
|
|
|
|
public enum Placeholder {
|
|
|
|
PLAYERS_ONLINE((plugin, player) -> Integer.toString(plugin.getServer().getPlayerCount())),
|
|
MAX_PLAYERS_ONLINE((plugin, player) -> Integer.toString(plugin.getServer().getConfiguration().getShowMaxPlayers())),
|
|
LOCAL_PLAYERS_ONLINE((plugin, player) -> player.getPlayer().getCurrentServer()
|
|
.map(ServerConnection::getServer)
|
|
.map(RegisteredServer::getPlayersConnected)
|
|
.map(players -> Integer.toString(players.size()))
|
|
.orElse("")),
|
|
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) -> player.getPlayer().getUsername()),
|
|
SERVER((plugin, player) -> player.getServerName()),
|
|
PING((plugin, player) -> Long.toString(player.getPlayer().getPing())),
|
|
PREFIX((plugin, player) -> player.getRole().getPrefix().orElse("")),
|
|
SUFFIX((plugin, player) -> player.getRole().getSuffix().orElse("")),
|
|
ROLE((plugin, player) -> player.getRole().getName().orElse(""));
|
|
|
|
private final BiFunction<Velocitab, TabPlayer, String> formatter;
|
|
|
|
Placeholder(@NotNull BiFunction<Velocitab, TabPlayer, String> formatter) {
|
|
this.formatter = formatter;
|
|
}
|
|
|
|
@NotNull
|
|
public static String format(@NotNull String format, @NotNull Velocitab plugin, @NotNull TabPlayer player) {
|
|
for (Placeholder placeholder : values()) {
|
|
format = format.replace("%" + placeholder.name().toLowerCase() + "%", placeholder.formatter.apply(plugin, player));
|
|
}
|
|
return format;
|
|
}
|
|
|
|
}
|