Wie genau soll es denn sein?
1. Automatisch alle 3 Stunden das ItemStack
2. Erst nach 3h wieder erlauben, dass der Befehl ausgeführt wird, ansonsten eine Nachricht mit der Wartezeit an den Spieler
Die Beispielcodes dienen dafür, wenn du nicht genau weißt, wie du das machen solltest, um dir so nochmal etwas Hilfestellung zu geben
Zu 1.
Einfach ein Scheduler alle 3h laufen lassen, der dann die ItemStacks an die Spieler vergibt
Hier mal ein Beispielcode:
Code:
this.getServer().getScheduler().runTaskTimer(this, new Runnable() {
@Override
public void run() {
for(Player player : Bukkit.getOnlinePlayers())
{
//Spieler den ItemStack geben
}
}
}, 3*3600*20, 3*3600*20);
Zu 2.
In einer HashMap Spielername + Timestamp speichern. Dabei kannst du entscheiden, ob du den Timestamp in 3h oder den aktuellen nimmst (siehe System.currentTimeMillis()).
Wenn der Befehl ausgeführt wird, prüfe es, ob die 3h über dem Wert liegen. Wenn ja => Spieler erhält ItemStack. Wenn nicht, Spieler erhält die Nachricht. Aus der Differenz der beiden Werte (Ablauf-Timestamp und aktuellen Timestamp) kannst du dann die Restzeit berechnen, bis der Spieler den Befehl wieder einsetzen kann und ihm diese Zeit senden.
Der Timestamp von System.currentTimeMillis() sind die ms (nicht die Sekunden wie beim unix-Timestamp) seit 01.01.1970
Hier ebenfalls ein Beispielcode:
Code:
private final HashMap<Player, Long> waittime = new HashMap<Player, Long>();
....
Player p = (Player)sender;
...
if(waittime.containsKey(p))
{
long dreiStunden = 3L*3600L*1000L;
if((waittime+dreiStunden) < System.currentTimeMillis)
{
//Meldung das die 3h noch nicht rum sind
return true; //Verhindert u.a. das der Code für das erhalten der Items ausgeführt wird, da hier bereits eine Rückgabe erhalten wird
}
}
//Hier der Code, damit der Spieler das Item erhält
... DEIN CODE ...
//Nun speichern, dass der Spieler den Befehl verwendet und die Items auch erhalten hat
waittime.put(p, System.currentTimeMillis());
return true; //War ja alles erfolgreich
@Attila494: Ich denke er möchte das gerne selbst programmieren