From 85c0db873c34db51e48ae030be6d888ee3cbfcd4 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sun, 2 Mar 2025 19:09:59 +0100 Subject: [PATCH] Final Hotfix of Send Command! --- .../steamwar/messages/BungeeCore.properties | 4 ++ .../messages/BungeeCore_de.properties | 4 ++ .../velocitycore/commands/SendCommand.java | 40 ++++++++++++++----- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties index 8f288592..863d1099 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties @@ -127,6 +127,10 @@ HELP_BAU_LOCK_HOVER=§eLock your build server HELP_BAU_UNLOCK=§8/§ebuild unlock §8- §7Unlocks the buildserver for added users HELP_BAU_UNLOCK_HOVER=§eUnlock your build server +#Send Command +SEND_MESSAGE=§e{0}§7 send you to §e{1}§8! +SEND_MESSAGE_SELF=§eYou§7 send §e{0}§7 to §e{1}§8! + #Usage description of various commands USAGE_ALERT=§8/§7alert §8[§emessage§8] USAGE_IGNORE=§8/§7ignore §8[§eplayer§8] diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties index 34ecb20f..b758353c 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties @@ -112,6 +112,10 @@ HELP_BAU_LOCK_HOVER=§eSperre deinen Bau HELP_BAU_UNLOCK=§8/§ebau unlock §8- §7Öffne deinen Bauserver für alle hinzugefügten Spieler HELP_BAU_UNLOCK_HOVER=§eÖffne deinen Bau +#Send Command +SEND_MESSAGE=§e{0}§7 hat dich auf §e{1}§7 gesendet§8! +SEND_MESSAGE_SELF=§eDu§7 hast §e{0}§7 auf §e{1}§7 gesendet§8! + #Usage description of various commands USAGE_ALERT=§8/§7alert §8[§eNachricht§8] USAGE_IGNORE=§8/§7ignore §8[§eSpieler§8] diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java index 8d8fa415..1a5ba9f5 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/SendCommand.java @@ -27,6 +27,7 @@ import de.steamwar.command.PreviousArguments; import de.steamwar.command.SWCommand; import de.steamwar.command.TypeMapper; import de.steamwar.messages.Chatter; +import de.steamwar.messages.Message; import de.steamwar.persistent.Subserver; import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.UserPerm; @@ -47,24 +48,27 @@ public class SendCommand extends SWCommand { @Register("to") public void sendCommand(Chatter sender, RegisteredServer toServer, Player... players) { + String serverName = toServer.getServerInfo().getName(); for (Player player : players) { player.createConnectionRequest(toServer).fireAndForget(); + Chatter.of(player).send(true, null, null, new Message("SEND_MESSAGE", sender.user().getUserName(), serverName)); } + sender.send(true, null, null, new Message("SEND_MESSAGE_SELF", players.length, serverName)); + } + + private boolean check(SteamwarUser user, RegisteredServer registeredServer) { + if (registeredServer == null) return false; + ServerInfo serverInfo = registeredServer.getServerInfo(); + String name = serverInfo.getName(); + if (name.contains(" ")) return false; + + Subserver subserver = Subserver.getSubserver(serverInfo); + return subserver == null || Subserver.isArena(subserver) || (Subserver.isBuilder(subserver) && user.hasPerm(UserPerm.BUILD)); } @ClassMapper(value = RegisteredServer.class, local = true) public TypeMapper subserverTypeMapper() { return new TypeMapper<>() { - private boolean check(SteamwarUser user, RegisteredServer registeredServer) { - if (registeredServer == null) return false; - ServerInfo serverInfo = registeredServer.getServerInfo(); - String name = serverInfo.getName(); - if (name.contains(" ")) return false; - - Subserver subserver = Subserver.getSubserver(serverInfo); - return subserver == null || Subserver.isArena(subserver) || (Subserver.isBuilder(subserver) && user.hasPerm(UserPerm.BUILD)); - } - @Override public RegisteredServer map(Chatter sender, PreviousArguments previousArguments, String s) { SteamwarUser user = sender.user(); @@ -115,12 +119,26 @@ public class SendCommand extends SWCommand { return VelocityCore.getProxy().getPlayer(s).orElse(null); } + @Override + public boolean validate(Chatter sender, Player value, MessageSender messageSender) { + SteamwarUser user = sender.user(); + if (user.hasPerm(UserPerm.ADMINISTRATION)) return true; + return check(user, value.getCurrentServer().map(ServerConnection::getServer).orElse(null)); + } + @Override public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { List previous = previousArguments.getAll(RegisteredServer.class); if (previous.isEmpty()) return null; + SteamwarUser user = sender.user(); Collection players = previous.get(0).getPlayersConnected(); - return VelocityCore.getProxy().getAllPlayers().stream().filter(player -> !players.contains(player)).map(Player::getUsername).collect(Collectors.toList()); + return VelocityCore.getProxy() + .getAllPlayers() + .stream() + .filter(player -> !players.contains(player)) + .filter(player -> user.hasPerm(UserPerm.ADMINISTRATION) || check(user, player.getCurrentServer().map(ServerConnection::getServer).orElse(null))) + .map(Player::getUsername) + .collect(Collectors.toList()); } }; }