forked from SteamWar/SteamWar
Compare commits
2 Commits
deb56c0c02
...
24d8ec7301
| Author | SHA1 | Date | |
|---|---|---|---|
| 24d8ec7301 | |||
| a5992a9e4e |
@@ -493,6 +493,17 @@ 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 Prefix
|
||||
TEAM_PREFIX_USAGE = §8/§7team prefix §8[§eteam§8|§eSW§8]
|
||||
TEAM_PREFIX_CURRENT_TEAM = §7Current chat prefix§8: §eTeam
|
||||
TEAM_PREFIX_CURRENT_SW = §7Current chat prefix§8: §eSteamWar
|
||||
TEAM_PREFIX_SET_TEAM = §7Your chat prefix is now your §eteam prefix§7.
|
||||
TEAM_PREFIX_SET_SW = §7Your chat prefix is now your §eSteamWar prefix§7.
|
||||
|
||||
#Team List
|
||||
TEAM_LIST_NOT_PAGE = §cNo page number entered
|
||||
|
||||
@@ -465,6 +465,17 @@ 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 Prefix
|
||||
TEAM_PREFIX_USAGE = §8/§7team prefix §8[§eteam§8|§eSW§8]
|
||||
TEAM_PREFIX_CURRENT_TEAM = §7Aktueller Chatprefix§8: §eTeam
|
||||
TEAM_PREFIX_CURRENT_SW = §7Aktueller Chatprefix§8: §eSteamWar
|
||||
TEAM_PREFIX_SET_TEAM = §7Dein Chatprefix ist jetzt dein §eTeamprefix§7.
|
||||
TEAM_PREFIX_SET_SW = §7Dein Chatprefix ist jetzt dein §eSteamWar-Prefix§7.
|
||||
|
||||
#Team List
|
||||
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.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;
|
||||
@@ -50,6 +47,8 @@ import static de.steamwar.persistent.Storage.teamInvitations;
|
||||
|
||||
@Linked
|
||||
public class TeamCommand extends SWCommand {
|
||||
private static final String PREFIX_MODE_CONFIG = "chatprefix";
|
||||
private static final String PREFIX_MODE_SW = "SW";
|
||||
|
||||
public TeamCommand() {
|
||||
super("team");
|
||||
@@ -324,26 +323,80 @@ public class TeamCommand extends SWCommand {
|
||||
}
|
||||
}
|
||||
|
||||
private String getMemberList(List<SteamwarUser> 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<SteamwarUser> 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<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 "));
|
||||
}
|
||||
|
||||
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(value = "prefix", description = "TEAM_PREFIX_USAGE")
|
||||
public void prefix(@Validator("canUseTeamPrefix") Chatter sender){
|
||||
boolean swPrefix = PREFIX_MODE_SW.equals(UserConfig.getConfig(sender.user().getId(), PREFIX_MODE_CONFIG));
|
||||
sender.system(swPrefix ? "TEAM_PREFIX_CURRENT_SW" : "TEAM_PREFIX_CURRENT_TEAM");
|
||||
}
|
||||
|
||||
@Register(value = "prefix", description = "TEAM_PREFIX_USAGE")
|
||||
public void prefix(@Validator("canUseTeamPrefix") Chatter sender, PrefixMode mode) {
|
||||
if (mode == PrefixMode.SW) {
|
||||
UserConfig.updatePlayerConfig(sender.user().getId(), PREFIX_MODE_CONFIG, PREFIX_MODE_SW);
|
||||
sender.system("TEAM_PREFIX_SET_SW");
|
||||
} else {
|
||||
UserConfig.updatePlayerConfig(sender.user().getId(), PREFIX_MODE_CONFIG, null);
|
||||
sender.system("TEAM_PREFIX_SET_TEAM");
|
||||
}
|
||||
}
|
||||
|
||||
@Validator("canUseTeamPrefix")
|
||||
public TypeValidator<Chatter> canUseTeamPrefixValidator() {
|
||||
return (sender, value, messageSender) -> {
|
||||
SteamwarUser user = value.user();
|
||||
|
||||
return user.hasPerm(UserPerm.TEAM)
|
||||
&& user.getTeam() != 0
|
||||
&& user.prefix() != UserPerm.emptyPrefix;
|
||||
};
|
||||
}
|
||||
|
||||
private enum PrefixMode {
|
||||
TEAM,
|
||||
SW
|
||||
}
|
||||
|
||||
@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 +579,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)
|
||||
@Cached(global = true, cacheDuration = 60)
|
||||
public TypeMapper<Team> team() {
|
||||
return new TypeMapper<Team>() {
|
||||
@Override
|
||||
public Team map(Chatter sender, PreviousArguments previousArguments, String s) {
|
||||
if (isSWTeamName(s)) {
|
||||
return null;
|
||||
}
|
||||
return Team.get(s);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user