diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java index a01b3eb4..28d5bbf2 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java @@ -20,15 +20,16 @@ package de.steamwar.velocitycore.commands; import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.server.RegisteredServer; +import com.velocitypowered.api.proxy.server.ServerInfo; import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; import de.steamwar.command.TypeMapper; import de.steamwar.messages.Chatter; -import de.steamwar.messages.PlayerChatter; -import de.steamwar.persistent.Servertype; import de.steamwar.persistent.Subserver; import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.UserPerm; +import de.steamwar.velocitycore.VelocityCore; import java.util.ArrayList; import java.util.Collection; @@ -41,19 +42,18 @@ public class SendCommand extends SWCommand { } @Register - public void sendToServer(PlayerChatter sender, Player send, Subserver server) { - send.createConnectionRequest(server.getRegisteredServer()).fireAndForget(); + public void sendToServer(Chatter sender, Player send, RegisteredServer server) { + send.createConnectionRequest(server).fireAndForget(); } - @ClassMapper(value = Subserver.class, local = true) - public TypeMapper subserverTypeMapper() { + @ClassMapper(value = RegisteredServer.class, local = true) + public TypeMapper subserverTypeMapper() { return new TypeMapper<>() { @Override - public Subserver map(Chatter sender, PreviousArguments previousArguments, String s) { - List subservers = Subserver.getServerList(); - for (Subserver subserver : subservers) { - if (subserver.getServer().getName().replace(' ', '_').equals(s)) { - return subserver; + public RegisteredServer map(Chatter sender, PreviousArguments previousArguments, String s) { + for (RegisteredServer registeredServer : VelocityCore.getProxy().getAllServers()) { + if (registeredServer.getServerInfo().getName().equals(s)) { + return registeredServer; } } return null; @@ -62,15 +62,31 @@ public class SendCommand extends SWCommand { @Override public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { SteamwarUser user = sender.user(); - List subservers = Subserver.getServerList(); List tabCompletes = new ArrayList<>(); - for (Subserver subserver : subservers) { - if (subserver.getType() == Servertype.BAUSERVER) continue; - if (subserver.getType() == Servertype.ARENA && (user.hasPerm(UserPerm.MODERATION) || user.hasPerm(UserPerm.ADMINISTRATION))) { - tabCompletes.add(subserver.getServer().getName().replace(' ', '_')); + for (RegisteredServer registeredServer : VelocityCore.getProxy().getAllServers()) { + ServerInfo serverInfo = registeredServer.getServerInfo(); + String name = serverInfo.getName(); + if (name.contains(" ")) continue; + + Subserver subserver = Subserver.getSubserver(serverInfo); + if (subserver == null) { + tabCompletes.add(name); + continue; } - if (subserver.getType() == Servertype.BUILDER && user.hasPerm(UserPerm.BUILD)) { - tabCompletes.add(subserver.getServer().getName().replace(' ', '_')); + + switch (subserver.getType()) { + case ARENA: + if (user.hasPerm(UserPerm.MODERATION) || user.hasPerm(UserPerm.ADMINISTRATION)) { + tabCompletes.add(name); + } + break; + case BUILDER: + if (user.hasPerm(UserPerm.BUILD)) { + tabCompletes.add(name); + } + break; + default: + break; } } return tabCompletes;