mirror of
https://github.com/BGHDDevelopment/PlayerBalancer.git
synced 2024-11-09 04:20:32 +01:00
Proper check for successful connections
This commit is contained in:
parent
d0ac9dc89b
commit
7b77f33c72
@ -85,15 +85,7 @@ public class FallbackCommand extends Command {
|
||||
MessageUtils.send(player, ConfigEntries.INVALID_INPUT_MESSAGE.get());
|
||||
}
|
||||
} else {
|
||||
//TODO instead of checking if the sections are the same, we have to check if the section the player is
|
||||
//TODO currently going to contains the server the player is connected to
|
||||
//TODO this should be done in ConnectionIntent instead of here
|
||||
ServerSection current = plugin.getSectionManager().getByPlayer(player);
|
||||
if (current != target) {
|
||||
ConnectionIntent.simple(plugin, player, target);
|
||||
} else {
|
||||
MessageUtils.send(player, ConfigEntries.SAME_SECTION.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception e) {
|
||||
|
@ -9,6 +9,7 @@ import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
||||
import net.md_5.bungee.api.Callback;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.connection.Server;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -30,7 +31,15 @@ public abstract class ConnectionIntent {
|
||||
);
|
||||
|
||||
if (servers == section.getServers()) {
|
||||
throw new IllegalStateException("The servers list parameter is the same object as the section servers list, this cannot happen");
|
||||
throw new IllegalStateException("The servers list parameter is the same reference, this cannot happen");
|
||||
}
|
||||
|
||||
Server current = player.getServer();
|
||||
if (current != null) {
|
||||
if (section.getServers().contains(current.getInfo())) {
|
||||
MessageUtils.send(player, ConfigEntries.SAME_SECTION.get());
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (section.getProvider() != ProviderType.NONE) {
|
||||
|
@ -1,5 +0,0 @@
|
||||
package com.jaimemartz.playerbalancer.connection.types;
|
||||
|
||||
public class DirectionConnection {
|
||||
// TODO: 09/08/2017
|
||||
}
|
@ -7,6 +7,7 @@ import com.jaimemartz.playerbalancer.connection.ServerAssignRegistry;
|
||||
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
|
||||
import com.jaimemartz.playerbalancer.section.ServerSection;
|
||||
import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
||||
import net.md_5.bungee.api.Callback;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.api.event.ServerConnectEvent;
|
||||
@ -64,12 +65,13 @@ public class ServerConnectListener implements Listener {
|
||||
if (section != null) {
|
||||
new ConnectionIntent(plugin, player, section) {
|
||||
@Override
|
||||
public void connect(ServerInfo server) {
|
||||
public void connect(ServerInfo server, Callback<Boolean> callback) {
|
||||
if (ConfigEntries.ASSIGN_TARGETS_ENABLED.get()) {
|
||||
ServerAssignRegistry.assignTarget(player, section, server);
|
||||
}
|
||||
|
||||
event.setTarget(server);
|
||||
callback.done(true, null);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -6,6 +6,7 @@ import com.jaimemartz.playerbalancer.connection.ConnectionIntent;
|
||||
import com.jaimemartz.playerbalancer.manager.PlayerLocker;
|
||||
import com.jaimemartz.playerbalancer.section.ServerSection;
|
||||
import com.jaimemartz.playerbalancer.utils.MessageUtils;
|
||||
import net.md_5.bungee.api.Callback;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import net.md_5.bungee.api.config.ServerInfo;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
@ -110,7 +111,7 @@ public class ServerKickListener implements Listener {
|
||||
|
||||
new ConnectionIntent(plugin, player, section, servers) {
|
||||
@Override
|
||||
public void connect(ServerInfo server) {
|
||||
public void connect(ServerInfo server, Callback<Boolean> callback) {
|
||||
PlayerLocker.lock(player);
|
||||
MessageUtils.send(player, ConfigEntries.KICK_MESSAGE.get(),
|
||||
(str) -> str.replace("{from}", from.getName())
|
||||
@ -121,6 +122,7 @@ public class ServerKickListener implements Listener {
|
||||
plugin.getProxy().getScheduler().schedule(plugin, () -> {
|
||||
PlayerLocker.unlock(player);
|
||||
}, 5, TimeUnit.SECONDS);
|
||||
callback.done(true, null);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
@ -56,6 +56,7 @@ public class SectionManager {
|
||||
section.postInit();
|
||||
});
|
||||
|
||||
//todo unify loading code with SectionManager
|
||||
if (ConfigEntries.SERVERS_UPDATE.get()) {
|
||||
updateTask = plugin.getProxy().getScheduler().schedule(plugin, () -> {
|
||||
this.sections.forEach((name, section) -> {
|
||||
|
@ -39,7 +39,7 @@ import java.util.Comparator;
|
||||
* Use the static "sort" method from the java.util.Collections class:
|
||||
* Collections.sort(your list, new AlphanumComparator());
|
||||
*/
|
||||
public class AlphanumComparator implements Comparator
|
||||
public final class AlphanumComparator implements Comparator
|
||||
{
|
||||
private final boolean isDigit(char ch)
|
||||
{
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.jaimemartz.playerbalancer.utils;
|
||||
|
||||
public class DigitUtils {
|
||||
public final class DigitUtils {
|
||||
public static int getDigits(String string, int digits) {
|
||||
StringBuilder builder = new StringBuilder();
|
||||
|
||||
|
@ -7,7 +7,7 @@ import net.md_5.bungee.api.config.ServerInfo;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
public class FixedAdapter extends AdapterWrapper {
|
||||
public final class FixedAdapter extends AdapterWrapper {
|
||||
private static final Map<String, ServerInfo> fakeServers = new HashMap<>();
|
||||
|
||||
static {
|
||||
|
@ -15,7 +15,7 @@ import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class GuestPaste {
|
||||
public final class GuestPaste {
|
||||
private final String key;
|
||||
private final String code;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
package com.jaimemartz.playerbalancer.utils;
|
||||
|
||||
public class LevenshteinDistance {
|
||||
public final class LevenshteinDistance {
|
||||
public static <T> T closest(Iterable<T> collection, T target) {
|
||||
int distance = Integer.MAX_VALUE;
|
||||
T closest = null;
|
||||
|
@ -7,7 +7,7 @@ import net.md_5.bungee.api.chat.TextComponent;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
public class MessageUtils {
|
||||
public final class MessageUtils {
|
||||
public static void send(CommandSender sender, String text) {
|
||||
if (text != null) {
|
||||
text = ChatColor.translateAlternateColorCodes('&', text);
|
||||
|
@ -16,7 +16,7 @@ import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.util.List;
|
||||
|
||||
public class ServerListPing {
|
||||
public final class ServerListPing {
|
||||
private int timeout = 7000;
|
||||
private static Gson gson = new GsonBuilder()
|
||||
.registerTypeAdapter(BaseComponent.class, new ComponentSerializer())
|
||||
|
Loading…
Reference in New Issue
Block a user