Bonjour !
Je développe actuellement en Java (sur Eclipse) 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>
1) 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 ?
2) 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.
3) 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 voici le code dans la classe de ma commande :
(oui je l'ai appelé CommandTest...)
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.
Donc, en résumé, voici les différents problèmes et questions :
a) Vaut-il mieux enregistrer du texte dans un txt (si on le peut) ou yml ?
b) Comment écrire dans ces fichiers avec du code Java ?
c) Comment créer de nouvelles sections avec les noms des joueurs automatiquement ?
d) Quel est le problème qui fait que la commande ne fonctionne pas ?
Si vous avez besoin du message d'erreur, je peux vous l'envoyer, pas de souci !
Voilà, c'est tout (c'est déjà beaucoup !)
Merci à ceux qui ont pris le temps pour lire mes questions et merci à ceux qui éventuellement m'aideront. Si vous avez la réponse ne serait-ce qu'à une question, j'en serai fort reconnaissant.
Amicalement,
iKreal (alias Koelite).
Je développe actuellement en Java (sur Eclipse) 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>
1) 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 ?
2) De plus, il faudrait un fichier dans lequel il pourrait avoir des sections qui s'ajoutent avec les pseudos des joueurs, ex :
Code:
messages:
pseudo1:
1:
2:
3:
4:
5:
pseudo2:
1:
2:
3:
4:
5:
3) 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 :
Code:
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.");
}
}
Code:
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;
}
}
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.
Donc, en résumé, voici les différents problèmes et questions :
a) Vaut-il mieux enregistrer du texte dans un txt (si on le peut) ou yml ?
b) Comment écrire dans ces fichiers avec du code Java ?
c) Comment créer de nouvelles sections avec les noms des joueurs automatiquement ?
d) Quel est le problème qui fait que la commande ne fonctionne pas ?
Si vous avez besoin du message d'erreur, je peux vous l'envoyer, pas de souci !
Voilà, c'est tout (c'est déjà beaucoup !)
Merci à ceux qui ont pris le temps pour lire mes questions et merci à ceux qui éventuellement m'aideront. Si vous avez la réponse ne serait-ce qu'à une question, j'en serai fort reconnaissant.
Amicalement,
iKreal (alias Koelite).