From 2c43ba1cda8fdbbac5173ab3af8a5b5e740ccaf8 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Tue, 6 Aug 2024 08:59:28 +0200 Subject: [PATCH 1/4] Add SendCommand --- .../steamwar/velocitycore/VelocityCore.java | 1 + .../velocitycore/commands/SendCommand.java | 80 +++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java diff --git a/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java b/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java index 39442713..6a5b3ade 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java +++ b/VelocityCore/src/de/steamwar/velocitycore/VelocityCore.java @@ -170,6 +170,7 @@ public class VelocityCore implements ReloadablePlugin { teamCommand = new TeamCommand(); new ServerTeamchatCommand(); new DevCommand(); + new SendCommand(); new EventCommand(); new EventreloadCommand(); new EventRescheduleCommand(); diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java new file mode 100644 index 00000000..a01b3eb4 --- /dev/null +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java @@ -0,0 +1,80 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2024 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.velocitycore.commands; + +import com.velocitypowered.api.proxy.Player; +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 java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +public class SendCommand extends SWCommand { + + public SendCommand() { + super("send", UserPerm.TEAM); + } + + @Register + public void sendToServer(PlayerChatter sender, Player send, Subserver server) { + send.createConnectionRequest(server.getRegisteredServer()).fireAndForget(); + } + + @ClassMapper(value = Subserver.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; + } + } + return null; + } + + @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(' ', '_')); + } + if (subserver.getType() == Servertype.BUILDER && user.hasPerm(UserPerm.BUILD)) { + tabCompletes.add(subserver.getServer().getName().replace(' ', '_')); + } + } + return tabCompletes; + } + }; + } +} From 2ca8443e4210f928ec732bfa2b515a7233d1a56e Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Tue, 6 Aug 2024 14:03:57 +0200 Subject: [PATCH 2/4] Update SendCommand --- .../velocitycore/commands/SendCommand.java | 52 ++++++++++++------- 1 file changed, 34 insertions(+), 18 deletions(-) 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; From 80ec327818128f79164e4adbf873e5acaffc4b78 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Tue, 6 Aug 2024 15:32:37 +0200 Subject: [PATCH 3/4] Update SendCommand --- .../src/de/steamwar/velocitycore/commands/SendCommand.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java index 28d5bbf2..887829e5 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java @@ -76,9 +76,7 @@ public class SendCommand extends SWCommand { switch (subserver.getType()) { case ARENA: - if (user.hasPerm(UserPerm.MODERATION) || user.hasPerm(UserPerm.ADMINISTRATION)) { - tabCompletes.add(name); - } + tabCompletes.add(name); break; case BUILDER: if (user.hasPerm(UserPerm.BUILD)) { From 5b730fc67dc46148a24ee94db0c5c5e877248b2b Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Tue, 6 Aug 2024 18:04:59 +0200 Subject: [PATCH 4/4] Update SendCommand --- .../velocitycore/commands/SendCommand.java | 43 +++++++++---------- .../listeners/ConnectionListener.java | 2 +- 2 files changed, 22 insertions(+), 23 deletions(-) diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java index 887829e5..660a4ec3 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java @@ -49,10 +49,28 @@ public class SendCommand extends SWCommand { @ClassMapper(value = RegisteredServer.class, local = true) public TypeMapper subserverTypeMapper() { return new TypeMapper<>() { + private boolean check(SteamwarUser user, RegisteredServer registeredServer) { + ServerInfo serverInfo = registeredServer.getServerInfo(); + String name = serverInfo.getName(); + if (name.contains(" ")) return false; + + Subserver subserver = Subserver.getSubserver(serverInfo); + if (subserver == null) { + return true; + } + + return switch (subserver.getType()) { + case ARENA -> true; + case BUILDER -> user.hasPerm(UserPerm.BUILD); + default -> false; + }; + } + @Override public RegisteredServer map(Chatter sender, PreviousArguments previousArguments, String s) { + SteamwarUser user = sender.user(); for (RegisteredServer registeredServer : VelocityCore.getProxy().getAllServers()) { - if (registeredServer.getServerInfo().getName().equals(s)) { + if (check(user, registeredServer)) { return registeredServer; } } @@ -64,27 +82,8 @@ public class SendCommand extends SWCommand { SteamwarUser user = sender.user(); List tabCompletes = new ArrayList<>(); 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; - } - - switch (subserver.getType()) { - case ARENA: - tabCompletes.add(name); - break; - case BUILDER: - if (user.hasPerm(UserPerm.BUILD)) { - tabCompletes.add(name); - } - break; - default: - break; + if (check(user, registeredServer)) { + tabCompletes.add(registeredServer.getServerInfo().getName()); } } return tabCompletes; diff --git a/VelocityCore/src/de/steamwar/velocitycore/listeners/ConnectionListener.java b/VelocityCore/src/de/steamwar/velocitycore/listeners/ConnectionListener.java index 4fb3d0df..ec8d1726 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/listeners/ConnectionListener.java +++ b/VelocityCore/src/de/steamwar/velocitycore/listeners/ConnectionListener.java @@ -49,7 +49,7 @@ public class ConnectionListener extends BasicListener { newPlayers.add(player); } - private static final Set TEAM_PERMISSIONS = Set.of("velocity.command.send", "velocity.command.glist"); + private static final Set TEAM_PERMISSIONS = Set.of("velocity.command.glist"); @Subscribe public void onPermissionSetup(PermissionsSetupEvent event) {