Salut,
Pour information on ne push normalement jamais les fichiers compilé (donc le dossier "bin" n'a rien a faire sur github). Pour éviter cela, on utilise un fichier nommé ".gitignore" qui permet de mettre tous les dossiers que l'on ne veut pas envoyé en ligne.
Egalement pour information:
Java:
System.out.println("Le plugin BusinessWorld vient de s'allumer");
C'est très bien pour du Java de base... Ici tu fais un plugin.
System.out
c'est pas tip top.
Utilise le système de log de bukkig:
Bukkit.getLogger().info("ton message");
. Ou mieux, le logger attaché à ton plugin (dans ton main, ou en récupérant l'instant du main):
getLogger().info("ton message");
Au passage j'ai remarqué que ton code n'était pas encodé en UTF-8. Prend le temps de configurer ton IDE, c'est quand même la norme aujourd'hui
Java:
getCommand("test").setExecutor(new CommandTest());
getCommand("alert").setExecutor(new CommandTest());
Donc la tu as créé deux fois l'objet "CommandTest"... Pourquoi faire ?
Java:
final CommandTest cmdTest = new CommandTest();
getCommand("test").setExecutor(cmdTest);
getCommand("alert").setExecutor(cmdTest);
Pareil pour le "GameCommand" hein
Bon maintenant "CommandTest":
Java:
if(cmd.getName().equalsIgnoreCase("bw test")) {
Dans ma tête (je n'ai pas fait le test, donc je me trompe peut-être), le "cmd" continent uniquement la commande. Donc si tu tapes:
/super nouvelle commande
cmd
contient "super" et la variable
args
contient ["nouvelle", "commande"].
Surtout que dans le main tu dis que la commande c'est soit "test", soit "alert"... Donc tu ne peux pas vérifié si la commande égale "bw".
Y a quelque chose de pas logique la...
Bon dans GameCommand:
Java:
Mine mine = new Mine(false, false);
Tu es au courant que tu créé
un nouvel objet Mine chaque fois qu'on fait la commande... (au passage, même si le joueur tape la commande
/moneygivechrono
m'enfin c'est un détail ça).
Dans ta condition pour arrêté la boucle tu mets ça:
Java:
minepa.schedule(new TimerTask() {
@Override
public void run() {
if(!mine.getMineP()) {
...
}
}
});
Sauf qu'en fait une fois la commande exécuté tu ne touche plus à l'objet "mine". Vu que tu en recréer un nouveau (c'est bien pour ça qu'on met "new").
Pour bien t'expliquer, quand je fait la commande
/mine
(sans argument). Il y a une erreur, mais tu créé quand même une instance de l'objet "Mine". Appelons cette instance "mine1". (Exactement comme pour les joueurs. Tu as un objet "Player" et une instance par joueur "Player(Detobel36)" par exemple).
Si maintenant je fais
/mine p
, une nouvelle instance "Mine" est créé, disons "mine2". Et le compteur est lancé sur "mine2".
Si maintenant je fais
/village
et bien il créé encore une instance de "Mine", disons "mine3" et il fait un
setMineP(false)
sur l'instance "mine3". Pas sur l'instance "mine2".
Pour corrigé ton problème il faut sortir la variable de la méthode...
Je t'ai rapidement corrigé ton fichier ici:
https://github.com/HeliCrypt-mc/business-world/pull/1
Il y a beaucoup de choses à améliorer si tu veux un code nickel... Mais au moins ici cela devrait fontionner.
Cordialement,
Detobel36