MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Problème avec MySQL

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.7.10
    12 Messages 4 Publieurs 1.3k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • C Hors-ligne
      Cobra45
      dernière édition par robin4002

      Bonjour,

      J’ai récemment crée un GUI pour faire un ATM.
      J’ai relié mon mod à une base MySQL pour récupérer les valeurs dont j’ai besoin.

      Tout fonctionne très bien quand je debug sur Eclipse, mais lorsque j’exporte le mod et que je le met sur mon jeu, il n’est pas capable de récupérer les valeurs sur la base (ça reste à 0)

      Que faut-il faire pour que ca fonctionne ?

      Voici les deux classes concernées :

      :::

      package fr.mod.gui;
      
      public class GuiATM extends GuiScreen implements IGuiHandler {
      
      private GuiTextField textfield1;
      
      int guiWidth = 100;
      int guiHeight = 150;
      
      @Override
      public void drawScreen(int x, int y, float ticks) {
      int guiX = (width - guiWidth) / 2;
      int guiY = (height - guiHeight) / 2;
      GL11.glColor4f(1, 1, 1, 1);
      drawDefaultBackground();
      mc.renderEngine.bindTexture(new ResourceLocation(Mod.MODID, "textures/gui/GuiATM.png"));
      drawTexturedModalRect(guiX, guiY, 0, 0, guiWidth, guiHeight);
         fontRendererObj.drawString("ATM", guiX + 5, guiY + 2, 0xF8F8FF);
         fontRendererObj.drawString("Liquide " + MySQL.liquide + " $", guiX + 5, guiY + 25, 0xF8F8FF);
         fontRendererObj.drawString("Banque " + MySQL.banque + " $", guiX + 5, guiY + 35, 0xF8F8FF);
         textfield1.drawTextBox();
      super.drawScreen(x, y, ticks);
      
      }
      
      @Override
      public void initGui() {
      MySQL.LoadAccount(Minecraft.getMinecraft().thePlayer.getDisplayName());
      int guiX = (width - guiWidth) / 2;
      int guiY = (height - guiHeight) / 2;
         super.initGui();
         this.buttonList.add(new GuiButton(0, guiX + 6, guiY + 75 + 5, 88, 20, "Retirer"));
         this.buttonList.add(new GuiButton(1, guiX + 6, guiY + 95 + 5, 88, 20, "Déposer"));
      
         this.textfield1 = new GuiTextField(this.fontRendererObj, this.width / 2 - 42, this.height / 2 -20, 85, 20);
         textfield1.setMaxStringLength(10);
         textfield1.setText("");
         textfield1.setFocused(true);
      }
      
      @Override
      protected void actionPerformed(GuiButton B)
      {
       if(B.id == 0)
       {
               if(!(textfield1.getText() == "")) {
                   int valeur = Integer.parseInt(textfield1.getText());
                   if(valeur <= MySQL.banque) {
                   Minecraft.getMinecraft().displayGuiScreen(null);
                   Minecraft.getMinecraft().thePlayer.sendChatMessage("/atm1 " + textfield1.getText());
                   }
               }
      
                }
      
              }
      
      @Override
      protected void keyTyped(char typedChar, int KeyCode) {
      if(KeyCode == Keyboard.KEY_ESCAPE || KeyCode == Keyboard.KEY_BACK || KeyCode == Keyboard.KEY_0  || KeyCode == Keyboard.KEY_1 || KeyCode == Keyboard.KEY_2 || KeyCode == Keyboard.KEY_3 || KeyCode == Keyboard.KEY_4 || KeyCode == Keyboard.KEY_5 || KeyCode == Keyboard.KEY_6 || KeyCode == Keyboard.KEY_7 || KeyCode == Keyboard.KEY_8 || KeyCode == Keyboard.KEY_9) {
      textfield1.textboxKeyTyped(typedChar, KeyCode);
      super.keyTyped(typedChar, KeyCode);
      }
      
      }
      
      @Override
      protected void mouseClicked(int mouseX, int mouseY, int mouseButton) {
      textfield1.mouseClicked(mouseX, mouseY, mouseButton);
      super.mouseClicked(mouseX, mouseY, mouseButton);
      }
      
      @Override
      public void updateScreen() {
      textfield1.updateCursorCounter();
      }
      
      @Override
      public Object getServerGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
      // TODO Auto-generated method stub
      return null;
      }
      
      @Override
      public Object getClientGuiElement(int ID, EntityPlayer player, World world, int x, int y, int z) {
      // TODO Auto-generated method stub
      return null;
      }
      }
      
      

      :::

      :::

      package fr.mod.network;
      
      import net.minecraft.client.entity.EntityClientPlayerMP;
      
      public class MySQL {
      
      public static int liquide;
      public static int banque;
      
      public static void LoadAccount(String pseudo) {
      
      String url = "x";
      String user = "x";
      String pass = "x";
      
      Connection conn=null;
      try {
      Class.forName("com.mysql.jdbc.Driver");
      conn=DriverManager.getConnection(url,user,pass);
      
      } catch (Exception e) {
      System.out.println("Echec");
      e.printStackTrace();
      }
      
      try {
      Statement st=conn.createStatement();
            ResultSet resultat=st.executeQuery("SELECT liquide,banque from comptes where pseudo ='" + pseudo + "'");
            while(resultat.next()) {
      liquide=resultat.getInt(1);
      banque=resultat.getInt(2);
      System.out.println(liquide);
      System.out.println(banque);
      }
      
      } catch (Exception e) {
      e.printStackTrace();
      }
      }
      
      }
      
      

      :::

      Merci d’avance !

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Salut,
        Est-ce qu’il y a une erreur dans la console ?

        Aussi, ta conception est mauvaise, le client ne devrait pas accéder à la base.
        C’est au serveur de le faire, puis il doit envoyer les valeurs au client via un paquet.

        1 réponse Dernière réponse Répondre Citer 0
        • C Hors-ligne
          Cobra45
          dernière édition par

          @‘robin4002’:

          Salut,
          Est-ce qu’il y a une erreur dans la console ?

          Aussi, ta conception est mauvaise, le client ne devrait pas accéder à la base.
          C’est au serveur de le faire, puis il doit envoyer les valeurs au client via un paquet.

          Étant donné que j’exporte le mod, j’ai pas d’accès à la console sur mon jeu.
          Par contre, quand je regarde la console sur Eclipse y’a aucune erreur et tout fonctionne, c’est que quand je l’exporte que ça deconne et ça ne marche ni en solo ni en multi.

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            fichier latest.log dans le dossier .minecraft/logs pour avoir les logs en prod.

            1 réponse Dernière réponse Répondre Citer 0
            • C Hors-ligne
              Cobra45
              dernière édition par

              @‘robin4002’:

              fichier latest.log dans le dossier .minecraft/logs pour avoir les logs en prod.

              Y’a pas l’air d’y avoir grand chose, quand j’effectue la commande y’a ça :

              :::

              [23:08:53] [Server thread/INFO]: HyperKut[local:E:85e2c1f9] logged in with entity id 329 at (-250.59667834524106, 70.0, 118.71005554112752)
              [23:08:53] [Server thread/INFO]: HyperKut a rejoint la partie
              [23:08:55] [Server thread/WARN]: Can't keep up! Did the system time change, or is the server overloaded? Running 2128ms behind, skipping 42 tick(s)
              [23:08:57] [Server thread/INFO]: Saving and pausing game…
              [23:08:57] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Overworld
              [23:08:57] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Nether
              [23:08:57] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/The End
              [23:09:09] [Server thread/INFO]: Saving and pausing game…
              [23:09:09] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Overworld
              [23:09:09] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Nether
              [23:09:09] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/The End
              [23:09:50] [Server thread/INFO]: Saving and pausing game…
              [23:09:51] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Overworld
              [23:09:51] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/Nether
              [23:09:51] [Server thread/INFO]: Saving chunks for level 'Nouveau monde'/The End
              

              :::

              1 réponse Dernière réponse Répondre Citer 0
              • Superloup10S Hors-ligne
                Superloup10 Modérateurs
                dernière édition par

                Il y a plusieurs problèmes :

                • comme Robin l’a indiqué, seul le serveur devrait avoir accès à la BDD.
                • ta méthode pour récupérer les données grâce aux pseudo des joueurs est foireuse, c’est le UUID qui devrait être utiliser, il est le seul qui ne peut pas être modifier par le joueur.

                Peut-on voir ton build.gradle ?

                Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                1 réponse Dernière réponse Répondre Citer 0
                • C Hors-ligne
                  Cobra45
                  dernière édition par

                  @‘Superloup10’:

                  Il y a plusieurs problèmes :

                  • comme Robin l’a indiqué, seul le serveur devrait avoir accès à la BDD.
                  • ta méthode pour récupérer les données grâce aux pseudo des joueurs est foireuse, c’est le UUID qui devrait être utiliser, il est le seul qui ne peut pas être modifier par le joueur.

                  Peut-on voir ton build.gradle ?

                  Oui pour les pb je sais c’est pas sécurisé, mais c’était juste histoire de tester si ça fonctionnait.

                  Voilà mon build.gradle :

                  :::

                  buildscript {
                     repositories {
                         mavenCentral()
                         maven {
                             name = "forge"
                             url = "http://files.minecraftforge.net/maven"
                         }
                         maven {
                             name = "sonatype"
                             url = "https://oss.sonatype.org/content/repositories/snapshots/"
                         }
                     }
                     dependencies {
                         classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
                     }
                  }
                  
                  apply plugin: 'forge'
                  
                  version = "1.0"
                  group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
                  archivesBaseName = "modid"
                  
                  minecraft {
                     version = "1.7.10-10.13.4.1558-1.7.10"
                     runDir = "eclipse"
                  }
                  
                  dependencies {
                     // you may put jars on which you depend on in ./libs
                     // or you may define them like so..
                     //compile "some.group:artifact:version:classifier"
                     //compile "some.group:artifact:version"
                  
                     // real examples
                     //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev'  // adds buildcraft to the dev env
                     //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env
                  
                     // for more info…
                     // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html
                     // http://www.gradle.org/docs/current/userguide/dependency_management.html
                  
                  }
                  
                  processResources
                  {
                     // this will ensure that this task is redone when the versions change.
                     inputs.property "version", project.version
                     inputs.property "mcversion", project.minecraft.version
                  
                     // replace stuff in mcmod.info, nothing else
                     from(sourceSets.main.resources.srcDirs) {
                         include 'mcmod.info'
                  
                         // replace version and mcversion
                         expand 'version':project.version, 'mcversion':project.minecraft.version
                     }
                  
                     // copy everything else, thats not the mcmod.info
                     from(sourceSets.main.resources.srcDirs) {
                         exclude 'mcmod.info'
                     }
                  }
                  
                  

                  :::

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002R Hors-ligne
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                    dernière édition par

                    À mon avis ça ne fonctionne pas en dehors d’eclipse car tu n’as pas la bibliothèque mysql-connector.

                    1 réponse Dernière réponse Répondre Citer 0
                    • C Hors-ligne
                      Cobra45
                      dernière édition par

                      @‘robin4002’:

                      À mon avis ça ne fonctionne pas en dehors d’eclipse car tu n’as pas la bibliothèque mysql-connector.

                      Comment la mettre ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • AymericRedA Hors-ligne
                        AymericRed
                        dernière édition par

                        L’intégrer à ton mod serait le mieux(ou alors tu la met dans le dossier mods mais fml va pas être content).

                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                        1 réponse Dernière réponse Répondre Citer 0
                        • C Hors-ligne
                          Cobra45
                          dernière édition par

                          @‘AymericRed’:

                          L’intégrer à ton mod serait le mieux(ou alors tu la met dans le dossier mods mais fml va pas être content).

                          Je l’intègre comment ? Parce que je l’ai déjà intégré au projet sur Eclipse pour pouvoir me connecter à la BDD.
                          Sinon oui je vais essayer de le glisser dans le dossier mods je verrai bien

                          1 réponse Dernière réponse Répondre Citer 0
                          • Superloup10S Hors-ligne
                            Superloup10 Modérateurs
                            dernière édition par

                            Dans le build.gradle, tu mets

                            compile 'mysql:mysql-connector-java:5.1.38'
                            

                            tu dois le mettre dans la partie dependencies.

                            Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                            Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                            1 réponse Dernière réponse Répondre Citer 0
                            • 1 / 1
                            • Premier message
                              Dernier message
                            Design by Woryk
                            ContactMentions Légales

                            MINECRAFT FORGE FRANCE © 2024

                            Powered by NodeBB