Plugin Résolu Code en Java foireux

Bonsoir !

Merci Deto de ta réponse on tient le bon bout x) Cettte fois ci j'ai plus qu'une erreur :
Code:
p.setLevel(schedulTimer--);
                        //Si le compteur est fini
                        if(ptimer < 0) {
                            Bukkit.getScheduler().cancelTask(taskId);

et le dernier taskId est en rouge. Il ne peut pas initialiser la variable. J'ai essayé taskId = null; et = 0; mais ça n'a pas marché, de plus, je ne sais pas où mettre ces lignes. J'ai essayé un peu partout et ça lui convenais pas. Voilà ! :)

AlexFatta
 
Salut,

Suffit de définir taskId comme attribut de ta class:
PHP:
    private int taskId;
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
       
        // On vérifie que c'est bien un joueur
        if(!sender instanceof Player) {
                sender.sendMessage("Réservé aux joueurs");
                return false;
        }


        final Player p = (Player) sender;
        int ptimer = 0;

        String help = ChatColor.RED + "Merci de mettre une durée chiffrée " + ChatColor.GRAY + "(/timer <temps>)";
   
        if(label.equalsIgnoreCase("timer")){
            String Number = null;
         
            if(args.length == 1) {
                try {
                    ptimer = Integer.parseInt(args[0]);
                } catch(Exception e) { // flemme de trouver de tête quel est l'exception xD
                    p.sendMessage(help);
                    return false;
                }
             
                p.sendMessage(ChatColor.DARK_GREEN + "Ton timer vient de commencer !");
                p.setLevel(ptimer);
             
                final int finalPTimer = ptimer; // compatibilité java 7

                // La variable "plugin" c'est ton instance "main"
                taskId = Bukkit.getScheduler().runTaskTimer(plugin, new Runnable() {
                        int schedulTimer = finalPTimer;
                       
                        @Override
                        public void run() {
                            p.setLevel(schedulTimer--);
                            // Si le compteur à fini
                            if(schedulTimer < 0) {
                                Bukkit.getScheduler().cancelTask(taskId);
                            }
                        }
                    }, 20L, 20L).getTaskId(); // 20 ticks correspondent à une seconde


            } else {
                p.sendMessage(help);
            }
       
        }
   
        return false;
   
    }


Cordialement,
Detobel36
 
Super ! Cha fonctionne bien ! Bon bah j'ai encore du boulot avant de réussir à coder tout ça tout seul ^^ Merci à toi Deto ! Je met le code à la suite pour les curieux ;)

Merci à toi Deto (perso j'aurai pas eu l'idée de l'attribut de class x) )

PHP:
package com.funtimer.fr;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;

public class main extends JavaPlugin{

    public void onEnable(){
        System.out.println("Plugin FunTimer activé !");
    }
    
    public void onDisable(){
        System.out.println("Plugin FunTimer désactivé !");
        
    }
    
    private int taskId;
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args){
        
        if(!(sender instanceof Player)) {
            sender.sendMessage("§cReservé aux joueurs !");
            return false;
        }
        
        Player p = (Player) sender;
        int ptimer = 0;
        
        String help = ChatColor.RED + "Merci de rentrer une durée chifrée !" + ChatColor.GRAY + "/timer <durée>";
        
        if(label.equalsIgnoreCase("timer")){
            if(args.length == 1){
                try {
                    ptimer = Integer.parseInt(args[0]);
                } catch(Exception e) {
                    p.sendMessage(help);
                    return false;
                }
                
                p.sendMessage(ChatColor.DARK_GREEN + "Ton timer vient de commencer !");
                p.setLevel(ptimer);
                
                final int finalPTimer = ptimer; // compatibilité java 7
                
                // La variable "plugin" c'est ton instance "main"
                taskId = Bukkit.getScheduler().runTaskTimer(this, new Runnable() {
                    int schedulTimer = finalPTimer;
                    
                    @Override
                    public void run() {
                        p.setLevel(schedulTimer--);
                        //Si le compteur est fini
                        if(schedulTimer < 0) {
                            Bukkit.getScheduler().cancelTask(taskId);
                        }
                    }
                    
                    
                }, 20, 20).getTaskId();
            } else {
                p.sendMessage(help);
            }
                
            
        }
        
        return false;
        
    }

}

AlexFatta
 
  • J'aime
Reactions: Detobel36