diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java index d2dd158..39270b7 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungee.java @@ -67,7 +67,6 @@ public final class RedisBungee extends Plugin { private boolean usingLua; private LuaManager.Script serverToPlayersScript; private LuaManager.Script getPlayerCountScript; - private LuaManager.Script getServerPlayersScript; private static final Object SERVER_TO_PLAYERS_KEY = new Object(); private final Cache> serverToPlayersCache = CacheBuilder.newBuilder() @@ -205,16 +204,6 @@ public final class RedisBungee extends Plugin { return setBuilder.build(); } - final Set getPlayersOnServer(@NonNull String server) { - checkArgument(getProxy().getServers().containsKey(server), "server does not exist"); - Collection asStrings = (Collection) getServerPlayersScript.eval(ImmutableList.of(), ImmutableList.of(server)); - ImmutableSet.Builder builder = ImmutableSet.builder(); - for (String s : asStrings) { - builder.add(UUID.fromString(s)); - } - return builder.build(); - } - final void sendProxyCommand(@NonNull String proxyId, @NonNull String command) { checkArgument(getServerIds().contains(proxyId) || proxyId.equals("allservers"), "proxyId is invalid"); sendChannelMessage("redisbungee-" + proxyId, command); @@ -258,7 +247,6 @@ public final class RedisBungee extends Plugin { LuaManager manager = new LuaManager(this); serverToPlayersScript = manager.createScript(IOUtil.readInputStreamAsString(getResourceAsStream("lua/server_to_players.lua"))); getPlayerCountScript = manager.createScript(IOUtil.readInputStreamAsString(getResourceAsStream("lua/get_player_count.lua"))); - getServerPlayersScript = manager.createScript(IOUtil.readInputStreamAsString(getResourceAsStream("lua/get_server_players.lua"))); } break; } diff --git a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java index 0d626d6..4643024 100644 --- a/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java +++ b/src/main/java/com/imaginarycode/minecraft/redisbungee/RedisBungeeAPI.java @@ -2,6 +2,7 @@ package com.imaginarycode.minecraft.redisbungee; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSet; import com.google.common.collect.Multimap; import lombok.NonNull; import net.md_5.bungee.api.config.ServerInfo; @@ -103,7 +104,7 @@ public class RedisBungeeAPI { * @return a Set with all players found on this server */ public final Set getPlayersOnServer(@NonNull String server) { - return plugin.getPlayersOnServer(server); + return ImmutableSet.copyOf(getServerToPlayers().get(server)); } /** diff --git a/src/main/resources/lua/get_server_players.lua b/src/main/resources/lua/get_server_players.lua deleted file mode 100644 index 49601b0..0000000 --- a/src/main/resources/lua/get_server_players.lua +++ /dev/null @@ -1,33 +0,0 @@ -local c = redis.call -local u = string.upper - -local curTime = c("TIME") -local time = tonumber(curTime[1]) - -local heartbeats = c("HGETALL", "heartbeats") -local all = {} -local key - -local preUppercased = u(ARGV[1]) - -for _, v in ipairs(heartbeats) do - if not key then - key = v - else - local n = tonumber(v) - if n then - if n + 30 >= time then - local players = c("SMEMBERS", "proxy:" .. key .. ":usersOnline") - for _, player in ipairs(players) do - local server = c("HGET", "player:" .. player, "server") - if server and u(server) == preUppercased then - all[#all + 1] = player - end - end - end - end - key = nil - end -end - -return all