MFF

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

    Cacher les identifiants SQL au client ?

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    23 Messages 2 Publieurs 1.1k Vues 2 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Quand tu tapes une commande, l’exécution se fait sur le serveur.
      Donc pour ce cas, il faut que tu appels la fonction sql directement dans la fonction exécute de ta commande puis que tu envoies la réponse par paquet.

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

        J’obtiens cette erreur :

        [21:19:19] [main/INFO] [minecraft/GuiNewChat]: [CHAT] Cette commande a échoué suite à une erreur inconnue
        

        Commande :

        public class SimpleCommand extends CommandBase {
        
            @Override
            public String getName() {
                return "getplayerdata";
            }
        
            @Override
            public String getUsage(ICommandSender sender) {
                return null;
            }
        
            @Override
            public boolean checkPermission(MinecraftServer server, ICommandSender sender) {
                return true;
            }
        
            @Override
            public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
                if(sender instanceof EntityPlayer) {
                    SQLDatabase.getValue("users", "grade", "" + Minecraft.getMinecraft().player.getDisplayNameString(), "pseudo");
                }
            }
        }
        
        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

          Rien d’autre dans la console ?
          Si oui, mets l’appel de ta fonction getValue dans un try catch et log l’exception.

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

            Effectivement, l’erreur contient ceci également :

            [21:59:00] [Server thread/WARN] [minecraft/CommandHandler]: Couldn't process command: getplayerdata
            java.lang.NoClassDefFoundError: net/minecraft/client/Minecraft
            	at fr.minewarfare.commands.SimpleCommand.execute(SimpleCommand.java:35) ~[SimpleCommand.class:?]
            	at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:126) [CommandHandler.class:?]
            	at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:98) [CommandHandler.class:?]
            	at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:1003) [NetHandlerPlayServer.class:?]
            	at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:979) [NetHandlerPlayServer.class:?]
            	at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:47) [CPacketChatMessage.class:?]
            	at net.minecraft.network.play.client.CPacketChatMessage.processPacket(CPacketChatMessage.java:8) [CPacketChatMessage.class:?]
            	at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:21) [PacketThreadUtil$1.class:?]
            	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_201]
            	at java.util.concurrent.FutureTask.run$$$capture(FutureTask.java:266) [?:1.8.0_201]
            	at java.util.concurrent.FutureTask.run(FutureTask.java) [?:1.8.0_201]
            	at net.minecraft.util.Util.runTask(Util.java:53) [Util.class:?]
            	at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:798) [MinecraftServer.class:?]
            	at net.minecraft.server.dedicated.DedicatedServer.updateTimeLightAndEntities(DedicatedServer.java:415) [DedicatedServer.class:?]
            	at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:743) [MinecraftServer.class:?]
            	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:592) [MinecraftServer.class:?]
            	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_201]
            Caused by: java.lang.ClassNotFoundException: net.minecraft.client.Minecraft
            	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:191) ~[launchwrapper-1.12.jar:?]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_201]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_201]
            	... 17 more
            Caused by: net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerException: Exception in class transformer net.minecraftforge.fml.common.asm.transformers.SideTransformer@59bbb974 from coremod FMLCorePlugin
            	at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:260) ~[forgeSrc-1.12.2-14.23.5.2768.jar:?]
            	at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
            	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_201]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_201]
            	... 17 more
            Caused by: java.lang.RuntimeException: Attempted to load class net/minecraft/client/Minecraft for invalid side SERVER
            	at net.minecraftforge.fml.common.asm.transformers.SideTransformer.transform(SideTransformer.java:62) ~[forgeSrc-1.12.2-14.23.5.2768.jar:?]
            	at net.minecraftforge.fml.common.asm.ASMTransformerWrapper$TransformerWrapper.transform(ASMTransformerWrapper.java:256) ~[forgeSrc-1.12.2-14.23.5.2768.jar:?]
            	at net.minecraft.launchwrapper.LaunchClassLoader.runTransformers(LaunchClassLoader.java:279) ~[launchwrapper-1.12.jar:?]
            	at net.minecraft.launchwrapper.LaunchClassLoader.findClass(LaunchClassLoader.java:176) ~[launchwrapper-1.12.jar:?]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_201]
            	at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_201]
            	... 17 more
            
            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 robin4002

              Ah oui, c’est à cause du Minecraft.getMinecraft().player dans ta fonction execute. Il n’est pas possible d’utiliser la classe Minecraft côté serveur.
              Et dans ton cas il suffit de faire (EntityPlayer)sender pour récupérer le joueur qui a exécuté la commande.

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

                C’est bon, j’ai une autre erreur maintenant, ça doit venir du (EntityPlayer)sender, ça doit fausser la requête SQL.
                J’ai essayé avec (EntityPlayer)sender.getDisplayName() ça ne fonctionne pas non plus (ça correspond au stringRecover)

                [22:18:24] [Server thread/INFO] [STDOUT]: [fr.minewarfare.SQLDatabase:getValue:26]: Successfully connected to database
                [22:18:24] [Server thread/INFO] [STDOUT]: [fr.minewarfare.SQLDatabase:getValue:42]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Cobra45'/200, l='world', x=259,30, y=76,00, z=-114,15]'' at line 1
                
                    public static void getValue(String table, String sectionRecover, String stringRecover, String recoverSection) {
                        String returnString = null;
                        try {
                            Connection con = DriverManager.getConnection(urlbase + host + "/" + database, user, pass);
                            System.out.println("Successfully connected to database");
                
                            Statement q = con.createStatement();
                            String sql = "SELECT * FROM " + table + " WHERE " + recoverSection + " = '" + stringRecover + "'";
                            ResultSet rs = q.executeQuery(sql);
                
                            while (rs.next()) {
                                returnString = rs.getString(sectionRecover);
                            }
                
                            q.close();
                            con.close();
                
                            Main.network.sendToServer(new PacketSQLGetResult(returnString));
                
                        } catch (SQLException err) {
                            System.out.println(err.getMessage());
                        }
                    }
                
                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

                  C’est comme ça la bonne syntaxe pour appeler une fonction d’une variable cast :
                  ((EntityPlayer)sender).getDisplayName()

                  Ou alors :

                  EntityPlayer player = (EntityPlayer)sender;
                  player.getDisplayName()
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • C Hors-ligne
                    Cobra45
                    dernière édition par Cobra45

                    Toujours une erreur avec les deux. Elle semble juste un peu différente sur la fin

                    [23:03:13] [Server thread/INFO] [STDOUT]: [fr.minewarfare.SQLDatabase:getValue:42]: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Cobra45', siblings=[], style=Style{hasParent=true, color=null, bold=null, itali' at line 1
                    
                    
                        @Override
                        public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
                            if(sender instanceof EntityPlayer) {
                                SQLDatabase.getValue("users", "grade", "" + ((EntityPlayer)sender).getDisplayName(), "pseudo");
                            }
                        }
                    
                        @Override
                        public void execute(MinecraftServer server, ICommandSender sender, String[] args) throws CommandException {
                            if(sender instanceof EntityPlayer) {
                                EntityPlayer player = (EntityPlayer)sender;
                                SQLDatabase.getValue("users", "grade", "" + player.getDisplayName(), "pseudo");
                            }
                        }
                    
                    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 robin4002

                      getDisplayName ne renvois pas un string mais un ITextComponent.
                      Il faut utiliser player.getGameProfile().getName() pour avoir le nom du joueur en string (et il serait mieux de gérer les données utilisateurs en fonction du UUID, sinon en cas de changement de pseudo tu vas avoir des problèmes).

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

                        Tout fonctionne, merci.

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB