Bonjour ! Ou plutôt bonsoir,
Je développe actuellement en Java avec Spigot pour commencer à créer des plugins Minecraft.
Le problème est sans doute très facilement résoluble mais je bloque depuis plus d'une heure et j'ai d'autres questions à côté.
Je souhaite créer une nouvelle commande avec plusieurs arguments, commande qui enregistre des messages, des mots, pour pouvoir les écrire plus rapidement.
Voici la syntaxe de ma commande : /message save,load,delete <numéro> <message>
En fait, je souhaite que le joueur puisse enregistrer 5 messages dans un fichier yml mais je me demande si ce ne serait pas possible à les écrire dans un fichier txt ? <--- Première question
De plus, il faudrait un fichier dans lequel il pourrait avoir des sections qui s'ajoutent avec les pseudos des joueurs, ex :
Et je ne sais pas comment écrire dans ces fichiers à partir de Java... J'ai également entendu parler de "skript", ce qui m'a perdu dans cette broussaille.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 messages: pseudo1: 1: 2: 3: 4: 5: pseudo2: 1: 2: 3: 4: 5:
Ensuite, je me suis dit qu'avant de sauvegarder les messages, je pourrais déjà essayer d'en charger. Le joueur pourrait alors utiliser la commande : /message load <numéro>.
Voici dans la classe principale les quelques lignes de codes concernant tout cela :
Et le code dans la classe de ma commande :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package fr.ikreal.monplugin; import org.bukkit.plugin.java.JavaPlugin; import fr.ikreal.monplugin.commands.CommandTest; public class MonPlugin extends JavaPlugin { @Override public void onEnable() { saveDefaultConfig(); System.out.println("Le plugin vient de démarrer."); getCommand("message").setExecutor(new CommandTest(this)); getServer().getPluginManager().registerEvents(new MonPluginListeners(), this); } @Override public void onDisable() { System.out.println("Le plugin vient de s'éteindre."); } }
Le problème ici, c'est que lorsque je lance dans le jeu la commande /message load 1, rien ne se passe, comme si la condition (args[0] == "load") n'était pas vérifiée... J'ai testé en mettant une sortie de texte dans la console (on peut le voir sur le code ci-dessus) mais aucun message n'apparaît.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 package fr.ikreal.monplugin.commands; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import fr.ikreal.monplugin.MonPlugin; public class CommandTest implements CommandExecutor { private MonPlugin main; public CommandTest(MonPlugin monPlugin) { this.main = monPlugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String msg, String[] args) { if(sender instanceof Player) { Player player = (Player)sender; if(cmd.getName().equalsIgnoreCase("message")) { //message ==> pas assez d'arguments if(args.length <2) { player.sendMessage("§4Erreur de syntaxe : §e/message §asave,load,delete §b<numéro> §c(<message>)"); } //message <text> if(args.length >=2) { if(args.length == 2 && args[0] == "load") { System.out.println("Load trouvé"); player.sendMessage(main.getConfig().getString("messages." + args[1]).replaceAll("&", "§")); return true; } if(args.length ==3 && args[0] == "save") { //Code pour enregistrer des messages dans le fichier config.yml } } } } return false; } }
Voilà donc mes problèmes et questions, en résumé :
1) Vaut-il mieux enregistrer du texte dans un txt (si on le peut) ou yml ?
2) Comment écrire dans ces fichiers avec du code Java ?
3) Comment créer de nouvelles sections avec les noms des joueurs automatiquement ?
4) Quel est le problème qui fait que la commande ne fonctionne pas ?
Je sais que ça fait beaucoup, mais si vous pouvez m'éclaircir sur certains points et m'aider un petit peu, j'en serai fort reconnaissant.
Merci d'avoir pris le temps de lire,
Merci pour les éventuelles futures aides,
Cordialement,
Koelite (alias iKreal).
Partager