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

Spigot Brauche Hilfe bei einem Ladebalken

OnyxException

Minecrafter
Registriert
26 September 2018
Beiträge
22
Diamanten
300
Minecraft
Onyxzium
Logo mit Text.png

Hycraft - Trennlinie.png


Guten Abend, ich brauche Hilfe für ein Plugin dass ich für mein Netzwerk programmiere.
Es soll wenn der Spieler joint den Effekt Blindness bekommen, bis der Ladebalken bei 100% Prozent ist.
Es soll mit Hilfe der Title API ein Text kommen (Subtitle) wo alle 2 Sekunden ein Balken Grün wird.
Ich denke man muss da mit Schedulern arbeiten aber dies ist überhaupt nicht mein Fachgebiet.
Ich würde mich über jede Hilfe freuen, bei weiteren Fragen könnt ihr mich gerne anschreiben.

Hycraft - Trennlinie.png

java:
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l10%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l20%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l30%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l40%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l50%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §aLoading: §l60%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §aLoading: §l70%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §aLoading: §l80%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §aLoading: §l90%");
TitleAPI.sendSubtitle(player, 20, 100, 20, "§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §aLoading: §l100%");
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Code:
@EventHandler
    public void onJoin(PlayerJoinEvent event)
    {
        Player player = event.getPlayer();
        long t = System.currentTimeMillis();
        new BukkitRunnable() {
        {
          
            @Override
            public void run()
            {
                long d = System.currentTimeMillis();
                if(t>=(d-40*1)) {player.sendTitle("//Hier kommt die Uberschrift des Titel hin","§a§l█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l10%", 20, 100, 20);}
                if(t>=(d-40*2)) {player.sendTitle("","§a§l█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l20%", 20, 100, 20);}
                if(t>=(d-40*3)) {player.sendTitle("","§a§l█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l30%", 20, 100, 20);}
                if(t>=(d-40*4)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l40%", 20, 100, 20);}
                if(t>=(d-40*5)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §c█ §aLoading: §l50%", 20, 100, 20);}
                if(t>=(d-40*6)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §c█ §aLoading: §l60%", 20, 100, 20);}
                if(t>=(d-40*7)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §c█ §aLoading: §l70%", 20, 100, 20);}
                if(t>=(d-40*8)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §c█ §aLoading: §l80%", 20, 100, 20);}
                if(t>=(d-40*9)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §c█ §aLoading: §l90%", 20, 100, 20);}
                if(t>=(d-40*10)) {player.sendTitle("","§a§l█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §a█ §aLoading: §l100%", 20, 100, 20); cancel();}
            }
        }.runTaskTimer(plugin, 0L, 20L*2);
    }

Kurz zur mal dazu: Ob du jetzt Asnc oder Sync nutzt ist dir überlassen, dazu habe ich diese TitelApi nicht, und habe deswegen die Bukkit standart variante genommen. Persönlich bin ich mir zwar nicht mehr so sicher, ob man in if-Abfragen durch Klammersetztung noch Mathematische Berechnungen machen kann, sollte aber gehen.

Kurz wie es geht, eventuell ist es dir zwar egal, aber für alle anderen die durch google hierdrauf gestoßen sind:
Ich deklariere VOR dem Schedule den Server Zeitwert in Millisekunden. Und nochmals Im Scheduler selbst. Dann Prüfe ich ob der zweite Zeitwert minus 2 Sekunden mal die Anzahl de Prozent/10, ob dieser dann kleiner ist als der erste wert. (Eventuell muss man hier noch Laggs berücksichtigen, aber naja).
Dann am Ender der 100% mache ich noch ein cancel() und fertig. Ich hoffe es ist so richtig, ist ja noch früh am morgen :D
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Man kann das in 4 Zeilen machen, aber ich hab keine Lust die Methoden rauszusuchen und das ganze dann irgendwie zu testen. Jedenfalls ist das ein einfaches Closure mit dem Zähler dass sich am Ende selbst beendet, würde in Pseudocode irgendwie so aussehen, eventuell müsste man es anders bauen damit man im Callback Zugriff auf den Task hat.

Code:
int percentage = 0;
Task loadingTask = scheduler.addRepeating(() -> {
    output("loading at " + percentage);
    percentage += 10;
   
    if (percentage > 100)
        loadingTask.cancel();
})
 
Zuletzt bearbeitet:
Oben