IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Problème de condition d' "égalité" d'argument


Sujet :

avec Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut Problème de condition d' "égalité" d'argument
    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 :

    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:
    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.

    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 : 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.");
    	}
    	
    }
    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
    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;
     
    	}
    }
    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.
    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).

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    On ne teste jamais l'égalité entre objets par == qui sert à tester l'identité, ce dont tu ne peux être sûr que quand c'est toi qui a instancié l'objet (et pour un argument, ce n'est pas le cas). Il te faut donc écrire :

    "load".equals(args[0]) et non pas args[0] == "load"
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 5
    Par défaut
    Merci pour cette aide, je m'en étais en effet rendu compte !

  4. #4
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Lorsque le problème est résolu, penser à passer la discussion en "résolu" (avec le bouton en bas).
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Wamp] Problème d'insertion avec quote d'un formulaire
    Par cyberdevelopment dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/08/2006, 18h55
  2. [SQL-Server] Problèmes de guillemets et quotes dans un INSERT
    Par gregb34 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/05/2006, 09h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo