diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Fallback/SmartReconnectHandler.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Fallback/SmartReconnectHandler.java index fe76cc4b..8e44a9b1 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Fallback/SmartReconnectHandler.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/Library/Fallback/SmartReconnectHandler.java @@ -34,7 +34,7 @@ public class SmartReconnectHandler implements ReconnectHandler { if (fallbacks.isEmpty()) { return null; } else { - if (player instanceof UserConnection) ((UserConnection) player).setServerJoinQueue(new LinkedBlockingQueue<>(fallbacks.keySet())); + if (player instanceof UserConnection) ((UserConnection) player).setServerJoinQueue(new LinkedList<>(fallbacks.keySet())); return new LinkedList>(fallbacks.entrySet()).getFirst().getValue(); } } diff --git a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java index 955a8478..1239646b 100644 --- a/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java +++ b/SubServers.Bungee/src/net/ME1312/SubServers/Bungee/SubPlugin.java @@ -856,8 +856,10 @@ public final class SubPlugin extends BungeeCord implements Listener { ServerInfo next = new LinkedList>(fallbacks.entrySet()).getFirst().getValue(); e.setCancelServer(next); - ((UserConnection) e.getPlayer()).setServerJoinQueue(new LinkedBlockingQueue<>(fallbacks.keySet())); - ((UserConnection) e.getPlayer()).connect(next, null, true); + if (Util.isException(() -> Util.reflect(ServerKickEvent.class.getDeclaredMethod("setCancelServers", ServerInfo[].class), e, (Object) fallbacks.values().toArray(new ServerInfo[0])))) { + ((UserConnection) e.getPlayer()).setServerJoinQueue(new LinkedBlockingQueue<>(fallbacks.keySet())); + ((UserConnection) e.getPlayer()).connect(next, null, true); + } } } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Fallback/SmartReconnectHandler.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Fallback/SmartReconnectHandler.java index 1bf8b3f3..4cb507fb 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Fallback/SmartReconnectHandler.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/Library/Fallback/SmartReconnectHandler.java @@ -34,7 +34,7 @@ public class SmartReconnectHandler implements ReconnectHandler { if (fallbacks.isEmpty()) { return null; } else { - if (player instanceof UserConnection) ((UserConnection) player).setServerJoinQueue(new LinkedBlockingQueue<>(fallbacks.keySet())); + if (player instanceof UserConnection) ((UserConnection) player).setServerJoinQueue(new LinkedList<>(fallbacks.keySet())); return new LinkedList>(fallbacks.entrySet()).getFirst().getValue(); } } diff --git a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java index f648ee57..1372257d 100644 --- a/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java +++ b/SubServers.Sync/src/net/ME1312/SubServers/Sync/SubPlugin.java @@ -354,8 +354,10 @@ public final class SubPlugin extends BungeeCord implements Listener { ServerInfo next = new LinkedList>(fallbacks.entrySet()).getFirst().getValue(); e.setCancelServer(next); - ((UserConnection) e.getPlayer()).setServerJoinQueue(new LinkedBlockingQueue<>(fallbacks.keySet())); - ((UserConnection) e.getPlayer()).connect(next, null, true); + if (Util.isException(() -> Util.reflect(ServerKickEvent.class.getDeclaredMethod("setCancelServers", ServerInfo[].class), e, (Object) fallbacks.values().toArray(new ServerInfo[0])))) { + ((UserConnection) e.getPlayer()).setServerJoinQueue(new LinkedList<>(fallbacks.keySet())); + ((UserConnection) e.getPlayer()).connect(next, null, true); + } } } }