Playtime Command #285
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
3 Beteiligte
Fällig am
Kein Fälligkeitsdatum gesetzt.
Abhängigkeiten
Keine Abhängigkeiten gesetzt.
Referenz: SteamWar/BungeeCore#285
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren
Keine Beschreibung angegeben.
Branch "Playtime_Command" 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?
@ -0,0 +1,21 @@
package de.steamwar.bungeecore.commands;
Bitte hier noch unseren AGPL-Licence Header als Kommentar davorpacken.
@ -0,0 +14,4 @@
}
@Override public void execute(CommandSender sender, String[] strings) {
ProxiedPlayer player = (ProxiedPlayer) sender;
Hiervor bitte auch wirklich prüfen, ob sender ein ProxiedPlayer ist (und ansonsten einfach vorher returnen). Ist immer etwas ungeil, wenn (berechtigte) Fehler fliegen, die landen dann nämlich alle in der Fehlerdatenbank.
@ -0,0 +13,4 @@
super("playtime", null);
}
@Override public void execute(CommandSender sender, String[] strings) {
Annotationen werden eigentlich immer vor den methoden Kopf geschrieben, in einzelnen Zeilen.
@ -0,0 +26,4 @@
import java.text.DecimalFormat;
public class PlaytimeCommand extends BasicCommand{
Über Spaces könnte man sich hier streiten, aber das tuen Lixfel und ich uns glaube überall und immer.
@ -0,0 +34,4 @@
@Override
public void execute(CommandSender sender, String[] strings) {
if(!(sender instanceof ProxiedPlayer))
Genauso hier ;)
@ -0,0 +38,4 @@
return;
ProxiedPlayer player = (ProxiedPlayer) sender;
SteamwarUser user = SteamwarUser.get(player);
Message.send("WHOIS_HOURS_PLAYED", player, new DecimalFormat("###.##").format(user.getOnlinetime() / (double) 3600));
Vllt sollte hier eine neue Nachricht gewählt werden, damit der User besser versteht was für ein Wert er erhält.
@ -0,0 +40,4 @@
SteamwarUser user = SteamwarUser.get(player);
Message.send("WHOIS_HOURS_PLAYED", player, new DecimalFormat("###.##").format(user.getOnlinetime() / (double) 3600));
}
}
Vllt sollte man auch eine Zeile mehr hier hinter schmeißen.
@ -0,0 +34,4 @@
@Override
public void execute(CommandSender sender, String[] strings) {
Hier nichts Leerzeile
@ -0,0 +35,4 @@
@Override
public void execute(CommandSender sender, String[] strings) {
if(!(sender instanceof ProxiedPlayer))
Hier meinte ich ein Space nach
if
@ -0,0 +39,4 @@
return;
ProxiedPlayer player = (ProxiedPlayer) sender;
SteamwarUser user = SteamwarUser.get(player);
Diese Variable könnte man inlinen, da diese nur einmal verwendet wird.
@ -0,0 +42,4 @@
SteamwarUser user = SteamwarUser.get(player);
Message.send("HOURS_PLAYED", player, new DecimalFormat("###.##").format(user.getOnlinetime() / (double) 3600));
}
Hier keine Leerzeile.
@ -0,0 +37,4 @@
if(!(sender instanceof ProxiedPlayer))
return;
Message.send("HOURS_PLAYED", sender, new DecimalFormat("###.##").format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600)));
Ich würde mir noch wünschen, dass dieses DecimalFormat vllt auch im deutschen dann mit ',' ist. Ich wüsste aber nicht wie der DecimalFormat genaut funktioniert.
@ -0,0 +40,4 @@
if(!(sender instanceof ProxiedPlayer))
return;
NumberFormat format = NumberFormat.getNumberInstance(Locale.GERMAN);
Hier bitte die Locale des Spielers nutzen. Du könntest es auch mit:
lösen. Und dann müsste in der
.properties
datei ein key für 'TIME_FORMAT'.YoyoNow, sr, aber dein Lösungsanschlag hier ist schlicht falsch. Das mit NumberFormat ist der korrekte Weg (wenn auch mit player.getLocale()).
@ -562,0 +563,4 @@
#Playtime Command
HOURS_PLAYED=§7Deine Spielzeit beträgt§8: §e{0}h
#Player
Also dieses Format ist nicht richtig. Das sollte wohl '###,##' sein oder sehe ich das falsch?
@ -0,0 +40,4 @@
if(!(sender instanceof ProxiedPlayer))
return;
String s = Message.parse("TIME_FORMAT", sender);
Hier wtf?
@ -0,0 +43,4 @@
String s = Message.parse("TIME_FORMAT", sender);
String format = new DecimalFormat(s).format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600));
Message.send("DECIMAL_FORMAT", sender, format);
Was machst du hier?
@ -0,0 +40,4 @@
String s = Message.parse("TIME_FORMAT", sender);
String format = new DecimalFormat(s).format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600));
Message.send(format,sender);
HOURS_PLAYED
:@ -0,0 +37,4 @@
if(!(sender instanceof ProxiedPlayer))
return;
String s = Message.parse("TIME_FORMAT", sender);
Ein
TIME_FORMAT
gibt es nicht, dass hast du umbenannt inDECIMAL_FORMAT
.@ -562,0 +563,4 @@
#Playtime Command
HOURS_PLAYED=§7Deine Spielzeit beträgt§8: §e{0}h
#Player
Ich würde da shier lieber auch unter
#Playtime Command
sortieren, da es nur dort verwendet wird.Wenn du jetzt noch die merge Konflikte löst, wäre das genial.
@ -0,0 +34,4 @@
@Override
public void execute(CommandSender sender, String[] strings) {
Warum ist hier wieder eine Leerzeile
weils schön aussieht
NEIN!
@ -0,0 +40,4 @@
String s = Message.parse("DECIMAL_FORMAT", sender);
String format = new DecimalFormat(s).format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600));
Message.send(Message.parse("HOURS_PLAYED", sender) + format,sender);
Sr, das kann so nicht funktionieren und ist im allgemeinen nicht ganz so schön. Bitte zurück zu NumberFormat.
YoyoNow hat da einen ganz schlechten Tipp/Empfehlung gegeben, sr.
Ich habe nur auch eine alternative gesagt, nicht welche man verwenden soll.
@ -0,0 +40,4 @@
if(!(sender instanceof ProxiedPlayer))
return;
NumberFormat format = NumberFormat.getNumberInstance(LocaleUtils.toLocale(Message.parse("DECIMAL_FORMAT", sender)));
Was zum Henker machst du denn da schon wieder? Vergiss LocalUtils und DECIMAL_FORMAT. Nimm
NumberFormat.getNumberInstance(((ProxiedPlayer)sender).getLocale())
.Dein Code kann nicht funktionieren, denn wie sollen die LocaleUtils denn aus deinem String "###,##" die korrekte Sprache herausfinden, um diese dann dem NumberFormat zu übergeben? NumberFormat weiß selbst, wie die Zahlen in einer Sprache korrekt formatiert werden.
@ -0,0 +44,4 @@
format.setMaximumFractionDigits(2);
String formattedText = format.format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600));
Message.send(Message.parse("HOURS_PLAYED", sender) + formattedText,sender);
Sr, dass es mir erst jetzt aufgefallen ist: Das Message-System funktioniert da etwas anders. Parameter werden einfach hinten als Argumente drangehängt. In dem Fall also einfach:
Message.send("HOURS_PLAYED", sender, formattedText)
.