diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java index f77207a6..0655ac8b 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java @@ -19,18 +19,12 @@ package de.steamwar.velocitycore.commands; -import com.velocitypowered.api.network.ProtocolVersion; import com.velocitypowered.api.proxy.ConnectionRequestBuilder; +import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.ServerInfo; +import com.velocitypowered.api.proxy.server.ServerPing; import com.viaversion.viaversion.api.Via; -import com.viaversion.viaversion.velocity.platform.VelocityViaAPI; import com.viaversion.viaversion.velocity.platform.VelocityViaConfig; -import de.steamwar.persistent.Storage; -import de.steamwar.velocitycore.ServerVersion; -import de.steamwar.velocitycore.VelocityCore; -import de.steamwar.velocitycore.discord.DiscordBot; -import de.steamwar.velocitycore.inventory.SWItem; -import de.steamwar.velocitycore.inventory.SWListInv; import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; import de.steamwar.command.TypeMapper; @@ -38,7 +32,12 @@ import de.steamwar.command.TypeValidator; import de.steamwar.messages.Chatter; import de.steamwar.messages.Message; import de.steamwar.messages.PlayerChatter; +import de.steamwar.persistent.Storage; import de.steamwar.sql.*; +import de.steamwar.velocitycore.VelocityCore; +import de.steamwar.velocitycore.discord.DiscordBot; +import de.steamwar.velocitycore.inventory.SWItem; +import de.steamwar.velocitycore.inventory.SWListInv; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; @@ -406,14 +405,21 @@ public class TeamCommand extends SWCommand { return; } - InetSocketAddress address = new InetSocketAddress(targetTeam.getAddress(), targetTeam.getPort()); - ServerInfo serverInfo = Storage.teamServers.computeIfAbsent(targetTeam.getTeamId(), integer -> { - ServerInfo info = new ServerInfo("Team " + targetTeam.getTeamKuerzel(), address); - VelocityCore.getProxy().registerServer(info); - // This is needed because otherwise ViaVersion uses the wrong version! - ((VelocityViaConfig) Via.getConfig()).getVelocityServerProtocols().put(info.getName(), ProtocolVersion.MAXIMUM_VERSION.getProtocol()); - return info; - }); + InetSocketAddress address; + ServerInfo serverInfo; + try { + address = new InetSocketAddress(targetTeam.getAddress(), targetTeam.getPort()); + serverInfo = Storage.teamServers.computeIfAbsent(targetTeam.getTeamId(), integer -> { + ServerInfo info = new ServerInfo("Team " + targetTeam.getTeamKuerzel(), address); + RegisteredServer server = VelocityCore.getProxy().registerServer(info); + ServerPing serverPing = server.ping().join(); + ((VelocityViaConfig) Via.getConfig()).getVelocityServerProtocols().put(info.getName(), serverPing.getVersion().getProtocol()); + return info; + }); + } catch (Exception e) { + sender.system("TEAM_NO_ADDRESS"); + return; + } if (!address.equals(serverInfo.getAddress())) { VelocityCore.getProxy().unregisterServer(Storage.teamServers.remove(targetTeam.getTeamId()));