• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Zeit Begrenzung

Status
Für weitere Antworten geschlossen.

kingingo

Kuhfänger
Gesperrt
Registriert
1 September 2012
Beiträge
63
Diamanten
0
Hallo ich bin grad dabei ein Kit Plugin zu schreiben und wollte fragen wie man das macht das man das kit benutzten kann und dann eine 1 std oder 3 tage warten muss bis es wieder geht?? Vielen Dank für eine Antwort
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Code:
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;
	}

So kannst du einen Cooldown erstellen. Dies ist zwar kein sauberer Code aber er würde Funtkionieren.

Cooldown kannst du dann einfügen:
cooldowns.put(playername,System.getCurrentTimeMillis() + timeInMilliseconds);
 

kingingo

Kuhfänger
Gesperrt
Registriert
1 September 2012
Beiträge
63
Diamanten
0
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
 

DerHolzhacker

Braumeister
Registriert
24 April 2012
Beiträge
339
Diamanten
0
Minecraft
DerHolzhacker
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
Würde mich auch INteresieren..oder wenn da Kommt es sind noch 9,8,7,6,.... :D

Mfg DerHolzhacker
 
X

|| xX [DEV][LP] Ms. DivaCraft Xx ||

Guest
Code:
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);
So ungefähr
 

DevNull

Schafhirte
Registriert
5 August 2012
Beiträge
107
Diamanten
0
Mal im Ernst leute
wasn das hier fürn "Posthunting"
das is Stoff für ne PN aber nicht für Posts

sowas kann man auch ganz gepflegt zusammen packen und sagen
bla is das
bla is jenes

und nicht für jedes pillepalle teil n neuen post machen.
...

mfG DevNull
 

kingingo

Kuhfänger
Gesperrt
Registriert
1 September 2012
Beiträge
63
Diamanten
0
Ok DevNull hat recht könntest du mir das eben mal zusammen fassen also bei einen Test von mir sieht es jetzt so aus

Code:
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;
	}
	
}

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! und bitte noch wie ich das dann speichern kann
 

DerHolzhacker

Braumeister
Registriert
24 April 2012
Beiträge
339
Diamanten
0
Minecraft
DerHolzhacker
kingingo' 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
Java kann Rechnen :D
 

Crafter6432

Workaholic
Registriert
22 Dezember 2011
Beiträge
681
Diamanten
1
Das musst du umrechnen:
Code:
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";
		
	}

Code:
p.sendMessage("§c Du kannst den Befehl erst in " + formatMilliseconds(time) + " ausführen!");
 

kingingo

Kuhfänger
Gesperrt
Registriert
1 September 2012
Beiträge
63
Diamanten
0
ok danke ich kamm aber leider net sehr weit
Code:
try {
			FileWriter ausgabe = new FileWriter("Kits.txt");
			
			ausgabe.write('');
			
		}catch(Exception e){
			System.err.println(e);
		}

wenn mir jemand da ein bisschen weiter helfen kann?
 
Status
Für weitere Antworten geschlossen.
Oben