Playtime Command #285
@ -127,6 +127,7 @@ public class BungeeCore extends Plugin {
|
||||
new VerifyCommand();
|
||||
new ReplayCommand();
|
||||
new GDPRQuery();
|
||||
new PlaytimeCommand();
|
||||
|
||||
// Punishment Commands:
|
||||
new PunishmentCommand("ban", Punishment.PunishmentType.Ban);
|
||||
|
49
src/de/steamwar/bungeecore/commands/PlaytimeCommand.java
Normale Datei
@ -0,0 +1,49 @@
|
||||
/*
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
|
||||
This file is a part of the SteamWar software.
|
||||
|
||||
Copyright (C) 2020 SteamWar.de-Serverteam
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU Affero General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU Affero General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU Affero General Public License
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Annotationen werden eigentlich immer vor den methoden Kopf geschrieben, in einzelnen Zeilen. Annotationen werden eigentlich immer vor den methoden Kopf geschrieben, in einzelnen Zeilen.
|
||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
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. 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.
|
||||
*/
|
||||
|
||||
package de.steamwar.bungeecore.commands;
|
||||
|
||||
import de.steamwar.bungeecore.Message;
|
||||
import de.steamwar.bungeecore.sql.SteamwarUser;
|
||||
import net.md_5.bungee.api.CommandSender;
|
||||
import net.md_5.bungee.api.connection.ProxiedPlayer;
|
||||
import org.apache.commons.lang3.LocaleUtils;
|
||||
|
||||
import java.text.DecimalFormat;
|
||||
import java.text.NumberFormat;
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Über Spaces könnte man sich hier streiten, aber das tuen Lixfel und ich uns glaube überall und immer. Über Spaces könnte man sich hier streiten, aber das tuen Lixfel und ich uns glaube überall und immer.
|
||||
import java.util.Locale;
|
||||
|
||||
public class PlaytimeCommand extends BasicCommand{
|
||||
|
||||
public PlaytimeCommand() {
|
||||
super("playtime", null);
|
||||
}
|
||||
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Genauso hier ;) Genauso hier ;)
YoyoNow
hat
Hier nichts Leerzeile Hier nichts Leerzeile
YoyoNow
hat
Warum ist hier wieder eine Leerzeile Warum ist hier wieder eine Leerzeile
zOnlyKroks
hat
weils schön aussieht weils schön aussieht
YoyoNow
hat
NEIN! NEIN!
|
||||
@Override
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
YoyoNow
hat
Hier meinte ich ein Space nach Hier meinte ich ein Space nach `if`
|
||||
public void execute(CommandSender sender, String[] strings) {
|
||||
if(!(sender instanceof ProxiedPlayer))
|
||||
YoyoNow
hat
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. 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.
Lixfel
hat
```
format = NumberFormat.getNumberInstance(locale);
format.setMaximumFractionDigits(2);
```
YoyoNow
hat
Ein Ein `TIME_FORMAT` gibt es nicht, dass hast du umbenannt in `DECIMAL_FORMAT`.
|
||||
return;
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Vllt sollte hier eine neue Nachricht gewählt werden, damit der User besser versteht was für ein Wert er erhält. Vllt sollte hier eine neue Nachricht gewählt werden, damit der User besser versteht was für ein Wert er erhält.
|
||||
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Diese Variable könnte man inlinen, da diese nur einmal verwendet wird. Diese Variable könnte man inlinen, da diese nur einmal verwendet wird.
|
||||
NumberFormat format = NumberFormat.getNumberInstance(((ProxiedPlayer)sender).getLocale());
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Vllt sollte man auch eine Zeile mehr hier hinter schmeißen. Vllt sollte man auch eine Zeile mehr hier hinter schmeißen.
YoyoNow
hat
Hier bitte die Locale des Spielers nutzen. Du könntest es auch mit:
lösen. Und dann müsste in der Hier bitte die Locale des Spielers nutzen. Du könntest es auch mit:
```java
String s = Message.parse("TIME_FORMAT", sender);
new DecimalFormat(s).format(...)
```
lösen. Und dann müsste in der `.properties` datei ein key für 'TIME_FORMAT'.
YoyoNow
hat
Hier wtf? Hier wtf?
YoyoNow
hat
`HOURS_PLAYED`:
```java
Message.send("HOURS_PLAYED", sender, format);
```
Lixfel
hat
YoyoNow, sr, aber dein Lösungsanschlag hier ist schlicht falsch. Das mit NumberFormat ist der korrekte Weg (wenn auch mit player.getLocale()). YoyoNow, sr, aber dein Lösungsanschlag hier ist schlicht falsch. Das mit NumberFormat ist der korrekte Weg (wenn auch mit player.getLocale()).
Lixfel
hat
Sr, das kann so nicht funktionieren und ist im allgemeinen nicht ganz so schön. Bitte zurück zu NumberFormat. 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.
YoyoNow
hat
Ich habe nur auch eine alternative gesagt, nicht welche man verwenden soll. Ich habe nur auch eine alternative gesagt, nicht welche man verwenden soll.
Lixfel
hat
Was zum Henker machst du denn da schon wieder? Vergiss LocalUtils und DECIMAL_FORMAT. Nimm 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. 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.
|
||||
format.setMaximumFractionDigits(2);
|
||||
String formattedText = format.format((SteamwarUser.get((ProxiedPlayer) sender).getOnlinetime() / (double) 3600));
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Hier keine Leerzeile. Hier keine Leerzeile.
|
||||
|
||||
YoyoNow markierte diese Unterhaltung als gelöst
Veraltet
YoyoNow
hat
Was machst du hier? Was machst du hier?
|
||||
Message.send("HOURS_PLAYED", sender, formattedText);
|
||||
zOnlyKroks markierte diese Unterhaltung als gelöst
Veraltet
Lixfel
hat
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: 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)`.
|
||||
}
|
||||
}
|
@ -568,4 +568,7 @@ GDPR_STATUS_WORLD=§7Packe Bauwelten...
|
||||
GDPR_STATUS_INVENTORIES=§7Suche und packe Inventare...
|
||||
GDPR_STATUS_DATABASE=§7Packe Datenbankinhalte...
|
||||
GDPR_STATUS_LOGS=§7Suche und packe logs...
|
||||
GDPR_STATUS_FINISHED=§7Packen abgeschlossen
|
||||
GDPR_STATUS_FINISHED=§7Packen abgeschlossen
|
||||
|
||||
#Playtime Command
|
||||
HOURS_PLAYED=§7Deine Spielzeit beträgt§8: §e{0}h
|
Bitte hier noch unseren AGPL-Licence Header als Kommentar davorpacken.