1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
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 = 5, minor = 0, revision = 0, 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);
}
}
|