private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
Player player = (Player) sender;
if(cooldowns.containsKey(player.getName())){
if(cooldowns.get(player.getName()) >= System.currentTimeMillis()){
player.sendMessage("Aktueller Cooldown aktiv! ");
return true;
}
}
return true;
}
Würde mich auch INteresieren..oder wenn da Kommt es sind noch 9,8,7,6,....kingingo' schrieb:Und wie macht man das wenn die Naricht kommt : Du kannst den Befehl erst in ... ausführen das dann auch die Zeit steht also das plugin selbst runter zäht? also
Du kannst den Befehl erst in 60 min ausführen
Du kannst den Befehl erst in 59 min ausführen
Du kannst den Befehl erst in 58 min ausführen
long remain = cooldowns.get(Playername)- System.getCurrentTime();
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
long d = remain;
public void run() {
getServer().broadcastMessage("Befehl in :" +remain );
remain--;
}
}, (long) 20*60);
package me.kingingo.kitstart;
import java.util.HashMap;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class KitStart extends JavaPlugin{
int time = 60000;
@Override
public void onEnable(){
}
@Override
public void onDisable(){
}
private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
Player p = (Player) sender;
if(cooldowns.containsKey(p.getName())){
if(cooldowns.get(p.getName()) >= System.currentTimeMillis()){
p.sendMessage("§c Du kannst den Befehl erst in " + time + " ausführen!");
return true;
}
}
if(cmd.getName().equalsIgnoreCase("test")){
cooldowns.put(p.getName(),System.currentTimeMillis() + time);
p.sendMessage("§bTest");
}
return true;
}
}
Java kann Rechnenkingingo' schrieb:ok das hat auch geklappt wenn du mir noch sagen könntest wie man das dann so macht das die Nachricht Du kannst den Befehl erst in " + time + " ms ausführen!
nicht so raus kommt Du kannst den Befehl erst in 60000 ms ausführen! sondern das das so raus komt Du kannst den Befehl erst in 1min ausführen! Dann hätte ich alles
public String formatMilliseconds(long milis){
int time;
if(milis>1000){
if(milis>60000){
if(milis>360000){
time = (int) (milis/360000);
if(milis-(time*360000)>1000){
return time +"h "+formatMilliseconds(milis-(time*360000));
}else{
return time +"h";
}
}
time = (int) (milis/60000);
if(milis-(time*60000)>1000){
return time +"min "+formatMilliseconds(milis-(time*60000));
}else{
return time +"min";
}
}
time = (int) (milis/1000);
if(milis-(time*1000)>1000){
return time +"sec "+formatMilliseconds(milis-(time*1000));
}else{
return time +"sec";
}
}
return milis+"ms";
}
p.sendMessage("§c Du kannst den Befehl erst in " + formatMilliseconds(time) + " ausführen!");
try {
FileWriter ausgabe = new FileWriter("Kits.txt");
ausgabe.write('');
}catch(Exception e){
System.err.println(e);
}