Skip to content

Instantly share code, notes, and snippets.

@TruDan
Created March 27, 2014 18:59
Show Gist options
  • Save TruDan/9815376 to your computer and use it in GitHub Desktop.
Save TruDan/9815376 to your computer and use it in GitHub Desktop.
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
import eu.scrayos.proxytablist.ProxyTablist;
import eu.scrayos.proxytablist.api.Variable;
import java.util.HashMap;
import java.util.Iterator;
import java.util.regex.MatchResult;
import java.util.regex.Pattern;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.Callback;
import net.md_5.bungee.api.ServerPing;
import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.connection.Server;
/**
*
* @author Dan
*/
public class CurrentServer implements Variable {
private HashMap<ServerInfo, Iterator<ProxiedPlayer>> serverPlayerList = new HashMap<ServerInfo, Iterator<ProxiedPlayer>>();
private static final Pattern pattern = Pattern.compile("\\{currentServer\\}");
private int lastRefreshId = -1;
private ProxiedPlayer lastPlayer;
public CurrentServer() {
(new Thread() {
public void run() {
while(true) {
try {
for (ServerInfo serverInfo : BungeeCord.getInstance().getServers().values()) {
pingServer(serverInfo);
}
Thread.sleep(5000);
} catch (InterruptedException e) {
System.out.println("Interrupted ping Thread");
e.printStackTrace();
}
}
}
}).start();
}
private void pingServer(final ServerInfo serverInfo) {
serverInfo.ping(new Callback<ServerPing>() {
@Override
public void done(ServerPing serverPing, Throwable throwable) {
}
});
}
@Override
public Pattern getPattern() {
return pattern;
}
@Override
public void setRefreshId(int refreshId) {
if (lastRefreshId != refreshId) {
lastRefreshId = refreshId;
serverPlayerList.clear();
}
}
@Override
public boolean hasUpdate(int slot, ProxiedPlayer proxiedPlayer) {
if (lastPlayer != proxiedPlayer) {
lastPlayer = proxiedPlayer;
return true;
}
return false;
}
@Override
public void setMatchResult(MatchResult matchResult) {
// Do nothing
}
@Override
public boolean isForGlobalTablist() {
return false;
}
@Override
public String getText(Short ping) {
if(lastPlayer == null) {
return "";
}
Server server = lastPlayer.getServer();
if(server == null) {
return "";
}
ServerInfo serverInfo = server.getInfo();
if (serverInfo == null) {
return "";
}
return serverInfo.getName();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment