diff --git a/src/main/java/org/dynmap/ClientUpdateComponent.java b/src/main/java/org/dynmap/ClientUpdateComponent.java index 14173101..7154835d 100644 --- a/src/main/java/org/dynmap/ClientUpdateComponent.java +++ b/src/main/java/org/dynmap/ClientUpdateComponent.java @@ -3,6 +3,8 @@ package org.dynmap; import static org.dynmap.JSONUtils.a; import static org.dynmap.JSONUtils.s; +import java.util.Set; + import org.bukkit.ChatColor; import org.bukkit.Location; import org.bukkit.World; @@ -67,6 +69,22 @@ public class ClientUpdateComponent extends Component { } a(u, "players", jp); } + if(configuration.getBoolean("includehiddenplayers", false)) { + Set hidden = plugin.playerList.getHiddenPlayers(); + for(Player p : hidden) { + JSONObject jp = new JSONObject(); + s(jp, "type", "player"); + s(jp, "name", ChatColor.stripColor(p.getDisplayName())); + s(jp, "account", p.getName()); + s(jp, "world", "-hidden-player-"); + s(jp, "x", 0.0); + s(jp, "y", 64.0); + s(jp, "z", 0.0); + s(jp, "health", 0); + s(jp, "armor", 0); + a(u, "players", jp); + } + } s(u, "updates", new JSONArray()); for(Object update : plugin.mapManager.getWorldUpdates(worldName, since)) { diff --git a/src/main/java/org/dynmap/PlayerList.java b/src/main/java/org/dynmap/PlayerList.java index 090e6daf..a702db15 100644 --- a/src/main/java/org/dynmap/PlayerList.java +++ b/src/main/java/org/dynmap/PlayerList.java @@ -9,6 +9,7 @@ import java.io.OutputStreamWriter; import java.util.ArrayList; import java.util.HashSet; import java.util.Scanner; +import java.util.Set; import org.bukkit.Server; import org.bukkit.entity.Player; @@ -101,4 +102,17 @@ public class PlayerList { visiblePlayers.toArray(result); return result; } + + public Set getHiddenPlayers() { + HashSet hidden = new HashSet(); + Player[] onlinePlayers = server.getOnlinePlayers(); + boolean useWhitelist = configuration.getBoolean("display-whitelist", false); + for (int i = 0; i < onlinePlayers.length; i++) { + Player p = onlinePlayers[i]; + if (useWhitelist ^ hiddenPlayerNames.contains(p.getName().toLowerCase())) { + hidden.add(p); + } + } + return hidden; + } } diff --git a/src/main/resources/configuration.txt b/src/main/resources/configuration.txt index a145ba9f..1ad433b3 100644 --- a/src/main/resources/configuration.txt +++ b/src/main/resources/configuration.txt @@ -21,6 +21,7 @@ components: webchat-interval: 5 hidewebchatip: false trustclientname: false + includehiddenplayers: false #- class: org.dynmap.JsonFileClientUpdateComponent # writeinterval: 1 # sendhealth: true @@ -28,6 +29,7 @@ components: # allowwebchat: false # webchat-interval: 5 # hidewebchatip: false + # includehiddenplayers: false - class: org.dynmap.SimpleWebChatComponent allowchat: true