• 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!

CountDown Plugin Probleme

=McAnarchy11.DE=

Kuhfänger
Gesperrt
Registriert
6 Januar 2013
Beiträge
54
Diamanten
0
Hallo,

Ich Arbeite grade an ein CountDown Plugin,

Nur es geht nicht so wie ich es möchte!

Code:
Code:
	int i = 10;
	
	@SuppressWarnings("deprecation")
	public boolean onCommand(CommandSender sender, Command cmd, String commandLable, String[] args) {
	    if (!(sender instanceof Player)) {
	    	cSystem.log.info("Du kannst diesen Befehl nicht in der Console benutze!");
	        return true;
	      }
	    final Player pl = (Player)sender;
	        if (!pl.hasPermission("System.CountDown")) {
	            pl.sendMessage(plugin.rechte);
	            return true;
	          }
		  Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() {
			public void run() {
				if (i != -1) {
					if (i != 0) {
						Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §aIn " + i + " Sekunden beginnt ein Event! Macht euch bereit!");
						i--;
					} else {
						Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §a");
                                                i--;
					}
				}
			}
		}, 0L, 20L);
		return true;
  }

Der CountDown geht nur einmal!

Er geht erst nach ein Reload wieder,
wo ist ein Fehler?
-UPDATE-

Ich benutze die neuste CraftBukkit.
 
Zuletzt bearbeitet:

=McAnarchy11.DE=

Kuhfänger
Gesperrt
Registriert
6 Januar 2013
Beiträge
54
Diamanten
0
Erst mal danke,

Ich habe das mal mit 'i=10' mit eingebaut,

Aber die Erste Message kommt nur noch! neuer Code:

int i = 10;

Code:
	@SuppressWarnings("deprecation")
	public boolean onCommand(CommandSender sender, Command cmd, String commandLable, String[] args) {
	    if (!(sender instanceof Player)) {
	    	cSystem.log.info("Du kannst diesen Befehl nicht in der Console benutze!");
	        return true;
	      }
	    final Player pl = (Player)sender;
	        if (!pl.hasPermission("System.CountDown")) {
	            pl.sendMessage(plugin.rechte);
	            return true;
	          }
		  Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable() {
			public void run() {
				if (i != -1) {
					if (i != 0) {
                                                i=10;
						Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §aIn " + i + " Sekunden beginnt ein Event! Macht euch bereit!");
						i--;
					} else {
						Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §a");
                                                i--;
					}
				}
			}
		}, 0L, 20L);
		return true;
  }

--UPDATE--
Ich glaube ich habe es gleich!
 

MrFlieder

Braumeister
Registriert
30 Dezember 2011
Beiträge
332
Diamanten
0
Minecraft
MrFlieder
Aber die Erste Message kommt nur noch! neuer Code
Nimm doch eine SCHLEIFE! Wieso machst du eine If-Abfrage?!

Improvisierter Code von mir:
onCommand:
Code:
for(int t = 10; t > 0; t--)
{
    countdown(t);
}

Scheduler:
Code:
public void countdown(int t)
{
    Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(this, new Runnable()
    {
        public void run()
        {
            Bukkit.broadcastMessage("Reload in " + t + " Sekunden!");
        }
    },t * 20);
}
 

=McAnarchy11.DE=

Kuhfänger
Gesperrt
Registriert
6 Januar 2013
Beiträge
54
Diamanten
0
So habe ich,

Aber geht immer noch nicht,

Neuer Code:
Code:
	public boolean onCommand(CommandSender sender, Command cmd, String commandLable, String[] args) {
	    if (!(sender instanceof Player)) {
	    	cSystem.log.info("Du kannst diesen Befehl nicht in der Console benutze!");
	        return true;
	      }
	    final Player pl = (Player)sender;
	        if (!pl.hasPermission("cSystem.CountDown")) {
	            pl.sendMessage(plugin.rechte);
	            return true;
	          }
	        
	        for(int t = 10; t < 0; t--)
	        {
	        	
	        countdown(t);
	        
	        } 
	        
			return true;
	}

	private void countdown(final int t) {
            Bukkit.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable()
            {
                public void run()
                {
                    Bukkit.broadcastMessage("§7[§a§lCount§c§lDown§7] §ain " + t + " Sekunden beginnt ein Event! Macht euch bereit!");
                }
            },t * 20);
  }
}
 

Calenria

Braumeister
Registriert
28 Juli 2012
Beiträge
386
Alter
45
Diamanten
300
Minecraft
Calenria
Probier mal sowas, konnte Problemlos auch mehrere gleichzeitig starten und da der Thread Async ist stört es auch nicht wenn man ihn schlafen legt.
Code:
    public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args) {
        final int sec = Integer.parseInt(args[0]);
        if (cmd.getName().equalsIgnoreCase("countdown")) {
            Bukkit.getScheduler().runTaskAsynchronously(this, new Runnable() {
                @Override
                public void run() {
                    int count = sec;
                    while (true) {
                        Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §aIn " + count + " Sekunden beginnt ein Event! Macht euch bereit!");
                        count--;
                        if (count == 0) {
                            Bukkit.getServer().broadcastMessage("§7[§aCount§cDown§7] §aEvent beginnt! Macht euch bereit!");
                            break;
                        }
                        try {
                            Thread.sleep(1000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                    }
                }
            });
        }
    }
 
Oben