• 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 dringen Hilfe bei einem Coutdown.

HerrSnow

Minecrafter
Registriert
1 November 2015
Beiträge
1
Diamanten
0
Code:
package me.herrsnow.main;



import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;


public class Start implements Listener{
  
    @EventHandler
    public void onJoin(PlayerJoinEvent event) {
        Player player = (Player)event.getPlayer();
        if(player.getServer().getOnlinePlayers().size() >= 1){
            player.getServer().broadcastMessage(ChatColor.YELLOW +">> Adventure" +ChatColor.WHITE +" | " + ChatColor.GRAY + "Spiel startet in 10sec");
            Bukkit.getScheduler().runTaskLaterAsynchronously((Plugin) this, new Runnable() {
              
                @Override
                public void run() {
                    player.sendMessage("§4§lTest ");
                    // TODO Auto-generated method stub
                  
                }
            }, 5*20);
        }
    }
      

}

Ich bekomme die Nachricht nicht ,die eigentlich nach 5sec kommen sollte
 
Zuletzt bearbeitet:

MrPyro13

Workaholic
Registriert
29 April 2013
Beiträge
826
Diamanten
300
Minecraft
MrPyro13
Hallo,

1. Wird ein asynchroner Scheduler für deine Zwecke nicht benötigt und falls doch, dann bitte keine Bukkit Methoden in einem asynchronen Runnable
2. Musst du eine Instanz deiner Hauptklasse (eines Plugin(s)) übergeben und nicht deine Start-Klasse zu einem Plugin casten

Fehler sind dick hervorgehoben:
Bukkit.getScheduler().runTaskLaterAsynchronously((Plugin) this, new Runnable()

Des Weiteren brauchst du den Player nicht casten...
Player player = (Player)event.getPlayer();

PS: Um deine Fehler zu beheben, werden natürlich Java-Basics vorausgesetzt ;)
 

Microsamp

Minecrafter
Registriert
30 Mai 2015
Beiträge
19
Diamanten
300
dann bitte keine Bukkit Methoden in einem asynchronen Runnable
Die player.sendMessage(String) Methode ist hier eine Ausnahme, da diese laut Bukkit Thread-Safety ist und somit gerne verwendet werden kann. Der Rest stimmt von deinen Aussagen. Ps: Viele Methoden der API sind Thread-Safety, aber vor allem darf niemals die Welt Asynchron bearbeitet werden.
 
Oben