added playertime command
This commit is contained in:
parent
918ee5ed00
commit
b1427ac90e
@ -0,0 +1,31 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.playtime;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.Appliance;
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import eu.mhsl.craftattack.spawn.util.text.DataSizeConverter;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import net.kyori.adventure.util.Ticks;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.Statistic;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
public class Playtime extends Appliance {
|
||||||
|
public Component getFormattedPlayerTime(OfflinePlayer player){
|
||||||
|
int playtimeInTicks = player.getStatistic(Statistic.PLAY_ONE_MINUTE);
|
||||||
|
String playtime = DataSizeConverter.formatSecondsToHumanReadable(playtimeInTicks / Ticks.TICKS_PER_SECOND);
|
||||||
|
return Component.text()
|
||||||
|
.append(Component.text("Der Spieler ", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text(Objects.requireNonNull(player.getName())))
|
||||||
|
.append(Component.text(" hat eine Spielzeit von ", NamedTextColor.GRAY))
|
||||||
|
.append(Component.text(playtime, NamedTextColor.GOLD))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected @NotNull List<ApplianceCommand<?>> commands() {
|
||||||
|
return List.of(new PlaytimeCommand());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,31 @@
|
|||||||
|
package eu.mhsl.craftattack.spawn.appliances.playtime;
|
||||||
|
|
||||||
|
import eu.mhsl.craftattack.spawn.appliance.ApplianceCommand;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.format.NamedTextColor;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class PlaytimeCommand extends ApplianceCommand.PlayerChecked<Playtime> {
|
||||||
|
public PlaytimeCommand() {
|
||||||
|
super("playtime");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void execute(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) throws Exception {
|
||||||
|
String playerName = getPlayer().getName();
|
||||||
|
if(args.length == 1) {
|
||||||
|
playerName = args[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
OfflinePlayer player = Bukkit.getOfflinePlayer(playerName);
|
||||||
|
if (!player.hasPlayedBefore()) {
|
||||||
|
sender.sendMessage(Component.text("Der Spieler existiert nicht!", NamedTextColor.RED));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
sender.sendMessage(getAppliance().getFormattedPlayerTime(player));
|
||||||
|
}
|
||||||
|
}
|
@ -38,4 +38,18 @@ public class DataSizeConverter {
|
|||||||
hours %= 60;
|
hours %= 60;
|
||||||
return String.format("%dd%dh%dm%ds", days, hours, minutes, seconds);
|
return String.format("%dd%dh%dm%ds", days, hours, minutes, seconds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static String formatSecondsToHumanReadable(int seconds) {
|
||||||
|
if (seconds < 0) return "unsupported";
|
||||||
|
|
||||||
|
int minutes = seconds / 60;
|
||||||
|
int hours = minutes / 60;
|
||||||
|
int days = hours / 24;
|
||||||
|
|
||||||
|
seconds %= 60;
|
||||||
|
minutes %= 60;
|
||||||
|
hours %= 60;
|
||||||
|
|
||||||
|
return String.format("%dd %dh %dm %ds", days, hours, minutes, seconds);
|
||||||
|
}
|
||||||
}
|
}
|
@ -42,3 +42,4 @@ commands:
|
|||||||
yearRank:
|
yearRank:
|
||||||
msg:
|
msg:
|
||||||
r:
|
r:
|
||||||
|
playtime:
|
||||||
|
Loading…
x
Reference in New Issue
Block a user