Archiviert
1
0

Merge pull request 'Remove player tabcomplete in every command' (#486) from BetterTabCompleting into master

Reviewed-on: SteamWar/BungeeCore#486
Reviewed-by: Lixfel <lixfel@steamwar.de>
Dieser Commit ist enthalten in:
Lixfel 2023-09-24 08:11:52 +02:00
Commit e981cf5c02
10 geänderte Dateien mit 196 neuen und 203 gelöschten Zeilen

Datei anzeigen

@ -26,6 +26,7 @@ import de.steamwar.bungeecore.network.NetworkSender;
import de.steamwar.bungeecore.util.BauLock; import de.steamwar.bungeecore.util.BauLock;
import de.steamwar.bungeecore.util.BauLockState; import de.steamwar.bungeecore.util.BauLockState;
import de.steamwar.bungeecore.util.Chat19; import de.steamwar.bungeecore.util.Chat19;
import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator; import de.steamwar.command.TypeValidator;
@ -38,8 +39,10 @@ import net.md_5.bungee.api.config.ServerInfo;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.Collection; import java.util.Collection;
import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import java.util.stream.Collectors;
public class BauCommand extends SWCommand { public class BauCommand extends SWCommand {
@ -170,7 +173,7 @@ public class BauCommand extends SWCommand {
} }
@Register("togglewe") @Register("togglewe")
public void togglewe(ProxiedPlayer p, @AllowNull @OptionalValue("") SteamwarUser user) { public void togglewe(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
if (user == null) { if (user == null) {
Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "togglewe"); Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "togglewe");
return; return;
@ -185,7 +188,7 @@ public class BauCommand extends SWCommand {
} }
@Register("toggleworld") @Register("toggleworld")
public void toggleworld(ProxiedPlayer p, @AllowNull @OptionalValue("") SteamwarUser user) { public void toggleworld(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
if (user == null) { if (user == null) {
Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "toggleworld"); Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "toggleworld");
return; return;
@ -200,7 +203,7 @@ public class BauCommand extends SWCommand {
} }
@Register("toggleall") @Register("toggleall")
public void toggleall(ProxiedPlayer p, @AllowNull @OptionalValue("") SteamwarUser user) { public void toggleall(ProxiedPlayer p, @Mapper("addedUsers") @AllowNull @OptionalValue("") SteamwarUser user) {
if (user == null) { if (user == null) {
Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "toggleall"); Message.send("BAU_MEMBER_TOGGLE_USAGE", p, "toggleall");
return; return;
@ -228,7 +231,7 @@ public class BauCommand extends SWCommand {
} }
@Register(value = "delmember", description = "BAU_DELMEMBER_USAGE") @Register(value = "delmember", description = "BAU_DELMEMBER_USAGE")
public void delmember(ProxiedPlayer p, SteamwarUser user) { public void delmember(ProxiedPlayer p, @Mapper("addedUsers") SteamwarUser user) {
BauweltMember target = member(p, user); BauweltMember target = member(p, user);
if (target == null) if (target == null)
return; return;
@ -250,6 +253,25 @@ public class BauCommand extends SWCommand {
Message.send("BAU_DELMEMBER_DELETED", p); Message.send("BAU_DELMEMBER_DELETED", p);
} }
@Mapper(value = "addedUsers", local = true)
public TypeMapper<SteamwarUser> addedUsers() {
return new TypeMapper<SteamwarUser>() {
@Override
public SteamwarUser map(CommandSender commandSender, String[] previousArguments, String s) {
return SteamwarUser.get(s);
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
if (!(sender instanceof ProxiedPlayer)) return Collections.emptyList();
return BauweltMember.getMembers(((ProxiedPlayer) sender).getUniqueId()).stream()
.map(bauweltMember -> SteamwarUser.get(bauweltMember.getMemberID()))
.map(steamwarUser -> steamwarUser.getUserName())
.collect(Collectors.toList());
}
};
}
@Register("resetall") @Register("resetall")
@Register("delete") @Register("delete")
public void delete(ProxiedPlayer p, @Mapper("version") @OptionalValue(value = "", onlyUINIG = true) ServerStarter.Version version) { public void delete(ProxiedPlayer p, @Mapper("version") @OptionalValue(value = "", onlyUINIG = true) ServerStarter.Version version) {

Datei anzeigen

@ -20,16 +20,11 @@
package de.steamwar.bungeecore.commands; package de.steamwar.bungeecore.commands;
import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Message;
import de.steamwar.command.SWCommand;
import de.steamwar.sql.IgnoreSystem; import de.steamwar.sql.IgnoreSystem;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.stream.Collectors;
public class IgnoreCommand extends SWCommand { public class IgnoreCommand extends SWCommand {
public IgnoreCommand() { public IgnoreCommand() {
@ -37,14 +32,9 @@ public class IgnoreCommand extends SWCommand {
} }
@Register(description = "USAGE_IGNORE") @Register(description = "USAGE_IGNORE")
public void genericCommand(ProxiedPlayer p, @Mapper("player") String toIgnore) { public void genericCommand(ProxiedPlayer p, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
SteamwarUser user = SteamwarUser.get(p.getUniqueId()); SteamwarUser user = SteamwarUser.get(p.getUniqueId());
SteamwarUser target = SteamwarUser.get(toIgnore);
if(target == null){
Message.send("UNKNOWN_PLAYER", p);
return;
}
if(target.equals(user)){ if(target.equals(user)){
Message.send("IGNORE_YOURSELF", p); Message.send("IGNORE_YOURSELF", p);
return; return;
@ -57,9 +47,4 @@ public class IgnoreCommand extends SWCommand {
IgnoreSystem.ignore(user, target); IgnoreSystem.ignore(user, target);
Message.send("IGNORE_MESSAGE", p, target.getUserName()); Message.send("IGNORE_MESSAGE", p, target.getUserName());
} }
@Mapper(value = "player", local = true)
public TypeMapper<String> playerTypeMapper() {
return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList()));
}
} }

Datei anzeigen

@ -23,15 +23,9 @@ import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Message;
import de.steamwar.bungeecore.listeners.ConnectionListener; import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommand;
import de.steamwar.command.SWCommandUtils;
import de.steamwar.command.TypeMapper;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer;
import net.md_5.bungee.api.connection.ProxiedPlayer; import net.md_5.bungee.api.connection.ProxiedPlayer;
import java.util.stream.Collectors;
public class KickCommand extends SWCommand { public class KickCommand extends SWCommand {
public KickCommand() { public KickCommand() {
@ -39,13 +33,7 @@ public class KickCommand extends SWCommand {
} }
@Register(description = "KICK_USAGE") @Register(description = "KICK_USAGE")
public void genericCommand(CommandSender sender, @Mapper("player") String player, String... message) { public void genericCommand(CommandSender sender, @ErrorMessage("KICK_OFFLINE") ProxiedPlayer target, String... message) {
ProxiedPlayer target = ProxyServer.getInstance().getPlayer(player);
if(target == null){
Message.send("KICK_OFFLINE", sender);
return;
}
if (message.length == 0) { if (message.length == 0) {
target.disconnect(Message.parseToComponent("KICK_NORMAL", true, target)); target.disconnect(Message.parseToComponent("KICK_NORMAL", true, target));
} else { } else {
@ -53,9 +41,4 @@ public class KickCommand extends SWCommand {
} }
Message.send("KICK_CONFIRM", sender, target.getName()); Message.send("KICK_CONFIRM", sender, target.getName());
} }
@Mapper(value = "player", local = true)
public TypeMapper<String> playerTypeMapper() {
return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList()));
}
} }

Datei anzeigen

@ -23,12 +23,15 @@ import com.google.gson.JsonParser;
import de.steamwar.bungeecore.BungeeCore; import de.steamwar.bungeecore.BungeeCore;
import de.steamwar.bungeecore.Message; import de.steamwar.bungeecore.Message;
import de.steamwar.bungeecore.listeners.ConnectionListener; import de.steamwar.bungeecore.listeners.ConnectionListener;
import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper;
import de.steamwar.messages.ChatSender; import de.steamwar.messages.ChatSender;
import de.steamwar.sql.BannedUserIPs; import de.steamwar.sql.BannedUserIPs;
import de.steamwar.sql.Punishment; import de.steamwar.sql.Punishment;
import de.steamwar.sql.SteamwarUser; import de.steamwar.sql.SteamwarUser;
import de.steamwar.sql.UserPerm; import de.steamwar.sql.UserPerm;
import net.md_5.bungee.BungeeCord;
import net.md_5.bungee.api.ChatMessageType; import net.md_5.bungee.api.ChatMessageType;
import net.md_5.bungee.api.CommandSender; import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.ProxyServer; import net.md_5.bungee.api.ProxyServer;
@ -42,12 +45,10 @@ import java.text.SimpleDateFormat;
import java.time.Duration; import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.Date; import java.util.*;
import java.util.NoSuchElementException;
import java.util.Scanner;
import java.util.UUID;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class PunishmentCommand { public class PunishmentCommand {
@ -119,7 +120,7 @@ public class PunishmentCommand {
new SWCommand(command, ConnectionListener.BAN_PERMISSION) { new SWCommand(command, ConnectionListener.BAN_PERMISSION) {
@Register @Register
public void genericCommand(ProxiedPlayer player, String toPunish, String date, @ErrorMessage(allowEAs = false, value = "PUNISHMENT_USAGE_REASON") String... message) { public void genericCommand(ProxiedPlayer player, @Mapper("toPunish") String toPunish, String date, @ErrorMessage(allowEAs = false, value = "PUNISHMENT_USAGE_REASON") String... message) {
SteamwarUser punisher = SteamwarUser.get(player.getUniqueId()); SteamwarUser punisher = SteamwarUser.get(player.getUniqueId());
if (punishmentType.isNeedsAdmin() && !punisher.hasPerm(UserPerm.MODERATION)) { if (punishmentType.isNeedsAdmin() && !punisher.hasPerm(UserPerm.MODERATION)) {
return; return;
@ -146,22 +147,36 @@ public class PunishmentCommand {
public void genericError(ProxiedPlayer player, String... args) { public void genericError(ProxiedPlayer player, String... args) {
ChatSender.of(player).send(true, ChatMessageType.CHAT, null, null, new Message("PUNISHMENT_USAGE", command)); ChatSender.of(player).send(true, ChatMessageType.CHAT, null, null, new Message("PUNISHMENT_USAGE", command));
} }
@Mapper(value = "toPunish", local = true)
public TypeMapper<String> allUsers() {
return new TypeMapper<String>() {
@Override
public String map(CommandSender commandSender, String[] previousArguments, String s) {
return s;
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
List<String> players = BungeeCord.getInstance().getPlayers().stream()
.map(CommandSender::getName)
.collect(Collectors.toList());
players.add(s);
return players;
}
};
}
}; };
if (punishmentType.getUnpunishmentMessage() == null) {
return; if (punishmentType.getUnpunishmentMessage() == null) return;
}
String antiCommand = "un" + command; String antiCommand = "un" + command;
new SWCommand(antiCommand, ConnectionListener.BAN_PERMISSION) { new SWCommand(antiCommand, ConnectionListener.BAN_PERMISSION) {
@Register @Register
public void genericCommand(ProxiedPlayer player, String toUnpunish) { public void genericCommand(ProxiedPlayer player, @ErrorMessage("UNKNOWN_PLAYER") SteamwarUser target) {
if (punishmentType.isNeedsAdmin() && !SteamwarUser.get(player.getUniqueId()).hasPerm(UserPerm.MODERATION)) { if (punishmentType.isNeedsAdmin() && !SteamwarUser.get(player.getUniqueId()).hasPerm(UserPerm.MODERATION)) {
return; return;
} }
SteamwarUser target = existingUser(player, toUnpunish);
if (target == null)
return;
if (!target.isPunished(punishmentType)) { if (!target.isPunished(punishmentType)) {
Message.send(punishmentType.getUsageNotPunished(), player); Message.send(punishmentType.getUsageNotPunished(), player);
return; return;
@ -180,13 +195,6 @@ public class PunishmentCommand {
}; };
} }
protected SteamwarUser existingUser(CommandSender sender, String arg){
SteamwarUser target = SteamwarUser.get(arg);
if(target == null)
Message.send("UNKNOWN_PLAYER", sender);
return target;
}
protected SteamwarUser unsafeUser(CommandSender sender, String arg){ protected SteamwarUser unsafeUser(CommandSender sender, String arg){
SteamwarUser target = getOrCreateOfflinePlayer(arg); SteamwarUser target = getOrCreateOfflinePlayer(arg);
if(target == null) if(target == null)

Datei anzeigen

@ -40,17 +40,12 @@ public class RankCommand extends SWCommand {
@Register @Register
public void ownRank(ProxiedPlayer player) { public void ownRank(ProxiedPlayer player) {
rank(player, player.getName()); rank(player, SteamwarUser.get(player.getUniqueId()));
} }
@Register @Register
public void rank(ProxiedPlayer player, @Mapper("player") String s) { public void rank(ProxiedPlayer player, @ErrorMessage("RANK_PLAYER_NOT_FOUND") SteamwarUser user) {
SteamwarUser user = SteamwarUser.get(s); if (!player.getName().equals(user.getUserName())) {
if (user == null) {
Message.send("RANK_PLAYER_NOT_FOUND", player);
return;
}
if (!player.getName().equals(s)) {
Message.sendPrefixless("RANK_PLAYER_FOUND", player, user.getUserName()); Message.sendPrefixless("RANK_PLAYER_FOUND", player, user.getUserName());
} }
@ -71,9 +66,4 @@ public class RankCommand extends SWCommand {
Message.sendPrefixless("RANK_EMBLEM", player, UserElo.getEmblemProgression(mode.getChatName(), user.getId())); Message.sendPrefixless("RANK_EMBLEM", player, UserElo.getEmblemProgression(mode.getChatName(), user.getId()));
} }
} }
@Mapper(value = "player", local = true)
public TypeMapper<String> playerTypeMapper() {
return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList()));
}
} }

Datei anzeigen

@ -26,6 +26,7 @@ import de.steamwar.bungeecore.inventory.SWListInv;
import de.steamwar.command.PreviousArguments; import de.steamwar.command.PreviousArguments;
import de.steamwar.command.SWCommand; import de.steamwar.command.SWCommand;
import de.steamwar.command.TypeMapper; import de.steamwar.command.TypeMapper;
import de.steamwar.command.TypeValidator;
import de.steamwar.messages.ChatSender; import de.steamwar.messages.ChatSender;
import de.steamwar.sql.*; import de.steamwar.sql.*;
import net.md_5.bungee.BungeeCord; import net.md_5.bungee.BungeeCord;
@ -46,6 +47,7 @@ import java.time.Instant;
import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatter;
import java.util.*; import java.util.*;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import java.util.stream.Stream;
import static de.steamwar.bungeecore.Storage.teamInvitations; import static de.steamwar.bungeecore.Storage.teamInvitations;
@ -113,11 +115,9 @@ public class TeamCommand extends SWCommand {
} }
@Register(value = "create", description = "TEAM_CREATE_USAGE") @Register(value = "create", description = "TEAM_CREATE_USAGE")
public void create(ProxiedPlayer player, @Length(min = 2, max = 4) @ErrorMessage("TEAM_KUERZEL_LENGTH") String kuerzel, @Length(min = 4, max = 15) @ErrorMessage("TEAM_NAME_LENGTH") String name){ public void create(@Validator("isNotInTeam") ProxiedPlayer player, @Length(min = 2, max = 4) @ErrorMessage("TEAM_KUERZEL_LENGTH") String kuerzel, @Length(min = 4, max = 15) @ErrorMessage("TEAM_NAME_LENGTH") String name){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(unwantedInTeam(player, user))
return;
if(checkTeamKuerzel(player, team, kuerzel)) if(checkTeamKuerzel(player, team, kuerzel))
return; return;
@ -132,10 +132,8 @@ public class TeamCommand extends SWCommand {
} }
@Register("join") @Register("join")
public void join(ProxiedPlayer player, String... args){ public void join(@Validator("isNotInTeam") ProxiedPlayer player, String... args){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
if(unwantedInTeam(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
@ -182,11 +180,9 @@ public class TeamCommand extends SWCommand {
} }
@Register("stepback") @Register("stepback")
public void stepBack(ProxiedPlayer player) { public void stepBack(@Validator("isLeader") ProxiedPlayer player) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if(noRemainingLeaders(team, user)){ if(noRemainingLeaders(team, user)){
Message.send("TEAM_OTHER_LEADER_REQUIRED", player); Message.send("TEAM_OTHER_LEADER_REQUIRED", player);
@ -198,11 +194,9 @@ public class TeamCommand extends SWCommand {
} }
@Register("leave") @Register("leave")
public void leave(ProxiedPlayer player){ public void leave(@Validator("isInTeam") ProxiedPlayer player){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notInTeam(player, user))
return;
int teamSize = team.size(); int teamSize = team.size();
if(teamSize > 1 && user.isLeader() && noRemainingLeaders(team, user)) { if(teamSize > 1 && user.isLeader() && noRemainingLeaders(team, user)) {
@ -225,16 +219,13 @@ public class TeamCommand extends SWCommand {
@Register(value = "invite", description = "TEAM_INVITE_USAGE") @Register(value = "invite", description = "TEAM_INVITE_USAGE")
public void invite(ProxiedPlayer player, String toInvite){ public void invite(@Validator("isLeader") ProxiedPlayer player, @AllowNull SteamwarUser target){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
SteamwarUser target = SteamwarUser.get(toInvite);
if(target == null){ if(target == null){
Message.send("TEAM_INVITE_NO_PLAYER", player); Message.send("TEAM_INVITE_NO_PLAYER", player);
return; return;
@ -253,20 +244,17 @@ public class TeamCommand extends SWCommand {
teamInvitations.get(target.getId()).add(team.getTeamId()); teamInvitations.get(target.getId()).add(team.getTeamId());
Message.send("TEAM_INVITE_INVITED", player, toInvite); Message.send("TEAM_INVITE_INVITED", player, target.getUserName());
ProxiedPlayer p = ProxyServer.getInstance().getPlayer(target.getUUID()); ProxiedPlayer p = ProxyServer.getInstance().getPlayer(target.getUUID());
if(p != null) if(p != null)
Message.send("TEAM_INVITE_INVITED_TARGET", p, team.getTeamColor(), team.getTeamName()); Message.send("TEAM_INVITE_INVITED_TARGET", p, team.getTeamColor(), team.getTeamName());
} }
@Register(value = "remove", description = "TEAM_REMOVE_USAGE") @Register(value = "remove", description = "TEAM_REMOVE_USAGE")
public void remove(ProxiedPlayer player, String toRemove){ public void remove(@Validator("isLeader") ProxiedPlayer player, @AllowNull @Mapper("memberList") SteamwarUser target){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
SteamwarUser target = SteamwarUser.get(toRemove);
if(target == null){ if(target == null){
Message.send("TEAM_REMOVE_NOT_PLAYER", player); Message.send("TEAM_REMOVE_NOT_PLAYER", player);
return; return;
@ -301,12 +289,31 @@ public class TeamCommand extends SWCommand {
Message.send("TEAM_REMOVE_REMOVED_TARGET", player); Message.send("TEAM_REMOVE_REMOVED_TARGET", player);
} }
@Mapper(value = "memberList", local = true)
public TypeMapper<SteamwarUser> memberList() {
return new TypeMapper<SteamwarUser>() {
@Override
public SteamwarUser map(CommandSender commandSender, String[] previousArguments, String s) {
return SteamwarUser.get(s);
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
if (!(sender instanceof ProxiedPlayer)) return Collections.emptyList();
ProxiedPlayer player = (ProxiedPlayer) sender;
Team team = Team.get(SteamwarUser.get(player.getUniqueId()).getTeam());
return team.getMembers().stream()
.map(SteamwarUser::get)
.map(SteamwarUser::getUserName)
.collect(Collectors.toList());
}
};
}
@Register(value = "changekurzel", description = "TEAM_KUERZEL_USAGE") @Register(value = "changekurzel", description = "TEAM_KUERZEL_USAGE")
public void changekuerzel(ProxiedPlayer player, @Length(min = 2, max = 4) @ErrorMessage("TEAM_KUERZEL_LENGTH") String kuerzel){ public void changekuerzel(@Validator("isLeader") ProxiedPlayer player, @Length(min = 2, max = 4) @ErrorMessage("TEAM_KUERZEL_LENGTH") String kuerzel){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
@ -319,11 +326,9 @@ public class TeamCommand extends SWCommand {
} }
@Register(value = "changename", description = "TEAM_NAME_USAGE") @Register(value = "changename", description = "TEAM_NAME_USAGE")
public void changename(ProxiedPlayer player, @Length(min = 4, max = 15) @ErrorMessage("TEAM_NAME_LENGTH") String name){ public void changename(@Validator("isLeader") ProxiedPlayer player, @Length(min = 4, max = 15) @ErrorMessage("TEAM_NAME_LENGTH") String name){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
@ -336,17 +341,14 @@ public class TeamCommand extends SWCommand {
} }
@Register(value = "promote", description = "TEAM_LEADER_USAGE") @Register(value = "promote", description = "TEAM_LEADER_USAGE")
public void promote(ProxiedPlayer player, String toPromote){ public void promote(@Validator("isLeader") ProxiedPlayer player, @AllowNull @Mapper("memberList") SteamwarUser target){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
SteamwarUser target = SteamwarUser.get(toPromote);
if(target == null){ if(target == null){
Message.send("TEAM_LEADER_NOT_USER", player, toPromote); Message.send("TEAM_LEADER_NOT_USER", player);
return; return;
} }
@ -356,7 +358,7 @@ public class TeamCommand extends SWCommand {
} }
target.setLeader(true); target.setLeader(true);
Message.send("TEAM_LEADER_PROMOTED", player, toPromote); Message.send("TEAM_LEADER_PROMOTED", player, target.getUserName());
} }
private String playerName(SteamwarUser user){ private String playerName(SteamwarUser user){
@ -364,21 +366,15 @@ public class TeamCommand extends SWCommand {
} }
@Register("info") @Register("info")
public void info(ProxiedPlayer player, String... args){ public void info(@Validator("isInTeam") ProxiedPlayer player){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(args.length == 0 && user.getTeam() == 0){ info(player, team);
Message.send("TEAM_INFO_USAGE", player); }
return;
}else if(user.getTeam() == 0 || args.length == 1){
team = Team.get(args[0]);
}
if(team == null){
Message.send("UNKNOWN_TEAM", player);
return;
}
@Register(value = "info", description = "TEAM_INFO_USAGE")
public void info(ProxiedPlayer player, @ErrorMessage("UNKNOWN_TEAM") Team team){
SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Message.sendPrefixless("TEAM_INFO_TEAM", player, team.getTeamName(), team.getTeamColor(), team.getTeamKuerzel()); Message.sendPrefixless("TEAM_INFO_TEAM", player, team.getTeamName(), team.getTeamColor(), team.getTeamKuerzel());
List<SteamwarUser> users = team.getMembers().stream().map(SteamwarUser::get).collect(Collectors.toList()); List<SteamwarUser> users = team.getMembers().stream().map(SteamwarUser::get).collect(Collectors.toList());
@ -448,11 +444,9 @@ public class TeamCommand extends SWCommand {
} }
@Register("event") @Register("event")
public void event(ProxiedPlayer player) { public void event(@Validator("isInTeam") ProxiedPlayer player) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notInTeam(player, user))
return;
Message.send("TEAM_EVENT_USAGE", player); Message.send("TEAM_EVENT_USAGE", player);
Set<Event> events = TeamTeilnahme.getEvents(team.getTeamId()); Set<Event> events = TeamTeilnahme.getEvents(team.getTeamId());
@ -465,14 +459,9 @@ public class TeamCommand extends SWCommand {
} }
@Register("event") @Register("event")
public void event(ProxiedPlayer player, Event event){ public void event(@Validator("isLeader") ProxiedPlayer player, Event event){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notInTeam(player, user))
return;
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
@ -493,25 +482,15 @@ public class TeamCommand extends SWCommand {
} }
@Register("tp") @Register("tp")
public void tp(ProxiedPlayer player, String... args){ public void tp(@Validator("isInTeam") ProxiedPlayer player) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(args.length == 0){ tp(player, team);
if(notInTeam(player, user))
return;
tp(player, team);
return;
}
Team targetTeam = Team.get(args[0]);
if(targetTeam == null){
Message.send("TEAM_TP_NO_TEAM", player);
return;
}
tp(player, targetTeam);
} }
private void tp(ProxiedPlayer player, Team targetTeam) { @Register("tp")
if (targetTeam.getAddress() == null) { public void tp(ProxiedPlayer player, @ErrorMessage("TEAM_TP_NO_TEAM") @Mapper("teamWithTeamServer") Team targetTeam) {
if (targetTeam.getAddress() == null || targetTeam.getAddress().isEmpty()) {
Message.send("TEAM_NO_ADDRESS", player); Message.send("TEAM_NO_ADDRESS", player);
return; return;
} }
@ -551,11 +530,9 @@ public class TeamCommand extends SWCommand {
} }
@Register(value = "server", description = "TEAM_SERVER_USAGE") @Register(value = "server", description = "TEAM_SERVER_USAGE")
public void server(ProxiedPlayer player, String server, @Min(intValue = 1) @Max(intValue = 65535) @ErrorMessage("TEAM_SERVER_PORT_INVALID") int port){ public void server(@Validator("isLeader") ProxiedPlayer player, String server, @Min(intValue = 1) @Max(intValue = 65535) @ErrorMessage("TEAM_SERVER_PORT_INVALID") int port){
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if (PunishmentCommand.isPunishedWithMessage(ChatSender.of(player), Punishment.PunishmentType.NoTeamServer)) { if (PunishmentCommand.isPunishedWithMessage(ChatSender.of(player), Punishment.PunishmentType.NoTeamServer)) {
return; return;
} }
@ -590,11 +567,9 @@ public class TeamCommand extends SWCommand {
} }
@Register("color") @Register("color")
public void changeColor(ProxiedPlayer player) { public void changeColor(@Validator("isLeader") ProxiedPlayer player) {
SteamwarUser user = SteamwarUser.get(player.getUniqueId()); SteamwarUser user = SteamwarUser.get(player.getUniqueId());
Team team = Team.get(user.getTeam()); Team team = Team.get(user.getTeam());
if(notLeader(player, user))
return;
if(notDuringEvent(player)) if(notDuringEvent(player))
return; return;
@ -639,6 +614,89 @@ public class TeamCommand extends SWCommand {
}; };
} }
@Validator(value = "isNotInTeam", local = true)
public TypeValidator<ProxiedPlayer> isNotInTeamValidator() {
return (sender, value, messageSender) -> {
if (!(sender instanceof ProxiedPlayer)) return false;
ProxiedPlayer player = (ProxiedPlayer) sender;
SteamwarUser steamwarUser = SteamwarUser.get(player.getUniqueId());
if (steamwarUser.getTeam() != 0) {
messageSender.send("TEAM_IN_TEAM");
return false;
}
return true;
};
}
@Validator(value = "isInTeam", local = true)
public TypeValidator<ProxiedPlayer> isInTeamValidator() {
return (sender, value, messageSender) -> {
if (!(sender instanceof ProxiedPlayer)) return false;
ProxiedPlayer player = (ProxiedPlayer) sender;
SteamwarUser steamwarUser = SteamwarUser.get(player.getUniqueId());
if (steamwarUser.getTeam() == 0) {
messageSender.send("TEAM_NOT_IN_TEAM");
return false;
}
return true;
};
}
@Validator(value = "isLeader", local = true)
public TypeValidator<ProxiedPlayer> isLeaderValidator() {
return (sender, value, messageSender) -> {
if (!(sender instanceof ProxiedPlayer)) return false;
ProxiedPlayer player = (ProxiedPlayer) sender;
SteamwarUser steamwarUser = SteamwarUser.get(player.getUniqueId());
if (steamwarUser.getTeam() == 0) {
messageSender.send("TEAM_NOT_IN_TEAM");
return false;
}
if (!steamwarUser.isLeader()) {
messageSender.send("TEAM_NOT_LEADER");
return false;
}
return true;
};
}
@ClassMapper(Team.class)
@Cached(global = true, cacheDuration = 60)
public TypeMapper<Team> team() {
return new TypeMapper<Team>() {
@Override
public Team map(CommandSender commandSender, String[] previousArguments, String s) {
return Team.get(s);
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
return Team.getAll().stream()
.flatMap(team -> Stream.of(team.getTeamName(), team.getTeamKuerzel()))
.collect(Collectors.toList());
}
};
}
@Mapper(value = "teamWithTeamServer", local = true)
@Cached(global = true, cacheDuration = 60)
public TypeMapper<Team> teamWithTeamServer() {
return new TypeMapper<Team>() {
@Override
public Team map(CommandSender commandSender, String[] previousArguments, String s) {
return Team.get(s);
}
@Override
public Collection<String> tabCompletes(CommandSender sender, PreviousArguments previousArguments, String s) {
return Team.getAll().stream()
.filter(team -> team.getAddress() != null && !team.getAddress().isEmpty())
.flatMap(team -> Stream.of(team.getTeamName(), team.getTeamKuerzel()))
.collect(Collectors.toList());
}
};
}
private boolean checkTeamName(ProxiedPlayer player, Team team, String arg){ private boolean checkTeamName(ProxiedPlayer player, Team team, String arg){
Team t = Team.get(arg); Team t = Team.get(arg);
if(t != null && t.getTeamId() != team.getTeamId()){ if(t != null && t.getTeamId() != team.getTeamId()){
@ -657,32 +715,6 @@ public class TeamCommand extends SWCommand {
return false; return false;
} }
private boolean unwantedInTeam(ProxiedPlayer player, SteamwarUser user){
if(user.getTeam() != 0){
Message.send("TEAM_IN_TEAM", player);
return true;
}
return false;
}
private boolean notInTeam(ProxiedPlayer player, SteamwarUser user){
if(user.getTeam() == 0){
Message.send("TEAM_NOT_IN_TEAM", player);
return true;
}
return false;
}
private boolean notLeader(ProxiedPlayer player, SteamwarUser user){
if(notInTeam(player, user))
return true;
if(!user.isLeader()){
Message.send("TEAM_NOT_LEADER", player);
return true;
}
return false;
}
private boolean notDuringEvent(ProxiedPlayer player){ private boolean notDuringEvent(ProxiedPlayer player){
if(Event.get() != null){ if(Event.get() != null){
Message.send("TEAM_NOT_IN_EVENT", player); Message.send("TEAM_NOT_IN_EVENT", player);

Datei anzeigen

@ -91,7 +91,7 @@ public class TpCommand extends SWCommand {
}; };
} }
public static void teleport (ProxiedPlayer player, ServerInfo server) { public static void teleport(ProxiedPlayer player, ServerInfo server) {
ChatSender sender = ChatSender.of(player); ChatSender sender = ChatSender.of(player);
if(CheckCommand.isChecking(player)){ if(CheckCommand.isChecking(player)){
sender.system("CHECK_CHECKING"); sender.system("CHECK_CHECKING");

Datei anzeigen

@ -210,33 +210,6 @@ public class ChatListener extends BasicListener {
}).collect(Collectors.joining(" ")); }).collect(Collectors.joining(" "));
} }
@EventHandler
public void onTabCompleteEvent(TabCompleteEvent e){
List<String> suggestions = e.getSuggestions();
String [] cursor = e.getCursor().split(" ");
String last;
if(cursor.length != 0)
last = cursor[cursor.length - 1];
else
last = "";
for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
String name = player.getName();
if (last.isEmpty() || name.startsWith(last)) {
suggestions.add(name);
}
}
if(last.startsWith("@")) {
String plrName = last.replace("@", "");
for(ProxiedPlayer player : ProxyServer.getInstance().getPlayers()){
String name = player.getName();
if ((plrName.isEmpty() || name.startsWith(plrName)) && !plrName.equalsIgnoreCase(name)) {
suggestions.add("@" + name);
}
}
}
}
@EventHandler @EventHandler
public void onTabCompleteResponseEvent(TabCompleteResponseEvent e){ public void onTabCompleteResponseEvent(TabCompleteResponseEvent e){
List<String> suggestions = e.getSuggestions(); List<String> suggestions = e.getSuggestions();

Datei anzeigen

@ -460,7 +460,7 @@ TEAM_NAME_TAKEN=§cThere is already a team with that name.
#Team Leader #Team Leader
TEAM_LEADER_USAGE=§8/§7team promote §8[§emember§8] TEAM_LEADER_USAGE=§8/§7team promote §8[§emember§8]
TEAM_LEADER_NOT_USER=§cThe player {0} does not exist. TEAM_LEADER_NOT_USER=§cUnknown player.
TEAM_LEADER_NOT_MEMBER=§cThis player is not in your team. TEAM_LEADER_NOT_MEMBER=§cThis player is not in your team.
TEAM_LEADER_PROMOTED=§7You made §e{0} §7a leader! TEAM_LEADER_PROMOTED=§7You made §e{0} §7a leader!

Datei anzeigen

@ -438,7 +438,7 @@ TEAM_NAME_TAKEN=§cEs gibt bereits ein Team mit diesem Namen.
#Team Leader #Team Leader
TEAM_LEADER_USAGE=§8/§7team promote §8[§eMember§8] TEAM_LEADER_USAGE=§8/§7team promote §8[§eMember§8]
TEAM_LEADER_NOT_USER=§cDen Spieler {0} gibt es nicht. TEAM_LEADER_NOT_USER=§cUnbekannter Spieler.
TEAM_LEADER_NOT_MEMBER=§cDer Spieler ist nicht in deinem Team. TEAM_LEADER_NOT_MEMBER=§cDer Spieler ist nicht in deinem Team.
TEAM_LEADER_PROMOTED=§7Du hast den Spieler §e{0} §7zum Leader gemacht! TEAM_LEADER_PROMOTED=§7Du hast den Spieler §e{0} §7zum Leader gemacht!