summaryrefslogtreecommitdiff
path: root/src/main/java/com/redstoner/modules/onlineplayers
diff options
context:
space:
mode:
authorDavid <david@panic.tk>2018-11-07 23:50:06 +0100
committerDavid <david@panic.tk>2018-11-07 23:50:06 +0100
commit604cf01967ede98bf5024e4926bb0777fc4e8eee (patch)
treee2fa63d7e683769ee3bf3eddc75280648e92eb04 /src/main/java/com/redstoner/modules/onlineplayers
parente86c52ef7c0e1e33c6af0e8674b038976bec11cc (diff)
Converted Modules to gradle
Diffstat (limited to 'src/main/java/com/redstoner/modules/onlineplayers')
-rw-r--r--src/main/java/com/redstoner/modules/onlineplayers/OnlinePlayers.java92
1 files changed, 92 insertions, 0 deletions
diff --git a/src/main/java/com/redstoner/modules/onlineplayers/OnlinePlayers.java b/src/main/java/com/redstoner/modules/onlineplayers/OnlinePlayers.java
new file mode 100644
index 0000000..f09d100
--- /dev/null
+++ b/src/main/java/com/redstoner/modules/onlineplayers/OnlinePlayers.java
@@ -0,0 +1,92 @@
+package com.redstoner.modules.onlineplayers;
+
+import java.io.File;
+
+import org.bukkit.Bukkit;
+import org.bukkit.entity.Player;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
+import org.bukkit.event.Listener;
+import org.bukkit.event.player.PlayerJoinEvent;
+import org.bukkit.event.player.PlayerQuitEvent;
+import org.json.simple.JSONArray;
+import org.json.simple.JSONObject;
+
+import com.redstoner.annotations.AutoRegisterListener;
+import com.redstoner.annotations.Version;
+import com.redstoner.misc.JsonManager;
+import com.redstoner.misc.Main;
+import com.redstoner.modules.Module;
+import com.redstoner.modules.datamanager.DataManager;
+
+@AutoRegisterListener
+@Version(major = 4, minor = 0, revision = 3, compatible = 4)
+@SuppressWarnings("unchecked")
+public class OnlinePlayers implements Module, Listener
+{
+ private File saveFile = null;
+ private JSONObject output = null;
+ private JSONArray players = null;
+
+ @Override
+ public void postEnable()
+ {
+ saveFile = new File(Main.plugin.getDataFolder(), "players.json");
+ output = new JSONObject();
+ players = new JSONArray();
+ output.put("dataFormat", "v2");
+ rescan();
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR)
+ public void onPlayerJoin(PlayerJoinEvent event)
+ {
+ add(event.getPlayer());
+ }
+
+ @EventHandler(priority = EventPriority.MONITOR)
+ public void onPlayerQuit(PlayerQuitEvent event)
+ {
+ remove(event.getPlayer());
+ }
+
+ public void rescan()
+ {
+ players = new JSONArray();
+ for (Player p : Bukkit.getOnlinePlayers())
+ add(p);
+ save();
+ }
+
+ public synchronized void add(Player player)
+ {
+ JSONObject jsonPlayer = new JSONObject();
+ jsonPlayer.put("name", player.getName());
+ jsonPlayer.put("UUID", player.getUniqueId().toString());
+ jsonPlayer.put("joined", System.currentTimeMillis());
+ jsonPlayer.put("vanished", DataManager.getState(player, "vanished"));
+ jsonPlayer.put("afk", DataManager.getState(player, "afk"));
+ players.add(jsonPlayer);
+ save();
+ }
+
+ public synchronized void remove(Player player)
+ {
+ JSONArray toRemove = new JSONArray();
+ for (Object obj : players)
+ {
+ JSONObject o = (JSONObject) obj;
+ if (((String) o.get("UUID")).equals(player.getUniqueId().toString()))
+ toRemove.add(obj);
+ }
+ players.removeAll(toRemove);
+ save();
+ }
+
+ public synchronized void save()
+ {
+ output.put("players", players);
+ output.put("amount", players.size());
+ JsonManager.save((JSONObject) output.clone(), saveFile);
+ }
+}