Remove ViaVersion requirement from dev servers

This commit is contained in:
Lixfel
2025-01-22 09:29:20 +01:00
parent bbd42a769b
commit e83878a49b
2 changed files with 30 additions and 12 deletions
@@ -86,6 +86,17 @@ public enum ServerVersion {
return chatMap.keySet(); return chatMap.keySet();
} }
private static final Map<Integer, ServerVersion> 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 String serverJar;
private final int versionSuffix; private final int versionSuffix;
private final ProtocolVersion protocolVersion; private final ProtocolVersion protocolVersion;
@@ -21,18 +21,21 @@ package de.steamwar.velocitycore.commands;
import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.RegisteredServer;
import com.velocitypowered.api.proxy.server.ServerInfo; import com.velocitypowered.api.proxy.server.ServerInfo;
import de.steamwar.messages.Chatter; import com.viaversion.viaversion.api.Via;
import de.steamwar.messages.Message; import com.viaversion.viaversion.velocity.platform.VelocityViaConfig;
import de.steamwar.sql.UserPerm;
import de.steamwar.velocitycore.ArenaMode;
import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils; import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator; import de.steamwar.command.TypeValidator;
import de.steamwar.messages.Chatter;
import de.steamwar.messages.Message;
import de.steamwar.messages.PlayerChatter; import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.Punishment; import de.steamwar.sql.Punishment;
import de.steamwar.sql.SteamwarUser; 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 lombok.Getter;
import java.io.File; import java.io.File;
@@ -113,28 +116,32 @@ public class DevCommand extends SWCommand {
private void updateDevServers() { private void updateDevServers() {
String[] serverFiles = devServerDir.list(); String[] serverFiles = devServerDir.list();
Map<String, Integer> devServerFiles = new HashMap<>(); Map<String, Integer> devServerPorts = new HashMap<>();
Map<String, Integer> devServerVersions = new HashMap<>();
if (serverFiles != null) { if (serverFiles != null) {
for (String serverFile : serverFiles) { for (String serverFile : serverFiles) {
String[] server = serverFile.split("\\."); 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 -> { devServers.entrySet().removeIf(entry -> {
if (!devServerFiles.containsKey(entry.getKey())) { if (!devServerPorts.containsKey(entry.getKey())) {
VelocityCore.getProxy().unregisterServer(entry.getValue().getServerInfo()); VelocityCore.getProxy().unregisterServer(entry.getValue().getServerInfo());
return true; return true;
} }
return false; return false;
}); });
devServerFiles.forEach((key, value) -> { devServerPorts.forEach((username, value) -> {
if (devServers.containsKey(key)) if (devServers.containsKey(username))
return; return;
SteamwarUser user = SteamwarUser.get(key); SteamwarUser user = SteamwarUser.get(username);
devServers.put(user.getUserName().toLowerCase(), VelocityCore.getProxy().registerServer(new ServerInfo("Dev " + user.getUserName(), new InetSocketAddress("127.0.0.1", value)))); 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))));
}); });
} }
} }