Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.dondays.dapi.api.bungee;
- import com.google.common.collect.Iterables;
- import com.google.common.io.ByteArrayDataInput;
- import com.google.common.io.ByteArrayDataOutput;
- import com.google.common.io.ByteStreams;
- import org.bukkit.Bukkit;
- import org.bukkit.entity.Player;
- import org.bukkit.plugin.messaging.PluginMessageListener;
- import ru.dondays.gamegui.GameGui;
- import java.util.HashMap;
- public class OnlineCounter
- implements PluginMessageListener {
- private final String name;
- private int online = 0;
- public static HashMap<String, OnlineCounter> counters = new HashMap<>();
- public OnlineCounter(String name) {
- this.name = name;
- GameGui.getInstance().getServer().getMessenger().registerIncomingPluginChannel(GameGui.getInstance(), "BungeeCord", this);
- }
- public void sendRequest() {
- ByteArrayDataOutput out = ByteStreams.newDataOutput();
- out.writeUTF("PlayerCount");
- out.writeUTF(this.name);
- Player player = Iterables.getFirst(Bukkit.getOnlinePlayers(), null);
- if(player == null) {
- return;
- }
- player.sendPluginMessage(DAPI.getInstance(), "BungeeCord", out.toByteArray());
- counters.put(this.name.toLowerCase(), this);
- }
- public int getOnline() {
- return this.online;
- }
- @Override
- public void onPluginMessageReceived(String channel, Player player, byte[] message) {
- if(!channel.equals("BungeeCord")) {
- return;
- }
- ByteArrayDataInput in = ByteStreams.newDataInput(message);
- if((in.readUTF().equals("PlayerCount")) && (in.readUTF().equalsIgnoreCase(this.name))) {
- this.online = in.readInt();
- }
- }
- public static int getOnline(String server) {
- OnlineCounter counter;
- if(counters.containsKey(server.toLowerCase())) {
- counter = counters.get(server.toLowerCase());
- } else {
- counter = new OnlineCounter(server);
- }
- counter.sendRequest();
- return counter.getOnline();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement