Gui Label verschwinden lassen

  • Da ich mich ja nicht mit der programmierung auskenne wollte ich mal was fragen.


    ich habe ein kleines plugin mit einem gui lable und gui und gui panel, wenn ich dies nun starte wird mir der text auch im Spiel angezeit.
    Nun würde ich aber gern das der Text nach einer gewissen zeit ( 30 Sec ) wieder verschwindet. Habe schon einiges versucht bekomme aber nur
    Fehlermeldungen rein.
    Auch den Text in einen file reinzuschreiben bekomm ich nicht hin, obwohl dieses thema hier ja auch schon angesprochen wurde.
    über hilfe würde ich mich freuen. danke

  • Da ich es nicht wirklich in Textform erklären kann hier mal eine Art grobes Beispiel wie ich es machen würde:


    Code
    public class Text30S extends Plugin implements Listener {
    @EventMethod Threading.Threaded //runs that method parallelized
    public void onPlayerConnect(PlayerConnectEvent e){
    //add Label to player
    Thread.sleep(30000);//wait30000 milliseconds -> 30 seconds
    //remove label from player
    }
    }

    Sorry für die Englischen Kommentare ist so gewöhnungssache :D

  • Der sauberste Ansatz, um etwas zeitverzögert auszuführen, wäre die Verwendung von Timern (Wichtig: Auf den Import achten, also Timer aus net.risingworld.api importieren) :) Du könntest also in die PlayerConnectEvent oder besser noch PlayerSpawnEvent Methode folgendes reinpacken:


    Der Ansatz von @Galveston01 würde natürlich auch funktionieren, nur ist es hier unbedingt wichtig (wie in seinem Beispiel), dass der Threading Modus der Event-Methode auf "Threaded" gestellt wird (sonst bleibt der halbe Server für 30 Sekunden stehen) ;) Hier muss man jedoch berücksichtigen, dass diese Eventmethode dann immer in einem separaten Thread ausgeführt wird, man sich also zB beim Zugriff auf globale Variablen ggf. selbst um eine angemessene Synchronisierung kümmern muss. Da Multithreading teilweise sehr komplex sein kann, würde ich Anfängern dringlichst die Timer-Methode ans Herz legen (zumal die Verwendung von Threaded-Events in erster Linie nur dann sinnvoll ist, wenn wirklich rechenintensive Operationen durchgeführt werden sollen - davon sind wir in diesem Beispiel meilenweit entfernt, sodass ein Timer eindeutig resourcensparender wäre).

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!