mirror of
https://github.com/proxiodev/RedisBungee.git
synced 2026-04-08 16:10:26 +00:00
last bug was caused by confusion due Proxy Called server in some cases Which resulted in new API methods and some refactor
This commit is contained in:
@@ -21,14 +21,14 @@ public class PlayerUtils {
|
||||
Map<String, String> playerData = new HashMap<>(4);
|
||||
playerData.put("online", "0");
|
||||
playerData.put("ip", player.getRemoteAddress().getHostName());
|
||||
playerData.put("proxy", RedisBungeeAPI.getRedisBungeeApi().getServerId());
|
||||
playerData.put("proxy", RedisBungeeAPI.getRedisBungeeApi().getProxyId());
|
||||
|
||||
pipeline.sadd("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getServerId() + ":usersOnline", player.getUniqueId().toString());
|
||||
pipeline.sadd("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", player.getUniqueId().toString());
|
||||
pipeline.hmset("player:" + player.getUniqueId().toString(), playerData);
|
||||
|
||||
if (fireEvent) {
|
||||
pipeline.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
player.getUniqueId(), RedisBungeeAPI.getRedisBungeeApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
player.getUniqueId(), RedisBungeeAPI.getRedisBungeeApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
new AbstractDataManager.LoginPayload(player.getRemoteAddress().getAddress()))));
|
||||
}
|
||||
}
|
||||
@@ -40,14 +40,14 @@ public class PlayerUtils {
|
||||
Map<String, String> playerData = new HashMap<>(4);
|
||||
playerData.put("online", "0");
|
||||
playerData.put("ip", player.getRemoteAddress().getHostName());
|
||||
playerData.put("proxy", RedisBungeeAPI.getRedisBungeeApi().getServerId());
|
||||
playerData.put("proxy", RedisBungeeAPI.getRedisBungeeApi().getProxyId());
|
||||
|
||||
jedisCluster.sadd("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getServerId() + ":usersOnline", player.getUniqueId().toString());
|
||||
jedisCluster.sadd("proxy:" + RedisBungeeAPI.getRedisBungeeApi().getProxyId() + ":usersOnline", player.getUniqueId().toString());
|
||||
jedisCluster.hmset("player:" + player.getUniqueId().toString(), playerData);
|
||||
|
||||
if (fireEvent) {
|
||||
jedisCluster.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
player.getUniqueId(), RedisBungeeAPI.getRedisBungeeApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
player.getUniqueId(), RedisBungeeAPI.getRedisBungeeApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
new AbstractDataManager.LoginPayload(player.getRemoteAddress().getAddress()))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,7 +64,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
}
|
||||
}
|
||||
|
||||
for (String s : plugin.getServerIds()) {
|
||||
for (String s : plugin.getProxiesIds()) {
|
||||
if (jedis.sismember("proxy:" + s + ":usersOnline", event.getPlayer().getUniqueId().toString())) {
|
||||
event.setResult(ResultedEvent.ComponentResult.denied(serializer.deserialize(ALREADY_LOGGED_IN)));
|
||||
return null;
|
||||
@@ -94,7 +94,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
}
|
||||
}
|
||||
|
||||
for (String s : plugin.getServerIds()) {
|
||||
for (String s : plugin.getProxiesIds()) {
|
||||
if (jedisCluster.sismember("proxy:" + s + ":usersOnline", event.getPlayer().getUniqueId().toString())) {
|
||||
event.setResult(ResultedEvent.ComponentResult.denied(serializer.deserialize(ALREADY_LOGGED_IN)));
|
||||
return null;
|
||||
@@ -122,7 +122,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
// the end of moved code.
|
||||
|
||||
jedis.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
new AbstractDataManager.LoginPayload(event.getPlayer().getRemoteAddress().getAddress()))));
|
||||
return null;
|
||||
}
|
||||
@@ -134,7 +134,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
// the end of moved code.
|
||||
|
||||
jedisCluster.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.JOIN,
|
||||
new AbstractDataManager.LoginPayload(event.getPlayer().getRemoteAddress().getAddress()))));
|
||||
return null;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
public Void jedisTask(Jedis jedis) {
|
||||
jedis.hset("player:" + event.getPlayer().getUniqueId().toString(), "server", event.getServer().getServerInfo().getName());
|
||||
jedis.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.SERVER_CHANGE,
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.SERVER_CHANGE,
|
||||
new AbstractDataManager.ServerChangePayload(event.getServer().getServerInfo().getName(), currentServer))));
|
||||
return null;
|
||||
}
|
||||
@@ -183,7 +183,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
public Void clusterJedisTask(JedisCluster jedisCluster) {
|
||||
jedisCluster.hset("player:" + event.getPlayer().getUniqueId().toString(), "server", event.getServer().getServerInfo().getName());
|
||||
jedisCluster.publish("redisbungee-data", gson.toJson(new AbstractDataManager.DataManagerMessage<>(
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getServerId(), AbstractDataManager.DataManagerMessage.Action.SERVER_CHANGE,
|
||||
event.getPlayer().getUniqueId(), plugin.getApi().getProxyId(), AbstractDataManager.DataManagerMessage.Action.SERVER_CHANGE,
|
||||
new AbstractDataManager.ServerChangePayload(event.getServer().getServerInfo().getName(), currentServer))));
|
||||
return null;
|
||||
}
|
||||
@@ -290,7 +290,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
break;
|
||||
case "Proxy":
|
||||
out.writeUTF("Proxy");
|
||||
out.writeUTF(plugin.getConfiguration().getServerId());
|
||||
out.writeUTF(plugin.getConfiguration().getProxyId());
|
||||
break;
|
||||
case "PlayerProxy":
|
||||
String username = in.readUTF();
|
||||
@@ -311,7 +311,7 @@ public class RedisBungeeVelocityListener extends AbstractRedisBungeeListener<Log
|
||||
@Override
|
||||
@Subscribe
|
||||
public void onPubSubMessage(PubSubMessageEvent event) {
|
||||
if (event.getChannel().equals("redisbungee-allservers") || event.getChannel().equals("redisbungee-" + plugin.getApi().getServerId())) {
|
||||
if (event.getChannel().equals("redisbungee-allservers") || event.getChannel().equals("redisbungee-" + plugin.getApi().getProxyId())) {
|
||||
String message = event.getMessage();
|
||||
if (message.startsWith("/"))
|
||||
message = message.substring(1);
|
||||
|
||||
@@ -55,7 +55,6 @@ import java.nio.file.StandardCopyOption;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.*;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.logging.Level;
|
||||
|
||||
@Plugin(id = "redisbungee", name = "RedisBungee", version = PomData.VERSION, url = "https://github.com/ProxioDev/RedisBungee", authors = "ProxioDev")
|
||||
public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
@@ -70,7 +69,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
private RedisBungeeConfiguration configuration;
|
||||
private final VelocityDataManager dataManager;
|
||||
private final OkHttpClient httpClient;
|
||||
private volatile List<String> serverIds;
|
||||
private volatile List<String> proxiesIds;
|
||||
private final AtomicInteger nagAboutServers = new AtomicInteger();
|
||||
private final AtomicInteger globalPlayerCount = new AtomicInteger();
|
||||
private ScheduledTask integrityCheck;
|
||||
@@ -165,9 +164,9 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
getLogger().info("crash file was deleted");
|
||||
} else if (jedis.hexists("heartbeats", configuration.getServerId())) {
|
||||
} else if (jedis.hexists("heartbeats", configuration.getProxyId())) {
|
||||
try {
|
||||
long value = Long.parseLong(jedis.hget("heartbeats", configuration.getServerId()));
|
||||
long value = Long.parseLong(jedis.hget("heartbeats", configuration.getProxyId()));
|
||||
long redisTime = getRedisTime(jedis.time());
|
||||
if (redisTime < value + 20) {
|
||||
getLogger().error("You have launched a possible impostor Velocity / Bungeecord instance. Another instance is already running.");
|
||||
@@ -178,7 +177,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
} else {
|
||||
jedis.hset("heartbeats", configuration.getServerId(), jedis.time().get(0));
|
||||
jedis.hset("heartbeats", configuration.getProxyId(), jedis.time().get(0));
|
||||
}
|
||||
|
||||
return null;
|
||||
@@ -194,9 +193,9 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
getLogger().info("crash file was deleted");
|
||||
} else if (jedisCluster.hexists("heartbeats", configuration.getServerId())) {
|
||||
} else if (jedisCluster.hexists("heartbeats", configuration.getProxyId())) {
|
||||
try {
|
||||
long value = Long.parseLong(jedisCluster.hget("heartbeats", configuration.getServerId()));
|
||||
long value = Long.parseLong(jedisCluster.hget("heartbeats", configuration.getProxyId()));
|
||||
long redisTime = getRedisClusterTime();
|
||||
|
||||
if (redisTime < value + 20) {
|
||||
@@ -208,7 +207,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
} catch (NumberFormatException ignored) {
|
||||
}
|
||||
} else {
|
||||
jedisCluster.hset("heartbeats", configuration.getServerId(), String.valueOf(getRedisClusterTime()));
|
||||
jedisCluster.hset("heartbeats", configuration.getProxyId(), String.valueOf(getRedisClusterTime()));
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@@ -300,7 +299,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
ImmutableSet.Builder<UUID> setBuilder = ImmutableSet.builder();
|
||||
try {
|
||||
List<String> keys = new ArrayList<>();
|
||||
for (String i : getServerIds()) {
|
||||
for (String i : getProxiesIds()) {
|
||||
keys.add("proxy:" + i + ":usersOnline");
|
||||
}
|
||||
if (!keys.isEmpty()) {
|
||||
@@ -327,7 +326,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
ImmutableSet.Builder<UUID> setBuilder = ImmutableSet.builder();
|
||||
try {
|
||||
List<String> keys = new ArrayList<>();
|
||||
for (String i : getServerIds()) {
|
||||
for (String i : getProxiesIds()) {
|
||||
keys.add("proxy:" + i + ":usersOnline");
|
||||
}
|
||||
if (!keys.isEmpty()) {
|
||||
@@ -374,7 +373,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
@Override
|
||||
public Multimap<String, UUID> jedisTask(Jedis jedis) {
|
||||
ImmutableMultimap.Builder<String, UUID> builder = ImmutableMultimap.builder();
|
||||
for (String serverId : getServerIds()) {
|
||||
for (String serverId : getProxiesIds()) {
|
||||
Set<String> players = jedis.smembers("proxy:" + serverId + ":usersOnline");
|
||||
for (String player : players) {
|
||||
builder.put(jedis.hget("player:" + player, "server"), UUID.fromString(player));
|
||||
@@ -386,7 +385,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
@Override
|
||||
public Multimap<String, UUID> clusterJedisTask(JedisCluster jedisCluster) {
|
||||
ImmutableMultimap.Builder<String, UUID> builder = ImmutableMultimap.builder();
|
||||
for (String serverId : getServerIds()) {
|
||||
for (String serverId : getProxiesIds()) {
|
||||
Set<String> players = jedisCluster.smembers("proxy:" + serverId + ":usersOnline");
|
||||
for (String player : players) {
|
||||
builder.put(jedisCluster.hget("player:" + player, "server"), UUID.fromString(player));
|
||||
@@ -402,7 +401,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
@Override
|
||||
public Set<UUID> getPlayersOnProxy(String proxyId) {
|
||||
checkArgument(getServerIds().contains(proxyId), proxyId + " is not a valid proxy ID");
|
||||
checkArgument(getProxiesIds().contains(proxyId), proxyId + " is not a valid proxy ID");
|
||||
return new RedisTask<Set<UUID>>(api) {
|
||||
@Override
|
||||
public Set<UUID> jedisTask(Jedis jedis) {
|
||||
@@ -428,18 +427,18 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
@Override
|
||||
public void sendProxyCommand(String serverId, String command) {
|
||||
checkArgument(getServerIds().contains(serverId) || serverId.equals("allservers"), "proxyId is invalid");
|
||||
checkArgument(getProxiesIds().contains(serverId) || serverId.equals("allservers"), "proxyId is invalid");
|
||||
sendChannelMessage("redisbungee-" + serverId, command);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getServerIds() {
|
||||
return serverIds;
|
||||
public List<String> getProxiesIds() {
|
||||
return proxiesIds;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public List<String> getCurrentServerIds(boolean nag, boolean lagged) {
|
||||
public List<String> getCurrentProxiesIds(boolean nag, boolean lagged) {
|
||||
return new RedisTask<List<String>>(api) {
|
||||
@Override
|
||||
public List<String> jedisTask(Jedis jedis) {
|
||||
@@ -469,7 +468,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
return servers.build();
|
||||
} catch (JedisConnectionException e) {
|
||||
getLogger().error("Unable to fetch server IDs", e);
|
||||
return Collections.singletonList(configuration.getServerId());
|
||||
return Collections.singletonList(configuration.getProxyId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -501,7 +500,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
return servers.build();
|
||||
} catch (JedisConnectionException e) {
|
||||
getLogger().error("Unable to fetch server IDs", e);
|
||||
return Collections.singletonList(configuration.getServerId());
|
||||
return Collections.singletonList(configuration.getProxyId());
|
||||
}
|
||||
}
|
||||
}.execute();
|
||||
@@ -613,8 +612,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
@Override
|
||||
public void sendProxyCommand(String cmd) {
|
||||
checkArgument(getServerIds().contains(this.configuration.getServerId()) || this.configuration.getServerId().equals("allservers"), "proxyId is invalid");
|
||||
sendChannelMessage("redisbungee-" + this.configuration.getServerId(), cmd);
|
||||
checkArgument(getProxiesIds().contains(this.configuration.getProxyId()) || this.configuration.getProxyId().equals("allservers"), "proxyId is invalid");
|
||||
sendChannelMessage("redisbungee-" + this.configuration.getProxyId(), cmd);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -625,21 +624,21 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
serverIds = getCurrentServerIds(true, false);
|
||||
proxiesIds = getCurrentProxiesIds(true, false);
|
||||
// start heartbeat task
|
||||
RedisTask<Void> heartBeatRedisTask = new RedisTask<Void>(api) {
|
||||
@Override
|
||||
public Void jedisTask(Jedis jedis) {
|
||||
try {
|
||||
long redisTime = getRedisTime(jedis.time());
|
||||
jedis.hset("heartbeats", configuration.getServerId(), String.valueOf(redisTime));
|
||||
jedis.hset("heartbeats", configuration.getProxyId(), String.valueOf(redisTime));
|
||||
} catch (JedisConnectionException e) {
|
||||
// Redis server has disappeared!
|
||||
getLogger().error("Unable to update heartbeat - did your Redis server go away?", e);
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
serverIds = getCurrentServerIds(true, false);
|
||||
proxiesIds = getCurrentProxiesIds(true, false);
|
||||
globalPlayerCount.set(getCurrentCount());
|
||||
} catch (Throwable e) {
|
||||
getLogger().error("Unable to update data - did your Redis server go away?", e);
|
||||
@@ -651,14 +650,14 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
public Void clusterJedisTask(JedisCluster jedisCluster) {
|
||||
try {
|
||||
long redisTime = getRedisClusterTime();
|
||||
jedisCluster.hset("heartbeats", configuration.getServerId(), String.valueOf(redisTime));
|
||||
jedisCluster.hset("heartbeats", configuration.getProxyId(), String.valueOf(redisTime));
|
||||
} catch (JedisConnectionException e) {
|
||||
// Redis server has disappeared!
|
||||
getLogger().error("Unable to update heartbeat - did your Redis server go away?", e);
|
||||
return null;
|
||||
}
|
||||
try {
|
||||
serverIds = getCurrentServerIds(true, false);
|
||||
proxiesIds = getCurrentProxiesIds(true, false);
|
||||
globalPlayerCount.set(getCurrentCount());
|
||||
} catch (Throwable e) {
|
||||
getLogger().error("Unable to update data - did your Redis server go away?", e);
|
||||
@@ -676,8 +675,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
public Void jedisTask(Jedis jedis) {
|
||||
try {
|
||||
Set<String> players = getLocalPlayersAsUuidStrings();
|
||||
Set<String> playersInRedis = jedis.smembers("proxy:" + configuration.getServerId() + ":usersOnline");
|
||||
List<String> lagged = getCurrentServerIds(false, true);
|
||||
Set<String> playersInRedis = jedis.smembers("proxy:" + configuration.getProxyId() + ":usersOnline");
|
||||
List<String> lagged = getCurrentProxiesIds(false, true);
|
||||
|
||||
// Clean up lagged players.
|
||||
for (String s : lagged) {
|
||||
@@ -698,8 +697,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
for (String member : absentLocally) {
|
||||
boolean found = false;
|
||||
for (String proxyId : getServerIds()) {
|
||||
if (proxyId.equals(configuration.getServerId())) continue;
|
||||
for (String proxyId : getProxiesIds()) {
|
||||
if (proxyId.equals(configuration.getProxyId())) continue;
|
||||
if (jedis.sismember("proxy:" + proxyId + ":usersOnline", member)) {
|
||||
// Just clean up the set.
|
||||
found = true;
|
||||
@@ -710,7 +709,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
RedisUtil.cleanUpPlayer(member, jedis);
|
||||
getLogger().warn("Player found in set that was not found locally and globally: {}", member);
|
||||
} else {
|
||||
jedis.srem("proxy:" + configuration.getServerId() + ":usersOnline", member);
|
||||
jedis.srem("proxy:" + configuration.getProxyId() + ":usersOnline", member);
|
||||
getLogger().warn("Player found in set that was not found locally, but is on another proxy: {}", member);
|
||||
}
|
||||
}
|
||||
@@ -739,8 +738,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
public Void clusterJedisTask(JedisCluster jedisCluster) {
|
||||
try {
|
||||
Set<String> players = getLocalPlayersAsUuidStrings();
|
||||
Set<String> playersInRedis = jedisCluster.smembers("proxy:" + configuration.getServerId() + ":usersOnline");
|
||||
List<String> lagged = getCurrentServerIds(false, true);
|
||||
Set<String> playersInRedis = jedisCluster.smembers("proxy:" + configuration.getProxyId() + ":usersOnline");
|
||||
List<String> lagged = getCurrentProxiesIds(false, true);
|
||||
|
||||
// Clean up lagged players.
|
||||
for (String s : lagged) {
|
||||
@@ -761,8 +760,8 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
for (String member : absentLocally) {
|
||||
boolean found = false;
|
||||
for (String proxyId : getServerIds()) {
|
||||
if (proxyId.equals(configuration.getServerId())) continue;
|
||||
for (String proxyId : getProxiesIds()) {
|
||||
if (proxyId.equals(configuration.getProxyId())) continue;
|
||||
if (jedisCluster.sismember("proxy:" + proxyId + ":usersOnline", member)) {
|
||||
// Just clean up the set.
|
||||
found = true;
|
||||
@@ -773,7 +772,7 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
RedisUtil.cleanUpPlayer(member, jedisCluster);
|
||||
getLogger().warn("Player found in set that was not found locally and globally: {}", member);
|
||||
} else {
|
||||
jedisCluster.srem("proxy:" + configuration.getServerId() + ":usersOnline", member);
|
||||
jedisCluster.srem("proxy:" + configuration.getProxyId() + ":usersOnline", member);
|
||||
getLogger().warn("Player found in set that was not found locally, but is on another proxy: {}", member);
|
||||
}
|
||||
}
|
||||
@@ -830,9 +829,9 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
new RedisTask<Void>(api) {
|
||||
@Override
|
||||
public Void jedisTask(Jedis jedis) {
|
||||
jedis.hdel("heartbeats", configuration.getServerId());
|
||||
if (jedis.scard("proxy:" + configuration.getServerId() + ":usersOnline") > 0) {
|
||||
Set<String> players = jedis.smembers("proxy:" + configuration.getServerId() + ":usersOnline");
|
||||
jedis.hdel("heartbeats", configuration.getProxyId());
|
||||
if (jedis.scard("proxy:" + configuration.getProxyId() + ":usersOnline") > 0) {
|
||||
Set<String> players = jedis.smembers("proxy:" + configuration.getProxyId() + ":usersOnline");
|
||||
for (String member : players)
|
||||
RedisUtil.cleanUpPlayer(member, jedis);
|
||||
}
|
||||
@@ -841,9 +840,9 @@ public class RedisBungeeVelocityPlugin implements RedisBungeePlugin<Player> {
|
||||
|
||||
@Override
|
||||
public Void clusterJedisTask(JedisCluster jedisCluster) {
|
||||
jedisCluster.hdel("heartbeats", configuration.getServerId());
|
||||
if (jedisCluster.scard("proxy:" + configuration.getServerId() + ":usersOnline") > 0) {
|
||||
Set<String> players = jedisCluster.smembers("proxy:" + configuration.getServerId() + ":usersOnline");
|
||||
jedisCluster.hdel("heartbeats", configuration.getProxyId());
|
||||
if (jedisCluster.scard("proxy:" + configuration.getProxyId() + ":usersOnline") > 0) {
|
||||
Set<String> players = jedisCluster.smembers("proxy:" + configuration.getProxyId() + ":usersOnline");
|
||||
for (String member : players)
|
||||
RedisUtil.cleanUpPlayer(member, jedisCluster);
|
||||
}
|
||||
|
||||
@@ -2,7 +2,6 @@ package com.imaginarycode.minecraft.redisbungee.commands;
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.TreeSet;
|
||||
import java.util.UUID;
|
||||
@@ -271,7 +270,7 @@ public class RedisBungeeCommands {
|
||||
|
||||
@Override
|
||||
public void execute(Invocation invocation) {
|
||||
invocation.source().sendMessage(Component.text("You are on " + plugin.getApi().getServerId() + ".", NamedTextColor.YELLOW));
|
||||
invocation.source().sendMessage(Component.text("You are on " + plugin.getApi().getProxyId() + ".", NamedTextColor.YELLOW));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -289,7 +288,7 @@ public class RedisBungeeCommands {
|
||||
@Override
|
||||
public void execute(Invocation invocation) {
|
||||
invocation.source().sendMessage(
|
||||
Component.text("All server IDs: " + Joiner.on(", ").join(plugin.getApi().getAllServers()), NamedTextColor.YELLOW));
|
||||
Component.text("All server IDs: " + Joiner.on(", ").join(plugin.getApi().getAllProxies()), NamedTextColor.YELLOW));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -310,8 +309,8 @@ public class RedisBungeeCommands {
|
||||
CommandSource sender= invocation.source();
|
||||
String[] args = invocation.arguments();
|
||||
plugin.getProxy().getScheduler().buildTask(plugin, () -> {
|
||||
String proxy = args.length >= 1 ? args[0] : plugin.getConfiguration().getServerId();
|
||||
if (!plugin.getServerIds().contains(proxy)) {
|
||||
String proxy = args.length >= 1 ? args[0] : plugin.getConfiguration().getProxyId();
|
||||
if (!plugin.getProxiesIds().contains(proxy)) {
|
||||
sender.sendMessage(Component.text(proxy + " is not a valid proxy. See /serverids for valid proxies.", NamedTextColor.RED));
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user