Minecraft Timer bzw. Stoppuhr programmieren?
Hey!
Ich habe eine Frage an alle Programmierer dort draußen!
Ich arbeite derzeit an einer "Stoppuhr".
Ich möchte eine Stoppuhr mit einer "Actionbar" programmieren.
Ich habe alle Kommandos ect. fertig, nur fehlt mir die Stoppuhr an sich :/
(In diesem Video findet ihr ein beispiel, diese Stoppuhr die in der Actionbar ist)
https://www.youtube.com/watch?v=O1yzmM15tJk&t=63s
.
Meine Frage ist also, wie ich eine "Stoppuhr" programmieren kann, die bsp. bei einem Kommando: "startet, anhält, weiterführt, stoppt"?
.
Ich bitte um eure Hilfe und gerne könnt ihr mich auf Discord (Wolfi#4268) anschreiben.
1 Antwort
Ich würde Dir den Bukkit Scheduler empfehlen (https://bukkit.gamepedia.com/Scheduler_Programming/de) dieser führt einen gewissen Code nach einer spezifischen Zeit aus und wiederholt sich nach der angegebenen Zeit. Du müsstest die aktuelle Zeit einfach jedes Mal speichern und beim pausieren der Stoppuhr den Scheduler abbrechen und beim „weiterführen“ wieder neu starten mit der gespeicherten Zeit.
Eigentlich müsstest du nur in dem Task (Bukkit Sheduler), der jede Sekunde ausgeführt wird, die actionable updaten.
so in etwa!
final Int timer = 20; // Stoppuhr in Sekunden
Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
@Override
public void run() {
//Das hier wird jede Sekunde ausgeführt
String message = String.valueOf(timer);//Den müsstest du natürlich noch
//in ein entsprechendes Format
//bringen, z.b. 00:20
player.spigot().sendMessage(ChatMessageType.ACTION_BAR,
TextComponent.fromLegacyText(message));
timer = timer - 1; // eine Sekunde vom Timer abziehen
}
}, 0l, 20l) // Der Task wird sofort gestartet und nach 20 Minecraft-Ticks (eine Echtzeit-Sekunde) wiederholt
Damit habe ich mich gestern bereits befasst, vielen Dank, ich werde es mal ausprobieren ^^
Ich hätte da eine Frage, wie kann ich die "Actionbar" dauerhaft senden? d.h das sie jede Sekunde gesendet wird und sich somit die Zeit auch updated?