Whois Fabric Mod Info #444
@ -19,36 +19,40 @@
|
||||
|
||||
package de.steamwar.bungeecore.commands;
|
||||
|
||||
import com.google.common.reflect.TypeParameter;
|
||||
import de.steamwar.bungeecore.Message;
|
||||
import de.steamwar.bungeecore.Storage;
|
||||
import de.steamwar.bungeecore.sql.Mod;
|
||||
import de.steamwar.bungeecore.sql.Punishment;
|
||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||
import de.steamwar.bungeecore.sql.Team;
|
||||
import de.steamwar.bungeecore.sql.*;
|
||||
import de.steamwar.command.SWCommand;
|
||||
import de.steamwar.command.SWCommandUtils;
|
||||
import de.steamwar.command.TypeMapper;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import net.md_5.bungee.BungeeCord;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import net.md_5.bungee.command.ConsoleCommandSender;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.sql.Array;
|
||||
import java.sql.Timestamp;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.Instant;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.function.Supplier;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
|
||||
public class WhoisCommand extends SWCommand {
|
||||
public WhoisCommand() {
|
||||
super("whois", "bungeecore.teamchat");
|
||||
}
|
||||
|
||||
@Register(description = "WHOIS_USAGE")
|
||||
public void genericCommand(ProxiedPlayer player, @Mapper("player") String target, @OptionalValue("") @StaticValue(value = {"", "-all", "-a"}, allowISE = true) boolean all) {
|
||||
@Register(description = "WHOIS_COMMAND")
|
||||
public void genericCommand(ProxiedPlayer player, @Mapper("player") String target, WhoisParameterTypes... parameters) {
|
||||
SteamwarUser user = SteamwarUser.get(target);
|
||||
if (user == null) {
|
||||
try {
|
||||
@ -69,7 +73,7 @@ public class WhoisCommand extends SWCommand {
|
||||
if (user == null) {
|
||||
Message.send("UNKNOWN_PLAYER", player);
|
||||
} else {
|
||||
sendUserinfo(player, user, all);
|
||||
sendUserinfo(player, user, new HashSet<>(Arrays.asList(parameters)));
|
||||
}
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
|
||||
}
|
||||
|
||||
@ -78,7 +82,7 @@ public class WhoisCommand extends SWCommand {
|
||||
return SWCommandUtils.createMapper(s -> s, s -> BungeeCord.getInstance().getPlayers().stream().map(ProxiedPlayer::getName).collect(Collectors.toList()));
|
||||
}
|
||||
|
||||
private static void sendUserinfo(ProxiedPlayer player, SteamwarUser user, boolean all) {
|
||||
private static void sendUserinfo(ProxiedPlayer player, SteamwarUser user, Set<WhoisParameterTypes> parameterTypes) {
|
||||
Message.send("WHOIS_USERNAME", player, user.getUserName());
|
||||
Message.send("WHOIS_UUID", player, Message.parse("WHOIS_UUID_HOVER", player), new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, user.getUuid().toString()), user.getUuid().toString());
|
||||
Message.send("WHOIS_ID", player, user.getId());
|
||||
@ -104,19 +108,25 @@ public class WhoisCommand extends SWCommand {
|
||||
Team team = Team.get(user.getTeam());
|
||||
Message.send("WHOIS_TEAM", player, Message.parse("WHOIS_TEAM_HOVER", player, team.getTeamName()), new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/team info " + team.getTeamKuerzel()), team.getTeamColor(), team.getTeamKuerzel(), team.getTeamName());
|
||||
|
||||
if(!user.getActiveMods().isEmpty()) {
|
||||
Message.send("WHOIS_ACTIVE_MODS",player);
|
||||
for(Mod mod : user.getActiveMods()) {
|
||||
Message.send("WHOIS_ACTIVE_MOD", player,mod.getModName());
|
||||
if(parameterTypes.contains(WhoisParameterTypes.MOD)) {
|
||||
if(!user.getActiveMods().isEmpty()) {
|
||||
Message.send("WHOIS_ACTIVE_MODS",player);
|
||||
StringBuilder msg = new StringBuilder();
|
||||
for(Mod mod : user.getActiveMods()) {
|
||||
msg.append(mod.getModName()).append(",");
|
||||
}
|
||||
msg.deleteCharAt(msg.length() - 1);
|
||||
Message.send("WHOIS_ACTIVE_MOD", player,msg.toString());
|
||||
}else {
|
||||
Message.send("WHOIS_NO_ACTIVE_MODS",player);
|
||||
}
|
||||
}else {
|
||||
Message.send("WHOIS_NO_ACTIVE_MODS",player);
|
||||
}
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Das sollte das ganze farbig senden, da musst du halt mal mit Debug-Output das ganze durchsuchen warums nicht tut. Das sollte das ganze farbig senden, da musst du halt mal mit Debug-Output das ganze durchsuchen warums nicht tut.
zOnlyKroks
hat
Wenn ich einfach in die enum gehe, dort mir von einem die farbe sysoute, bekomm ich einen leeren string. was eig nicht sein kann Wenn ich einfach in die enum gehe, dort mir von einem die farbe sysoute, bekomm ich einen leeren string. was eig nicht sein kann
zOnlyKroks
hat
funktioniert funktioniert
|
||||
|
||||
Message.send("WHOIS_PUNISHMENTS", player);
|
||||
List<Punishment> punishmentList = Punishment.getAllPunishmentsOfPlayer(user.getId());
|
||||
Set<Punishment.PunishmentType> found = new HashSet<>();
|
||||
boolean isPunished = false;
|
||||
boolean all = parameterTypes.contains(WhoisParameterTypes.ALL);
|
||||
for (Punishment punishment : punishmentList) {
|
||||
if (!all && !punishment.getType().isMulti() && !found.add(punishment.getType())) {
|
||||
continue;
|
||||
@ -131,4 +141,46 @@ public class WhoisCommand extends SWCommand {
|
||||
Message.send(all ? "WHOIS_NO_ALL_PUNISHMENT" : "WHOIS_NO_PUNISHMENT", player);
|
||||
}
|
||||
}
|
||||
|
||||
@ClassMapper(value = WhoisParameterTypes.class, local = true)
|
||||
public TypeMapper<WhoisParameterTypes> argument() {
|
||||
WhoisParameterTypes[] values = WhoisParameterTypes.values();
|
||||
|
||||
return new TypeMapper<WhoisParameterTypes>() {
|
||||
@Override
|
||||
public WhoisParameterTypes map(CommandSender commandSender, String[] previousArguments, String s) {
|
||||
UserGroup userGroup = (commandSender instanceof ConsoleCommandSender) ? UserGroup.Admin : SteamwarUser.get(((ProxiedPlayer) commandSender).getUniqueId()).getUserGroup();
|
||||
return Stream.of(values)
|
||||
.filter(p -> p.userGroupSet.contains(userGroup))
|
||||
.filter(p -> p.getTabCompletes().contains(s))
|
||||
.findFirst()
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Collection<String> tabCompletes(CommandSender commandSender, String[] previousArguments, String s) {
|
||||
UserGroup userGroup = (commandSender instanceof ConsoleCommandSender) ? UserGroup.Admin : SteamwarUser.get(((ProxiedPlayer) commandSender).getUniqueId()).getUserGroup();
|
||||
return Stream.of(values)
|
||||
.filter(p -> p.userGroupSet.contains(userGroup))
|
||||
.flatMap(p -> p.getTabCompletes().stream())
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Chaoscaot
hat
Formatierung etwas unschön (Leerzeichen nach dem Komma) Formatierung etwas unschön (Leerzeichen nach dem Komma)
|
||||
private enum WhoisParameterTypes {
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
Für die Unterscheidung diese Nutzer Gruppen gibt es ne Funktion (group.isAdminGroup() und group.isTeamGroup()) Für die Unterscheidung diese Nutzer Gruppen gibt es ne Funktion (group.isAdminGroup() und group.isTeamGroup())
Admin ist dann nurnoch Admin, Mod und Dev
zOnlyKroks
hat
finde es so übersichtlicher, vorallem können so einfacher sachen verändert werden bei bedarf finde es so übersichtlicher, vorallem können so einfacher sachen verändert werden bei bedarf
|
||||
ALL(Arrays.asList("-a","-all"),UserGroup.Admin,UserGroup.Moderator,UserGroup.Developer,UserGroup.Supporter,UserGroup.Builder),
|
||||
MOD(Arrays.asList("-m","-mod","-mods"),UserGroup.Admin,UserGroup.Moderator,UserGroup.Developer);
|
||||
|
||||
private final Set<UserGroup> userGroupSet;
|
||||
|
||||
@Getter
|
||||
private List<String> tabCompletes;
|
||||
|
||||
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Chaoscaot
hat
UserGroup ist wieder ein Enum, also EnumSet. UserGroup ist wieder ein Enum, also EnumSet.
|
||||
WhoisParameterTypes(List<String> tabCompletes,UserGroup... userGroups) {
|
||||
this.userGroupSet = new HashSet<>(Arrays.asList(userGroups));
|
||||
this.tabCompletes = tabCompletes;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -578,7 +578,7 @@ SERVER_WORLD_ERROR=§cCreating the world failed.
|
||||
|
||||
|
||||
#WhoisCommand
|
||||
WHOIS_USAGE=§c/whois [player/ID] <-a>
|
||||
WHOIS_USAGE=§c/whois [player/ID] <-a>,<-m>
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
Wrong language Wrong language
|
||||
WHOIS_USERNAME=§7Username§8: §e{0}
|
||||
WHOIS_UUID=§7UUID§8: §e{0}
|
||||
WHOIS_UUID_HOVER=§eCopy UUID
|
||||
|
@ -557,7 +557,7 @@ SERVER_WORLD_ERROR=§cDas Erstellen der Welt ist fehlgeschlagen.
|
||||
|
||||
|
||||
#WhoisCommand
|
||||
WHOIS_USAGE=§c/whois [Spieler/ID] <-a>
|
||||
WHOIS_USAGE=§c/whois [Spieler/ID] <-a>,<-m>
|
||||
WHOIS_USERNAME=§7Username§8: §e{0}
|
||||
WHOIS_GROUP=§7Gruppe§8: {0}{1}
|
||||
WHOIS_UUID=§7UUID§8: §e{0}
|
||||
|
In neuem Issue referenzieren
Einen Benutzer sperren
WTF. Sehr irritierende Konversation.