Plugin Manipulation de Timer

TookieP

Bucheron
21 Octobre 2015
7
0
12
26
Bonjour, voici le problème que je rencontre aujourd'hui.

Ce que je veux : Un compte à rebours qui dure 10 minutes, et l'afficher en pourcentage, par exemple : "10 minutes = 100%", "9min59 seconds = 99.9%", "9min58 = 99,8%"

Ce que j'ai fais :
PHP:
int time = 600;
    int taskID;
    int generationTime;

    private void setTimer() throws InterruptedException {
        taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {

            @Override
            public void run() {
                if(time == 600) generationTime = 100;
                if(time == 599) generationTime = 99.9;
                if(time == 598) generationTime = 99,8;
                if(time == 597) generationTime = 99,7;
Bukkit.broadcastMessage("Generation time: " generationTime + "%");
                if (time == 0) {
                    time--;
                    Bukkit.getScheduler().cancelTask(taskID);
                }
            }

        }, 20, 20);
    }

Ce que j'obtient : Pour l'instant j'obtiens un bon résultat, mais c'est super long à faire, c'est assez chiant de mesurer chaque temps et les transformer en pourcentage seconde par seconde..
 

Detobel36

Créateur de plugins (PhoenixRebirth)
Support
17 Août 2012
10 531
24
2 247
347
27
Bruxelles - Belgique
www.phoenix-rebirth.fr
Salut,

PHP:
    final int initTime = 600;
    int time = initTime;
    int taskID;
    int generationTime;

    private void setTimer() throws InterruptedException {
        final DecimalFormat dec = new DecimalFormat("#0.00");

        taskID = Bukkit.getServer().getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), new Runnable() {

            @Override
            public void run() {
                Bukkit.broadcastMessage("Generation time: " + dec.format((double) time/initTime) + "%");

                if (time == 0) {
                    Bukkit.getScheduler().cancelTask(taskID);
                }
                time--;
            }

        }, 20L, 20L);
    }
A noter que ce code n'a pas été testé mais que l'idée est là. Il est possible qu'il y ai des erreurs de typages. A toi de chercher un peu et de débug ;)


Cordialement,
Detobel36