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

brauche hilfe bei einen plugin

itachai

Redstoneengineer
Registriert
11 September 2012
Beiträge
44
Diamanten
250
Minecraft
itachai
Hallo Leute,
Also ganz leicht hab ein problem beim coden:
ich will ein zeitschleife bauen:
if(cmd.getName().equalsIgnoreCase("test")){
if(p.hasPermission("test")){
if(args.length == 0){
for(int i = 0; i < 700; i++){
if(i = 200){
Bukkit.broadcastMessage(ChatColor.RED + "[Server]" + ChatColor.BLUE + "Der Server wird in ein paar Sekunden ...");
}
if(i = 300){
Bukkit.broadcastMessage(ChatColor.RED + "[Server]" + ChatColor.BLUE + "Der Server wird in 3 Sekunden ...");
}
if(i = 400){
Bukkit.broadcastMessage(ChatColor.RED + "[Server]" + ChatColor.BLUE + "Der Server wird in 2 Sekunden ...");
}
if(i = 500){
Bukkit.broadcastMessage(ChatColor.RED + "[Server]" + ChatColor.BLUE + "Der Server wird in 1 Sekunden ...");
}
if(i = 600){
und commando
}
return true
}

} else {
return false;
}
}
}
So in etwa hab i ch gedacht, geht aber nicht.
Wer mir helfen kann, der könnte mir ja helfen. :D

Mfg itachai
 
G

games6471

Guest
Du solltest lieber mit Schedulen arbeiten, denn wie schnell die er bei 200, 300, 400 usw. ankommt ist immer unterschiedlich. Außerdem versucht der Server den Code so schnell wie möglich auszuführen und verschlechtert somit die Performance für diese Zeit.
 
Zuletzt bearbeitet von einem Moderator:

Plugin00

Kuhfänger
Registriert
3 Februar 2013
Beiträge
71
Diamanten
0
Code:
  for (int i = 10; i >= 0; i--) {
  try {
      Threed.sleep(1000L);
      Bukkit.getServer().brodcastMessage("§d[Server] Reload in '" + i + "' sekunden.");
  } catch (NullPointerException ex){
     Bukkit.getServer().brodcastMessage("§d[Server] Fehler: '" + ex.getMessage + "'");
     e.printStackTrace();
  }

Habe ich mal kurz gemacht, Aber ob es geht könnte ich grade noch nicht Testen, :(
 
G

games6471

Guest
Code:
  for (int i = 10; i >= 0; i--) {
  try {
      Thre[COLOR="#FF0000"]a[/COLOR]d.sleep(1000L);
      Bukkit.getServer().bro[COLOR="#FF0000"]a[/COLOR]dcastMessage("§d[Server] Reload in '" + i + "' [COLOR="#FF0000"]S[/COLOR]ekunden.");
  } catch ([COLOR="#FF0000"]InterruptedException[/COLOR] ex){
     Bukkit.getServer().bro[COLOR="#FF0000"]a[/COLOR]dcastMessage("§d[Server] Fehler: '" + ex.getMessage[COLOR="#FF0000"]()[/COLOR] + "'");
     e[COLOR="#FF0000"]x[/COLOR].printStackTrace();
  }
 
Zuletzt bearbeitet von einem Moderator:
G

games6471

Guest
Ich noch nie. Für mich war sowas schon verständlich.

//Back to Topic

Stimmt bisher hat keiner dies erwähnt gehabt. Also beim verwenden von Thread.sleep oder ähnlichen Methoden sollte der Teil in einen asynchronen Thread ausgelagert werden. Dafür einfach einen extra Thread erstellen oder mit der BukkitSchedule die Methoden benutzen, die "Asynchronously" beinhalten. In diesem Fall:

runTaskAsynchronously

EDIT: Im deutschen Wiki steht dies sogar drinnen, aber nicht im Englischen?!


Wichtig ist: Wenn so ein Thread stoppt wird der ganze Server eingefroren.
 
Zuletzt bearbeitet von einem Moderator:
Oben