Minecraft plugin programmieren, wie lasse ich einen Spieler nur 1 mal am Tag eine Aktion ausführen?

1 Antwort

Hallo,

Ich hätte da zwei Ideen:

Datenbank-Variante

Du speicherst das in einer Datenbank-Tabelle, die beinhaltet, ob ein Spieler bereits einen Command ausgeführt hat. Zum Beispiel:

player    | command | last_executed 
muster12  | home    | 21-04-2020 20:18:32

Dann könntest du die Zeit aus der Spalte last_executed mit der aktuellen Zeit vergleichen. Sollte der Spieler noch nie einen Command ausgeführt haben, legst du den Datenbankeintrag an (musst du natürlich mit einer SQL-Query prüfen).

YML-Variante

Du könntest dasselbe auch mit einer config-Datei machen, mit dem Namen exec_commands.yml zum Beispiel.

In dem Command Executor rufst du dann eine Methode auf, die prüft, ob der Spieler bereits in der Datei gespeichert ist. Mit einer geplanten Aufgabe könntest du die Datei einmal am Tag, um genau 23:59:59 löschen.

Optimal - wenn du ein an einem Communits Projekt programmierst - hat der Spieler die Möglichkeit, zwischen einer der beiden Möglichkeiten zu wählen. :)

Liebe Grüße

Woher ich das weiß:eigene Erfahrung
cani1212 
Fragesteller
 21.04.2020, 20:34

Hey, erstmal danke für die schnelle antwort, ich bin grade dabei, ein Plugin für mein Community Projekt zu programmieren, womit man mit /lohn sein Lohn abholen kann. Nur ein Problem hätte ich noch: Wie lasse ich die Config um 23:59:59 resetten? Gruß Can

1
Niklas  21.04.2020, 22:09
@cani1212

Mittels Cron-Job würde das gehen. Zunächst würde ich aber erstmal einen Admin-Command implementieren, mit dem das manuell gemacht werden kann.

Wenn die Funktionalität steht, würde ich mal schauen, dass ich das per Cron-Job aufrufbar mache. Der Server führt dann ein Script aus, das widerrum löscht die YML-Datei.

1