diff --git a/pom.xml b/pom.xml
index d820ae1..72ed4ef 100644
--- a/pom.xml
+++ b/pom.xml
@@ -35,7 +35,7 @@
me.clip
placeholderapi
- 2.10.6
+ 2.11.6
provided
diff --git a/src/main/java/com/extendedclip/papi/bungeeexpansion/BungeeExpansion.java b/src/main/java/com/extendedclip/papi/bungeeexpansion/BungeeExpansion.java
index e53cb4e..76e24ce 100644
--- a/src/main/java/com/extendedclip/papi/bungeeexpansion/BungeeExpansion.java
+++ b/src/main/java/com/extendedclip/papi/bungeeexpansion/BungeeExpansion.java
@@ -10,6 +10,7 @@
import me.clip.placeholderapi.expansion.Taskable;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
+import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.entity.Player;
import org.bukkit.plugin.messaging.PluginMessageListener;
import org.bukkit.scheduler.BukkitTask;
@@ -33,10 +34,12 @@ public final class BungeeExpansion extends PlaceholderExpansion implements Plugi
private static final Splitter SPLITTER = Splitter.on(",").trimResults();
-
- private final Map counts = new HashMap<>();
+ private final Map counts = new HashMap<>();
private final AtomicReference cached = new AtomicReference<>();
+ private String online = "Online";
+ private String offline = "Offline";
+
private static Field inputField;
static {
@@ -60,12 +63,16 @@ public String getAuthor() {
@Override
public String getVersion() {
- return "2.3";
+ return "2.4";
}
@Override
public Map getDefaults() {
- return Collections.singletonMap(CONFIG_INTERVAL, 30);
+ Map defaults = new HashMap<>();
+ defaults.put(CONFIG_INTERVAL, 30);
+ defaults.put("online", "Online");
+ defaults.put("offline", "Offline");
+ return defaults;
}
@@ -73,6 +80,11 @@ public Map getDefaults() {
public String onRequest(final OfflinePlayer player, String identifier) {
final int value;
+ if (identifier.startsWith("online_")) {
+ final String server = identifier.substring(7).toLowerCase();
+ return counts.containsKey(server) ? online : offline;
+ }
+
switch (identifier.toLowerCase()) {
case "all":
case "total":
@@ -88,12 +100,14 @@ public String onRequest(final OfflinePlayer player, String identifier) {
@Override
public void start() {
+ this.online = getString("online", "Online");
+ this.offline = getString("offline", "Offline");
+
final BukkitTask task = Bukkit.getScheduler().runTaskTimer(getPlaceholderAPI(), () -> {
if (counts.isEmpty()) {
sendServersChannelMessage();
- }
- else {
+ } else {
counts.keySet().forEach(this::sendPlayersChannelMessage);
}
@@ -135,13 +149,13 @@ public void onPluginMessageReceived(final String channel, final Player player, f
try {
DataInputStream stream = (DataInputStream) inputField.get(in);
switch (in.readUTF()) {
- case PLAYERS_CHANNEL:
- if (stream.available() == 0) return; // how ?
- final String server = in.readUTF();
- if (stream.available() == 0) { // how ? x2
- getPlaceholderAPI().getLogger().log(Level.SEVERE, String.format("[%s] Could not get the player count from server %s.", getName(), server));
- counts.put(server.toLowerCase(), 0);
- } else counts.put(server.toLowerCase(), in.readInt());
+ case PLAYERS_CHANNEL:
+ if (stream.available() == 0) return; // how ?
+ final String server = in.readUTF();
+ if (stream.available() == 0) { // how ? x2
+ getPlaceholderAPI().getLogger().log(Level.SEVERE, String.format("[%s] Could not get the player count from server %s.", getName(), server));
+ counts.put(server.toLowerCase(), 0);
+ } else counts.put(server.toLowerCase(), in.readInt());
break;
case SERVERS_CHANNEL:
SPLITTER.split(in.readUTF()).forEach(serverName -> counts.putIfAbsent(serverName.toLowerCase(), 0));
@@ -154,7 +168,8 @@ public void onPluginMessageReceived(final String channel, final Player player, f
private void sendServersChannelMessage() {
- sendMessage(SERVERS_CHANNEL, out -> { });
+ sendMessage(SERVERS_CHANNEL, out -> {
+ });
}
private void sendPlayersChannelMessage(final String serverName) {