Whois Fabric Mod Info #444
Label
Kein Label
Bug
Codeverbesserung
Einsteiger Freundlich
Idee
In Arbeit
Neues Feature
Prio A
Security Breach
Überprüfung notwendig
Verbesserung
Zu Beobachten
Kein Meilenstein
Niemand zuständig
4 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#444
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "whois_fabric_mods" löschen
Das Löschen eines Branches ist permanent. Obwohl der Branch für eine kurze Zeit weiter existieren könnte, kann diese Aktion in den meisten Fällen NICHT rückgängig gemacht werden. Fortfahren?
Moderators, Developers and Admins are able to see the installed mods on any client with the fabric mod sender installed. -m, -mod, -mods parameter is added to the whois command
Würde mich freuen, wenn es die Modliste auch bei LabyMod, Forge12 und Forge15 speichert und anzeigt.
@ -39,6 +39,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
Falsche Datei, du kannst das nicht im SWUser speichern (kommt irgendwann in den CommonCore und wird stündlich gelöscht). Mache das eher im Modsystem mit einer static final Map<ProxiedPlayer, List>. (Wobei du bei einem disconnect dann natürlich den entsprechenden Eintrag entfernen musst) Theoretisch müsste das dann auch in den PersistentBungeeCore, aber da es sich nur um eine Debug-Sache handelt, müsste es in Ordnung sein, wenn das Wissen bei einem Softreload verloren geht.
@ -80,6 +81,8 @@ public class SteamwarUser {
private Locale locale;
private boolean manualLocale;
private List<Mod> activeMods = new CopyOnWriteArrayList<>();
Was zum Henker ist das für ein Listentyp? Ist das wirklich nötig?
Noch nicht funktional
@ -69,3 +75,3 @@
Message.send("UNKNOWN_PLAYER", player);
} else {
sendUserinfo(player, user, all);
sendUserinfo(player, user, new HashSet<>(Arrays.asList(parameters)));
WTF. Sehr irritierende Konversation.
@ -106,0 +120,4 @@
if(!activeMods.isEmpty()) {
Message.send("WHOIS_ACTIVE_MODS",player);
String result = activeMods.stream().map(mod -> mod.getModType().getColorCode() + mod.getModName()).collect(Collectors.joining("§8, "));
Message.send("WHOIS_ACTIVE_MOD", player,result);
Das sollte das ganze farbig senden, da musst du halt mal mit Debug-Output das ganze durchsuchen warums nicht tut.
Wenn ich einfach in die enum gehe, dort mir von einem die farbe sysoute, bekomm ich einen leeren string. was eig nicht sein kann
funktioniert
@ -44,1 +41,3 @@
class Utils {
public class Utils {
public static final Map<UUID,List<Mod>> synchronizedPlayerModMap = new HashMap<>();
Warum nennst du sie synchronizedPlayerModMap, wenn sie nicht mal synchronized ist?
@ -79,3 +77,1 @@
YELLOW(2),
RED(3),
YOUTUBER_ONLY(4);
UNKLASSIFIED(0,"§7 "),
Da das ganze hier in den CommonCore kommt, würde ich mich freuen, wenn da nur der Colorcode (ohne leerzeichen, ohne §) drinbleibt.
@ -82,0 +77,4 @@
UNKLASSIFIED(0,"§7 "),
GREEN(1,"§a "),
YELLOW(2,"§e "),
RED(3,"§c "),
Yellow und Red werden nie sichtbar sein (damit ist niemand online)
@ -578,0 +578,4 @@
WHOIS_ACTIVE_MODS=§7Aktive Mods:
WHOIS_NO_ACTIVE_MODS=§7Der Spieler hat keine aktiven Mods.
WHOIS_ACTIVE_MOD={0}
WHOIS_PLATFORM=§7Modloader:§e{0}
Wenn deutsch und englisch 1 zu 1 das gleiche sind, brauchst du den im deutschen nicht zu kopieren sondern kannst ihn einfach weglassen.
Den unused Code kannst du schon gerne rauslassen!
@ -579,3 +579,3 @@
#WhoisCommand
WHOIS_USAGE=§c/whois [player/ID] <-a>
WHOIS_USAGE=§c/whois [Spieler/ID] <-a>,<-m>
Wrong language
yoyo hatte sich beschwert das ich den rausgelassen habe
Ich beschwere mich, dass es wieder drinnen ist (weil es nicht funktioniert)
Ich finde, wir brauchen diese Informationen nicht im Whois, besonders wenn man sich die nötigen änderungen anschaut, ist es doch etwas viel, dafür das es imho nichts sonderlich neues bringt.
@ -78,3 +78,3 @@
}
private static void sendUserinfo(ProxiedPlayer player, SteamwarUser user, boolean all) {
private static void sendUserinfo(ProxiedPlayer player, SteamwarUser user, List<WhoisParameterTypes> parameterTypes) {
Hier ein EnumSet nutzen oder es wieder alles auf boolean parameters machen.
@ -124,0 +167,4 @@
}
private enum WhoisParameterTypes {
ALL(Arrays.asList("-a","-all"),UserGroup.Admin,UserGroup.Moderator,UserGroup.Developer,UserGroup.Supporter,UserGroup.Builder),
Formatierung etwas unschön (Leerzeichen nach dem Komma)
@ -124,0 +168,4 @@
private enum WhoisParameterTypes {
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);
Für die Unterscheidung diese Nutzer Gruppen gibt es ne Funktion (group.isAdminGroup() und group.isTeamGroup())
Admin ist dann nurnoch Admin, Mod und Dev
finde es so übersichtlicher, vorallem können so einfacher sachen verändert werden bei bedarf
@ -124,0 +177,4 @@
WhoisParameterTypes(List<String> tabCompletes,UserGroup... userGroups) {
this.userGroupSet = new HashSet<>(Arrays.asList(userGroups));
UserGroup ist wieder ein Enum, also EnumSet.
@ -44,1 +41,3 @@
class Utils {
public class Utils {
public static final Map<UUID,List<Mod>> playerModMap = new HashMap<>();
Sollte in den PersistentBungeeCore verschoben werden, sonst ist das nach nem Softreload alles weg. (https://steamwar.de/devlabs/SteamWar/PersistentBungeeCore/src/branch/master/src/de/steamwar/bungeecore/Storage.java)
diese infos sind nicht so wichtig, dass sie nach einem softreload benötigt werden.
spätestens wenn der user rejoined sind sie wieder da. Diese infos sind auch nicht essenziell zu haben.
@ -45,0 +41,4 @@
public class Utils {
public static final Map<UUID,List<Mod>> playerModMap = new HashMap<>();
evtl. Nur den Modname Speichern und den ModTypen dann aus der DB laden, besonders wenn die Liste in den PersistentBungeeCore kommt.
da kommen dann relativ viele datenbank zugriffe zusammen. finde es so vorallem im moment wie es ist einfacher
@ -39,6 +39,7 @@ import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
Unused import
dann bleibts jetzt raus
Naja schlimm das es viel ändert ist es nicht meiner meinung nach. Ist ja jetzt getan. Und einer unserer Moderatoren (Bread) hat sich dies gewünscht und ich sehe kein problem hiermit.
mittlerweile funktional
@ -1 +1 @@
Subproject commit c6da22f0bee3865b7b3283bc17275e12c5de14af
Subproject commit bf480f6e6fc212362da34620385d4dee84250698
CommonCore bitte zurücksetzen (kein Diff), hat nichts mit dem Branch zu tun und sorgt nur für Merge-Conflicts
wie mache ich das?
@ -69,3 +69,3 @@
Message.send("UNKNOWN_PLAYER", player);
} else {
sendUserinfo(player, user, all);
EnumSet<WhoisParameterTypes> set = parameters.length == 0 ? EnumSet.noneOf(WhoisParameterTypes.class) : EnumSet.copyOf(Arrays.asList(parameters));
Muss der Sonderfall für parameters.length == 0 sein? Und würde nicht auch einfach EnumSet.of(array) gehen?
@ -37,3 +36,1 @@
import java.util.LinkedList;
import java.util.List;
import java.util.UUID;
import java.util.*;
Keine Changes in ungeänderten Dateien!
@ -598,1 +598,4 @@
WHOIS_NO_ALL_PUNISHMENT=§a✓ §7The player has not done anything yet.
WHOIS_ACTIVE_MODS=§7Active Mods ({0}):
WHOIS_NO_ACTIVE_MODS=§7This player has no active mods.
WHOIS_ACTIVE_MOD={0}
Wie wäre es stattdessen, WHOIS_ACTIVE_MODS um ein zweites Argument am Ende zu erweitern (für die Modliste)? Dann ist es in einer Zeile. Ansonsten mal oben in der Datei schauen, ob es nicht schon irgendwein OLD_STRING oder ähnliches gibt, was einfach nur einen String ausgibt.
so sind es nur zwei zeilen und meiner meinung nach übersichtlicher, da die länge der modliste seperat steht und nicht im getummel der mods.
Schaut jetzt gut aus. Getestet?
getestet von mir und yoyo. ready to merge