package com.w67clement.mineapi.nms.reflection.wrappers; import com.w67clement.mineapi.api.wrappers.ServerPingWrapper; import com.w67clement.mineapi.system.MC_GameProfile; import java.util.ArrayList; import java.util.List; import java.util.UUID; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; public class CraftServerPingWrapper implements ServerPingWrapper { public static final Serializer serializer = new Serializer(); private String motd; private String versionName; private int protocol; private int onlinePlayers; private int maxplayers; private List<MC_GameProfile> players; private String favicon; public CraftServerPingWrapper() { this.motd = Bukkit.getMotd(); this.onlinePlayers = Bukkit.getOnlinePlayers().size(); this.maxplayers = Bukkit.getMaxPlayers(); List<MC_GameProfile> players = new ArrayList<>(); Bukkit.getOnlinePlayers().forEach(player -> players.add(new MC_GameProfile(player.getUniqueId(), player.getName()))); this.players = players; this.favicon = ""; } @Override public String getMotd() { return this.motd; } @Override public void setMotd(Object obj) { this.motd = (String) obj; } @Override public Object getChatComponentMotd() { return null; } @Override public String getVersionName() { return this.versionName; } @Override public void setVersionName(String version) { this.versionName = version; } @Override public int getProtocolVersion() { return this.protocol; } @Override public void setProtocolVersion(int protocol) { this.protocol = protocol; } @Override public int getOnlinesPlayers() { return this.onlinePlayers; } @Override public void setOnlinesPlayers(int onlines) { this.onlinePlayers = onlines; } @Override public int getMaximumPlayers() { return this.maxplayers; } @Override public void setMaximumPlayers(int max) { this.maxplayers = max; } @SuppressWarnings("deprecation") @Override public List<OfflinePlayer> getPlayerList() { List<OfflinePlayer> players = new ArrayList<>(); this.players.forEach(profile -> players.add(Bukkit.getOfflinePlayer(profile.getName()))); return players; } @Override public void setPlayerList(List<OfflinePlayer> players) { List<MC_GameProfile> profiles = new ArrayList<>(); players.forEach(player -> profiles.add(new MC_GameProfile(player.getUniqueId(), player.getName()))); this.players = profiles; } @Override public List<MC_GameProfile> getProfilesList() { return this.players; } @Override public void setPlayerListWithName(List<String> players) { List<MC_GameProfile> profiles = new ArrayList<>(); players.forEach(player -> profiles.add(new MC_GameProfile(UUID.randomUUID(), player))); this.players = profiles; } @Override public void setPlayerListWithGameProfile(List<MC_GameProfile> players) { this.players = players; } @Override public String getFavicon() { return this.favicon; } @Override public void setFavicon(String favicon) { this.favicon = favicon; } @Override public Object toServerPing() { return serializer.serialize(this, null, null).toString(); } @Override public String toJson() { return serializer.serialize(this, null, null).toString(); } }