Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. package ru.dondays.dapi.api.bungee;
  2.  
  3. import com.google.common.collect.Iterables;
  4. import com.google.common.io.ByteArrayDataInput;
  5. import com.google.common.io.ByteArrayDataOutput;
  6. import com.google.common.io.ByteStreams;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.entity.Player;
  9. import org.bukkit.plugin.messaging.PluginMessageListener;
  10. import ru.dondays.gamegui.GameGui;
  11.  
  12. import java.util.HashMap;
  13.  
  14. public class OnlineCounter
  15. implements PluginMessageListener {
  16.  
  17. private final String name;
  18. private int online = 0;
  19.  
  20. public static HashMap<String, OnlineCounter> counters = new HashMap<>();
  21.  
  22. public OnlineCounter(String name) {
  23. this.name = name;
  24. GameGui.getInstance().getServer().getMessenger().registerIncomingPluginChannel(GameGui.getInstance(), "BungeeCord", this);
  25. }
  26.  
  27. public void sendRequest() {
  28. ByteArrayDataOutput out = ByteStreams.newDataOutput();
  29. out.writeUTF("PlayerCount");
  30. out.writeUTF(this.name);
  31. Player player = Iterables.getFirst(Bukkit.getOnlinePlayers(), null);
  32. if(player == null) {
  33. return;
  34. }
  35. player.sendPluginMessage(DAPI.getInstance(), "BungeeCord", out.toByteArray());
  36.  
  37. counters.put(this.name.toLowerCase(), this);
  38. }
  39.  
  40. public int getOnline() {
  41. return this.online;
  42. }
  43.  
  44. @Override
  45. public void onPluginMessageReceived(String channel, Player player, byte[] message) {
  46. if(!channel.equals("BungeeCord")) {
  47. return;
  48. }
  49. ByteArrayDataInput in = ByteStreams.newDataInput(message);
  50. if((in.readUTF().equals("PlayerCount")) && (in.readUTF().equalsIgnoreCase(this.name))) {
  51. this.online = in.readInt();
  52. }
  53. }
  54.  
  55. public static int getOnline(String server) {
  56. OnlineCounter counter;
  57. if(counters.containsKey(server.toLowerCase())) {
  58. counter = counters.get(server.toLowerCase());
  59. } else {
  60. counter = new OnlineCounter(server);
  61. }
  62. counter.sendRequest();
  63. return counter.getOnline();
  64. }
  65. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement