add "/team info SW" command to display the serverteam

This commit is contained in:
Jakob Schulz
2026-05-20 17:44:52 +02:00
parent deb56c0c02
commit a5992a9e4e
3 changed files with 64 additions and 20 deletions
@@ -493,6 +493,10 @@ TEAM_INFO_TEAM = §7Team §e{0} §8[§{1}{2}§8]
TEAM_INFO_LEADER = §7Leader ({0})§8: {1} TEAM_INFO_LEADER = §7Leader ({0})§8: {1}
TEAM_INFO_MEMBER = §7Member ({0})§8: {1} TEAM_INFO_MEMBER = §7Member ({0})§8: {1}
TEAM_INFO_EVENTS = §7Events ({0})§8: §e{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
TEAM_LIST_NOT_PAGE = §cNo page number entered TEAM_LIST_NOT_PAGE = §cNo page number entered
@@ -465,6 +465,10 @@ TEAM_INFO_TEAM = §7Team §e{0} §8[§{1}{2}§8]
TEAM_INFO_LEADER = §7Leader ({0})§8: {1} TEAM_INFO_LEADER = §7Leader ({0})§8: {1}
TEAM_INFO_MEMBER = §7Member ({0})§8: {1} TEAM_INFO_MEMBER = §7Member ({0})§8: {1}
TEAM_INFO_EVENTS = §7Events ({0})§8: §e{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
TEAM_LIST_NOT_PAGE = §cKeine Seitenzahl angegeben TEAM_LIST_NOT_PAGE = §cKeine Seitenzahl angegeben
@@ -27,10 +27,7 @@ import de.steamwar.linkage.Linked;
import de.steamwar.messages.Chatter; import de.steamwar.messages.Chatter;
import de.steamwar.messages.Message; import de.steamwar.messages.Message;
import de.steamwar.messages.PlayerChatter; import de.steamwar.messages.PlayerChatter;
import de.steamwar.sql.Event; import de.steamwar.sql.*;
import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.Team;
import de.steamwar.sql.TeamTeilnahme;
import de.steamwar.velocitycore.VelocityCore; import de.steamwar.velocitycore.VelocityCore;
import de.steamwar.velocitycore.discord.DiscordBot; import de.steamwar.velocitycore.discord.DiscordBot;
import de.steamwar.velocitycore.inventory.SWItem; import de.steamwar.velocitycore.inventory.SWItem;
@@ -324,26 +321,47 @@ public class TeamCommand extends SWCommand {
} }
} }
private String getMemberList(List<SteamwarUser> users, boolean leaders) { @Register(value = "info", description = "TEAM_INFO_SW_USAGE")
return users.stream() public void infoServerTeam(Chatter sender, @Mapper(value = "SW_TEAM", local = true) String teamName) {
.filter(user -> user.isLeader() == leaders) sender.system("TEAM_INFO_SW_HEADER");
.map(user -> {
StringBuilder st = new StringBuilder(); UserPerm.prefixes.keySet().stream()
if (VelocityCore.getProxy().getPlayer(user.getUUID()).isPresent()) { .filter(rank -> rank != UserPerm.PREFIX_NONE && rank != UserPerm.PREFIX_YOUTUBER && rank != UserPerm.PREFIX_GUIDE)
if (!StreamingCommand.isNotStreaming(user)) { .sorted(Comparator.reverseOrder())
st.append("§5"); .forEach(rank -> {
} else { List<SteamwarUser> users = SteamwarUser.getUsersWithPerm(rank);
st.append("§a"); if (!users.isEmpty()) {
} UserPerm.Prefix prefix = UserPerm.prefixes.get(rank);
} else { String memberList = getMemberList(users);
st.append("§e"); 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<SteamwarUser> users, boolean leaders) {
return getMemberList(users.stream().filter(u -> u.isLeader() == leaders).toList());
}
private String getMemberList(List<SteamwarUser> users) {
return users.stream()
.map(user -> getUserColor(user) + user.getUserName())
.collect(Collectors.joining("§8,§r ")); .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") @Register("list")
public void list(Chatter sender, @Min(intValue = 1) @OptionalValue("1") @ErrorMessage("TEAM_LIST_NOT_PAGE") int page) { public void list(Chatter sender, @Min(intValue = 1) @OptionalValue("1") @ErrorMessage("TEAM_LIST_NOT_PAGE") int page) {
final int TEAMS_PER_PAGE = 10; final int TEAMS_PER_PAGE = 10;
@@ -526,12 +544,30 @@ public class TeamCommand extends SWCommand {
}; };
} }
@Mapper(value = "SW_TEAM", local = true)
public TypeMapper<String> swTeam() {
return new TypeMapper<String>() {
@Override
public String map(Chatter sender, PreviousArguments previousArguments, String s) {
return isSWTeamName(s) ? s : null;
}
@Override
public Collection<String> tabCompletes(Chatter sender, PreviousArguments previousArguments, String s) {
return List.of("SW", "SteamWar");
}
};
}
@ClassMapper(Team.class) @ClassMapper(Team.class)
@Cached(global = true, cacheDuration = 60) @Cached(global = true, cacheDuration = 60)
public TypeMapper<Team> team() { public TypeMapper<Team> team() {
return new TypeMapper<Team>() { return new TypeMapper<Team>() {
@Override @Override
public Team map(Chatter sender, PreviousArguments previousArguments, String s) { public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
if (isSWTeamName(s)) {
return null;
}
return Team.get(s); return Team.get(s);
} }