diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties index 6f0c2054..c9fd04eb 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore.properties @@ -493,6 +493,10 @@ TEAM_INFO_TEAM = §7Team §e{0} §8[§{1}{2}§8] TEAM_INFO_LEADER = §7Leader ({0})§8: {1} TEAM_INFO_MEMBER = §7Member ({0})§8: {1} TEAM_INFO_EVENTS = §7Events ({0})§8: §e{1} +#Server Team +TEAM_INFO_SW_USAGE = §8/§7team info §8[§eSW§8|§eSteamWar§8] +TEAM_INFO_SW_HEADER = §eSteam§8War Server Team +TEAM_INFO_SW_RANK = {0} §7({1})§8: {2} #Team List TEAM_LIST_NOT_PAGE = §cNo page number entered diff --git a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties index 860d311b..d8320e66 100644 --- a/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties +++ b/VelocityCore/src/de/steamwar/messages/BungeeCore_de.properties @@ -465,6 +465,10 @@ TEAM_INFO_TEAM = §7Team §e{0} §8[§{1}{2}§8] TEAM_INFO_LEADER = §7Leader ({0})§8: {1} TEAM_INFO_MEMBER = §7Member ({0})§8: {1} TEAM_INFO_EVENTS = §7Events ({0})§8: §e{1} +#Server Team +TEAM_INFO_SW_USAGE = §8/§7team info §8[§eSW§8|§eSteamWar§8] +TEAM_INFO_SW_HEADER = §eSteam§8War Serverteam +TEAM_INFO_SW_RANK = {0} §7({1})§8: {2} #Team List TEAM_LIST_NOT_PAGE = §cKeine Seitenzahl angegeben diff --git a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java index c549eec3..face1b22 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java +++ b/VelocityCore/src/de/steamwar/velocitycore/commands/TeamCommand.java @@ -27,10 +27,7 @@ import de.steamwar.linkage.Linked; import de.steamwar.messages.Chatter; import de.steamwar.messages.Message; import de.steamwar.messages.PlayerChatter; -import de.steamwar.sql.Event; -import de.steamwar.sql.SteamwarUser; -import de.steamwar.sql.Team; -import de.steamwar.sql.TeamTeilnahme; +import de.steamwar.sql.*; import de.steamwar.velocitycore.VelocityCore; import de.steamwar.velocitycore.discord.DiscordBot; import de.steamwar.velocitycore.inventory.SWItem; @@ -324,26 +321,47 @@ public class TeamCommand extends SWCommand { } } - private String getMemberList(List users, boolean leaders) { - return users.stream() - .filter(user -> user.isLeader() == leaders) - .map(user -> { - StringBuilder st = new StringBuilder(); - if (VelocityCore.getProxy().getPlayer(user.getUUID()).isPresent()) { - if (!StreamingCommand.isNotStreaming(user)) { - st.append("§5"); - } else { - st.append("§a"); - } - } else { - st.append("§e"); + @Register(value = "info", description = "TEAM_INFO_SW_USAGE") + public void infoServerTeam(Chatter sender, @Mapper(value = "SW_TEAM", local = true) String teamName) { + sender.system("TEAM_INFO_SW_HEADER"); + + UserPerm.prefixes.keySet().stream() + .filter(rank -> rank != UserPerm.PREFIX_NONE && rank != UserPerm.PREFIX_YOUTUBER && rank != UserPerm.PREFIX_GUIDE) + .sorted(Comparator.reverseOrder()) + .forEach(rank -> { + List users = SteamwarUser.getUsersWithPerm(rank); + if (!users.isEmpty()) { + UserPerm.Prefix prefix = UserPerm.prefixes.get(rank); + String memberList = getMemberList(users); + sender.prefixless("TEAM_INFO_SW_RANK", + prefix.getColorCode() + prefix.getChatPrefix(), + users.size(), memberList); } - st.append(user.getUserName()); - return st.toString(); - }) + }); + } + + private static boolean isSWTeamName(String value) { + return value != null && (value.equalsIgnoreCase("sw") || value.equalsIgnoreCase("steamwar")); + } + + private String getMemberList(List users, boolean leaders) { + return getMemberList(users.stream().filter(u -> u.isLeader() == leaders).toList()); + } + + private String getMemberList(List users) { + return users.stream() + .map(user -> getUserColor(user) + user.getUserName()) .collect(Collectors.joining("§8,§r ")); } + private String getUserColor(SteamwarUser user) { + if (VelocityCore.getProxy().getPlayer(user.getUUID()).isPresent()) { + return StreamingCommand.isNotStreaming(user) ? /*Not Streaming*/ "§a" : /*Streaming*/ "§5"; + } + // Offline + return "§e"; + } + @Register("list") public void list(Chatter sender, @Min(intValue = 1) @OptionalValue("1") @ErrorMessage("TEAM_LIST_NOT_PAGE") int page) { final int TEAMS_PER_PAGE = 10; @@ -526,12 +544,30 @@ public class TeamCommand extends SWCommand { }; } + @Mapper(value = "SW_TEAM", local = true) + public TypeMapper swTeam() { + return new TypeMapper() { + @Override + public String map(Chatter sender, PreviousArguments previousArguments, String s) { + return isSWTeamName(s) ? s : null; + } + + @Override + public Collection tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) { + return List.of("SW", "SteamWar"); + } + }; + } + @ClassMapper(Team.class) @Cached(global = true, cacheDuration = 60) public TypeMapper team() { return new TypeMapper() { @Override public Team map(Chatter sender, PreviousArguments previousArguments, String s) { + if (isSWTeamName(s)) { + return null; + } return Team.get(s); }