1. 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

Dieses Thema im Forum "Programmierung" wurde erstellt von kingingo, 8. September 2012.

Status des Themas:
Es sind keine weiteren Antworten möglich.

  1. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    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
     
  2. Werbung
    Online

    Werbung

  3. Code (Text):
    1. private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
    2.  
    3.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    4.         Player player = (Player) sender;
    5.         if(cooldowns.containsKey(player.getName())){
    6.             if(cooldowns.get(player.getName()) >= System.currentTimeMillis()){
    7.                 player.sendMessage("Aktueller Cooldown aktiv! ");
    8.                 return true;
    9.             }
    10.         }
    11.        
    12.         return true;
    13.     }
    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);
     
  4. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Ok danke ich versuch es ma damit THX
     
  5. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.396
    Vergiss aber nicht die hashmap in regelmäßigen abständen zu speichern, sonst gehen alle
    inhalte bei einem reload verloren.
     
  6. Sn0wBlizz4rdalt
    Offline

    Sn0wBlizz4rdalt Gesperrt

    Registriert seit:
    5. Dezember 2011
    Beiträge:
    310
    Hilft mir auch weiter, Danke!
     
  7. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    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
     
  8. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    339
    Minecraft:
    DerHolzhacker
    Würde mich auch INteresieren..oder wenn da Kommt es sind noch 9,8,7,6,.... :D

    Mfg DerHolzhacker
     
  9. Code (Text):
    1. long remain = cooldowns.get(Playername)- System.getCurrentTime();
    2.  
    3. plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
    4. long d = remain;
    5.    public void run() {
    6.        getServer().broadcastMessage("Befehl in :" +remain );
    7. remain--;
    8.    }
    9. }, (long) 20*60);
    So ungefähr
     
  10. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    getCurrentTime geht nicht ? ach und DANKE
     
  11. getCurrentTime ist natürlich currentTimeMillis();
     
  12. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    was meinst du eigentlich mit PlayerName??
     
  13. Name des Spielers..., der den Cooldown hat^^
     
  14. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    also p.getName() rein??
     
  15. DevNull
    Offline

    DevNull

    Registriert seit:
    5. August 2012
    Beiträge:
    107
    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
     
  16. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    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 (Text):
    1. package me.kingingo.kitstart;
    2.  
    3. import java.util.HashMap;
    4. import org.bukkit.command.Command;
    5. import org.bukkit.command.CommandSender;
    6. import org.bukkit.entity.Player;
    7. import org.bukkit.plugin.java.JavaPlugin;
    8.  
    9. public class KitStart extends JavaPlugin{
    10.    
    11.     int time = 60000;
    12.     @Override
    13.     public void onEnable(){
    14.        
    15.     }
    16.     @Override
    17.     public void onDisable(){
    18.        
    19.     }
    20.    
    21.     private HashMap<String, Long> cooldowns = new HashMap<String, Long>();
    22.  
    23.     public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
    24.         Player p = (Player) sender;
    25.         if(cooldowns.containsKey(p.getName())){
    26.             if(cooldowns.get(p.getName()) >= System.currentTimeMillis()){
    27.                 p.sendMessage("§c Du kannst den Befehl erst in " + time + " ausführen!");
    28.                 return true;
    29.             }
    30.         }
    31.         if(cmd.getName().equalsIgnoreCase("test")){
    32.             cooldowns.put(p.getName(),System.currentTimeMillis() + time);
    33.             p.sendMessage("§bTest");
    34.         }
    35.  
    36.         return true;
    37.     }
    38.    
    39. }
    40.  
    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
     
  17. DerHolzhacker
    Offline

    DerHolzhacker

    Registriert seit:
    24. April 2012
    Beiträge:
    339
    Minecraft:
    DerHolzhacker
    Java kann Rechnen :D
     
  18. Crafter6432
    Offline

    Crafter6432

    Registriert seit:
    22. Dezember 2011
    Beiträge:
    681
    Das musst du umrechnen:
    Code (Text):
    1.  
    2. public String formatMilliseconds(long milis){
    3.         int time;
    4.         if(milis>1000){
    5.             if(milis>60000){
    6.                 if(milis>360000){
    7.                     time = (int) (milis/360000);
    8.                     if(milis-(time*360000)>1000){
    9.                         return time +"h "+formatMilliseconds(milis-(time*360000));
    10.                     }else{
    11.                         return time +"h";
    12.                     }                      
    13.                 }
    14.                 time = (int) (milis/60000);
    15.                 if(milis-(time*60000)>1000){
    16.                     return time +"min "+formatMilliseconds(milis-(time*60000));
    17.                 }else{
    18.                     return time +"min";
    19.                 }  
    20.             }
    21.             time = (int) (milis/1000);
    22.             if(milis-(time*1000)>1000){
    23.                 return time +"sec "+formatMilliseconds(milis-(time*1000));
    24.             }else{
    25.                 return time +"sec";
    26.             }          
    27.         }
    28.         return milis+"ms";
    29.        
    30.     }
    31.  
    32.  
    Code (Text):
    1. p.sendMessage("§c Du kannst den Befehl erst in " + formatMilliseconds(time) + " ausführen!");
     
  19. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    Ich hab dann noch eine Frage wie kann ich das dann speichern so das wenn ich reload mache nicht gleich alle Zeit Begrenzungn gelöscht werden ???
     
  20. Benni1000
    Offline

    Benni1000 Ehem. Teammitglied

    Registriert seit:
    4. Mai 2012
    Beiträge:
    1.396
    Indem du die werte mit einem FileWriter in eine Datei schreibst?
     
  21. kingingo
    Offline

    kingingo Gesperrt

    Registriert seit:
    1. September 2012
    Beiträge:
    63
    ok danke ich kamm aber leider net sehr weit
    Code (Text):
    1.  
    2. try {
    3.             FileWriter ausgabe = new FileWriter("Kits.txt");
    4.            
    5.             ausgabe.write('');
    6.            
    7.         }catch(Exception e){
    8.             System.err.println(e);
    9.         }
    wenn mir jemand da ein bisschen weiter helfen kann?
     
Status des Themas:
Es sind keine weiteren Antworten möglich.