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; + } + }; + } +}