Created
March 27, 2014 18:59
-
-
Save TruDan/9815376 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
* 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