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();
}
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 int versionSuffix;
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.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<String, Integer> devServerFiles = new HashMap<>();
Map<String, Integer> devServerPorts = new HashMap<>();
Map<String, Integer> 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))));
});
}
}