diff --git a/VelocityCore/src/de/steamwar/velocitycore/ServerVersion.java b/VelocityCore/src/de/steamwar/velocitycore/ServerVersion.java index cc7c9d38..a5e08b55 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/ServerVersion.java +++ b/VelocityCore/src/de/steamwar/velocitycore/ServerVersion.java @@ -86,6 +86,17 @@ public enum ServerVersion { return chatMap.keySet(); } + private static final Map versionMap = new HashMap<>(); + + static { + for(ServerVersion version : values()) + versionMap.put(version.getVersionSuffix(), version); + } + + public static ServerVersion get(int version) { + return versionMap.get(version); + } + private final String serverJar; private final int versionSuffix; private final ProtocolVersion protocolVersion; diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/DevCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/DevCommand.java index e24432cc..71b4427c 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/DevCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/DevCommand.java @@ -21,18 +21,21 @@ package de.steamwar.velocitycore.commands; import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.ServerInfo; -import de.steamwar.messages.Chatter; -import de.steamwar.messages.Message; -import de.steamwar.sql.UserPerm; -import de.steamwar.velocitycore.ArenaMode; -import de.steamwar.velocitycore.VelocityCore; +import com.viaversion.viaversion.api.Via; +import com.viaversion.viaversion.velocity.platform.VelocityViaConfig; import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommandUtils; import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeValidator; +import de.steamwar.messages.Chatter; +import de.steamwar.messages.Message; import de.steamwar.messages.PlayerChatter; import de.steamwar.sql.Punishment; import de.steamwar.sql.SteamwarUser; +import de.steamwar.sql.UserPerm; +import de.steamwar.velocitycore.ArenaMode; +import de.steamwar.velocitycore.ServerVersion; +import de.steamwar.velocitycore.VelocityCore; import lombok.Getter; import java.io.File; @@ -113,28 +116,32 @@ public class DevCommand extends SWCommand { private void updateDevServers() { String[] serverFiles = devServerDir.list(); - Map devServerFiles = new HashMap<>(); + Map devServerPorts = new HashMap<>(); + Map devServerVersions = new HashMap<>(); if (serverFiles != null) { for (String serverFile : serverFiles) { String[] server = serverFile.split("\\."); - devServerFiles.put(server[0], Integer.parseInt(server[1])); + devServerPorts.put(server[0], Integer.parseInt(server[1])); + devServerVersions.put(server[0], Integer.parseInt(server[2])); } } devServers.entrySet().removeIf(entry -> { - if (!devServerFiles.containsKey(entry.getKey())) { + if (!devServerPorts.containsKey(entry.getKey())) { VelocityCore.getProxy().unregisterServer(entry.getValue().getServerInfo()); return true; } return false; }); - devServerFiles.forEach((key, value) -> { - if (devServers.containsKey(key)) + devServerPorts.forEach((username, value) -> { + if (devServers.containsKey(username)) return; - SteamwarUser user = SteamwarUser.get(key); - devServers.put(user.getUserName().toLowerCase(), VelocityCore.getProxy().registerServer(new ServerInfo("Dev " + user.getUserName(), new InetSocketAddress("127.0.0.1", value)))); + SteamwarUser user = SteamwarUser.get(username); + String name = "Dev " + user.getUserName(); + ((VelocityViaConfig) Via.getConfig()).getVelocityServerProtocols().put(name, ServerVersion.get(devServerVersions.get(username)).getProtocolVersion().getProtocol()); + devServers.put(user.getUserName().toLowerCase(), VelocityCore.getProxy().registerServer(new ServerInfo(name, new InetSocketAddress("127.0.0.1", value)))); }); } }