Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Java/Minecraft] Problème d'IDE ou de JRE ?

    23 juillet 2016 à 19:16:25

    Bonjour a vous,

    Je viens ici car j'ai un problème au niveau d'un code Java, pour un plugin Minecraft.

    Je m'adresse donc à tous ceux qui codent le java Minecraft car c'est a mon avis très différent du Java normal. Je me pointe sur ce site car j'y ai vu un cours sur le Java qui m'interresse grandement, je le suis lorsque j'en ai le temps (https://openclassrooms.com/courses/apprenez-a-programmer-en-java/).

    Je viens donc ici car je débute en codage Java et j'ai créé un petit code permettant de mettre le jour/la nuit/retirer la pluie. Mais lorsque je l'exporte (J'utilise Eclipse) j'ai de temps en temps des erreurs. Sur le même code beaucoup plus soft (l'ancienne version), des fois ils fonctionne des fois non. Je m'explique : J'exporte le code, le serveur n'arrive pas à démarrer le plugin (Erreurs lors du reload et non-"loadage" lors du démarrage). Ensuite je le ré-exporte sans toucher à rien et là, il fonctionne. o_O

    Bref, je suis ici car j'ai donc mon code, qui ne fonctionne pas, je n'ai aucune idée d'où peut venir l'erreur. Je vais vous expliquer ce qu'il se passe en détails. Lorsque je l'exporte, tout va bien. Je le mets sur le serveur et là j'ai un problème, le code ne fonctionne pas, logique, rien ne fonctionne dès la première fois X°). Surtout lorsque l'on est débutant :)

    Je regarde l'erreur et la je voie que en gros, le serveur n'arrive pas à accéder à la classe Main de mon plugin (J'en ai fait qu'une seule, je n'arrive pas à les relier entre elles sinon xD. Je vais donc sur JD-GUI, et quand j'ouvre mon plugin, je vais dans la classe Main, et le logiciel m'écrit (//INTERNAL ERROR//). Si vous pouvez m'expliquer d'où vient le problème pour ne pas me retrouver dans une situation semblable dans le futur.

    Du coup pour en revenir à ma question d'origine, le problème vient de mon java ou d'éclipse ?? (Il y a un certain temps, j'avais téléchargé le JDK sur le site d'Oracle et là mon java s'est complètement cassé. Pour ouvrir pas mal d'applications java je dois désormais utiliser un raccourcis CMD qui définit l'application d'ouverture --')

    Ensuite, après deux trois bidouillages, je ne sais pas réellement ce que j'ai fait xD, j'arrive enfin à exporter mon plugin, le serveur le lit et la c'est la joie ! Mais quand je vais sur le serveur, je tape la commande et en retour, au lieu d'avoir l’exécution de ma commande quand je la tape, j'ai le message définit par usage dans le plugin.yml qui s'affiche. Déception...

    Voila j'espère que vous trouverez la solution à mes problèmes :) . J'espère aussi vous avoir assez détaillé mon problème.

    Cordialement,

    lolilolulolilol

    (C'est mon pseudo, mais je viens de voir que je me suis inscrit avec mon vrai nom/prénom, alors à vous de voir, soit lolilolulolilol (loli puis lolu ensuite re- loli pour terminer avec lol, c'est 15 caractères xD) soit Steven HENRY)

    Au fait le code ça peut vous être utile xD :

     http://pastebin.com/6PxqdgPc

    -
    Edité par StevenHenry1 23 juillet 2016 à 19:25:37

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      23 juillet 2016 à 22:50:00

      Bonjour,

      >J'en ai fait qu'une seule, je n'arrive pas à les relier entre elles sinon xD


      Si tu as si peu de base, je t'invite à te familiariser avec Java sans les API's de Minecraft avant de faire quoi que ce soit.


      Sinon, concernant ton erreur lors de l'export, ecplise pense que ton fichier yaml est invalide. Ne me demande pas pourquoi, même eclipse n'en a aucune idée lorsque tu report le problème.


      L'erreur survient généralement quand tu as modifié ton fichier plusieurs fois, il suffit alors de répéter l'opération pour que l'IDE l'accepte.


      >Mais quand je vais sur le serveur, je tape la commande et en retour, au lieu d'avoir l’exécution de ma commande quand je la tape, j'ai le message définit par usage dans le plugin.yml qui s'affiche. Déception...


      Parce que, par défaut, si tu ne respectes pas la syntaxe de ta commande, le serveur renvoie la description de ton fichier yaml empaqueté dans ton .jar pour t'éclairer. (mais encore faut-il que ton fichier yml contienne quelque chose)



      -
      Edité par Anonyme 23 juillet 2016 à 22:53:24

      • Partager sur Facebook
      • Partager sur Twitter
        23 juillet 2016 à 23:43:16

        Merci de ta réponse mais je ne pense pas qu'il y ait d'erreurs dans mon plugin.yml.

        Voici son contenu :

        /////////////////////////////////

        main: net.lolilolulolilol.Main

        name: FastWorldManager

        author: lolilolulolilol

        version: 1.0

        commands:

          w:

            description: Weather clear rapide

            usage: /w

            permission: w.use

          d:

            description: Time set 6000 rapide

            usage: /d

            permission: d.use

          n:

            description: Time set 18000 rapide

            usage: /n

            permission: n.use

        permissions:

          w.use:

            description: Utiliser le /w

            default: true

          d.use:

            description: Utiliser le /d

            default: true

          n.use:

            description: Utiliser le /n

            default: true

        /////////////////////////////

        Et du coup, comme inscrit dans mon code, le fichier config.yml s'esr créé avec tout ce qu'il faut :).

        //////////////////////////////

        WeatherCommands:

        - w

        - we

        DayCommands:

        - d

        - day

        - jour

        NightCommands:

        - n

        - night

        - nuit

        NoPermission: "&cTu n'as pas la permission d'ex\xe9cuter cette commande !"

        ConsolePermission: "&4Tu ne peux taper cette commande qu'en \xe9tant joueur."

        TypeCommandPermissionWeather: w.use

        MessageWeather: "&eVous avez retir\xe9 la pluie"

        TypeCommandPermissionDay: d.use

        MessageDay: '&eVous avez mis le jour'

        TypeCommandPermissionNight: n.use

        MessageNight: '&eVous avez mis la nuit'

        Usage: '&4Il faut simplement taper &c"/w" &4!'

        /////////////////////////////////////////////////
        Merci de me consacrer de votre temps :). Peut on m'expliquer quelles sont les erreurs de mon code s'il y en a xDD.
        Je suis pas très bon dans l'milieu ;) .
        Peut-être que l'erreur vient du break. Je ne sais pas trop quand l'utiliser en fait, mais comme j'ai une boucle for il faut bien en sortir a un moment. Donc j'ai pris le break, puisque je ne sais pas trop si c'est possible avec un return. De toute manière les break sont beaucoup plus simple a manier. Juste "break;" et c'est fini ;)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          24 juillet 2016 à 2:36:20

          L'indentation de cette méthode n'est pas claire:

            @EventHandler
            public void onCommand(PlayerCommandPreprocessEvent e, CommandSender sender)
            {
               
                if(sender instanceof Player){
          
                List<String> cmdW = getConfig().getStringList("WeatherCommands");
                List<String> cmdD = getConfig().getStringList("DayCommands");
                List<String> cmdN = getConfig().getStringList("NightCommands");        
                String msg = e.getMessage();
                String[] args = msg.split(" ");
                Player p = e.getPlayer();
               
                for(String w : cmdW){
                  if(args[0].equalsIgnoreCase("/" + w)) {
                      if(p.hasPermission(getConfig().getString("TypeCommandPermissionWeather"))){
                        e.setCancelled(true);
                        if (args.length == 0){
                          p.performCommand("weather clear");
                          p.sendMessage(getConfig().getString("MessageWeather"));
                        }else p.sendMessage(getConfig().getString("Usage"));
                      }
                   }break;
                }
               
                for(String d : cmdD){
                  if(args[0].equalsIgnoreCase("/" + d)) {
                      if(p.hasPermission(getConfig().getString("TypeCommandPermissionDay"))){
                        e.setCancelled(true);
                        if (args.length == 0){
                          p.getWorld().setTime(6000);
                          p.sendMessage(getConfig().getString("MessageDay"));
                        }else p.sendMessage(getConfig().getString("Usage"));
                         break;
              }
            }    
          }
          
          </pre>

          >Merci de ta réponse mais je ne pense pas qu'il y ait d'erreurs dans mon plugin.yml.

          Je n'ai pas dit qu'il y avait une erreur dans ton fichier yml, relis mon message si besoin.

          >Je suis pas très bon dans l'milieu ;) .

          Justement, si on n'est pas bon, on pratique avant d'entreprendre un projet. (quel qu'il soit)

          >Peut-être que l'erreur vient du break. Je ne sais pas trop quand l'utiliser en fait,

          Je te conseille alors de t'informer, ce n'est pas quand l'erreur sera irréparable qu'il faudra essayer de rattraper le coup. (en informatique, ce n'est généralement jamais irréparable, mais c'est pas une raison de foncer tête baissée)

          >mais comme j'ai une boucle for il faut bien en sortir a un moment.

          Sauf exception, une boucle for est capable de mettre un terme à son exécution toute seule, inutile donc d'utiliser break. D'ailleurs ça n'aurait aucun sens.

          >Donc j'ai pris le break, puisque je ne sais pas trop si c'est possible avec un return. De toute manière les break sont beaucoup plus simple a manier. Juste "break;" et c'est fini ;)

          return et break n'ont rien à voir. L'un permet de récupérer une donnée en sortie d'une fonction et met un terme à la fonction courante, l'autre met un terme seulement aux boucles.

          Tu ne verras jamais quelque chose de ce style:

          private final String test()
          {
          
          break; //aucun sens
          

          }

          </pre>

          Bon courage.

          -
          Edité par Anonyme 24 juillet 2016 à 2:36:58

          • Partager sur Facebook
          • Partager sur Twitter

          [Java/Minecraft] Problème d'IDE ou de JRE ?

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown