You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

BlvckBytes

User / Kunde

  • "BlvckBytes" is male
  • "BlvckBytes" started this thread

Posts: 797

Location: (*blvckbytes).home

Occupation: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Send private message

1

Thursday, July 27th 2017, 1:30am

Countdown-Klasse -> Für Anfänger geeignet!

Hey,

ich habe in letzter Zeit des öfteren ( privat ) gesehen, dass Anfänger meißt Probleme mit Countdowns haben, manche verschachteln dann viele runTaskLater's ineinander, und das ist natürlich ein No-Go. Hier möchte ich mit euch eine Benutzerfreundliche Klasse teilen, welche sehr einfach zu benutzen ist.

Klasse:

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package me.blvckbytes.lottosystem;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

public class Countdown {

    private int duration;
    private String singular, plural, text;
    private int[] shouts;
    private JavaPlugin main;

    /* Runs at Instantiating */
    public Countdown( int duration, int[] shouts, String singular, String plural, String text, JavaPlugin main ) {
        this.duration = duration;
        this.shouts = shouts;
        this.singular = singular;
        this.plural = plural;
        this.text = text;
        this.main = main;

        start();
    }

    /* Starts the Countdown */
    private void start() {
        Bukkit.getScheduler().scheduleSyncRepeatingTask( main, new Runnable() {

            @Override
            public void run() {


                if( isShout( duration ) ) {
                    String unit = duration + " " + ( duration == 1 ? singular : plural );
                    Bukkit.broadcastMessage( text.replace( "%time%", unit ) );
                }

                if( duration == 0 ) {
                    // Run your Code here
                    return;
                }

                duration--;
            }

        }, 0L, 20L );
    }

    /* Checks if value is a member of the Shout-Array */
    private boolean isShout( int value ) {
        for( int x : shouts ) {
            if( x == value )
                return true;
        }
        return false;
    }
}


Aufrufen:

Source code

1
2
3
4
5
6
7
8
9
10
private void runCountdown() {

    int dauer = 25;
    int[] zeiten = new int[]{ 25, 20, 10, 5, 4, 3, 2, 1 };
    String singular = "Sekunde";
    String plural = "Sekunden";
    String message = ChatColor.GOLD + "Countdown " + ChatColor.GREEN + " Das Spiel startet in %time%!";

    new Countdown( dauer, zeiten, singular, plural, message, this );
}


Ergebnis:


Ich hoffe, dass ich damit vielleicht jemandem helfen konnte.

LG BlvckBytes

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net