MFF

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

    No suitable driver (mysql-connector)

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    15 Messages 2 Publieurs 663 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.
    • F Hors-ligne
      FullLager
      dernière édition par FullLager

      Bonjour, je suis actuellement en train de développer des métiers pour un projet de serveur moddé en 1.7.10 Tout est géré par les bases de données mysql. En local, j’utilise XAMPP et ca marche nickel mais dès que j’essai de mettre le mod sur le serveur, il me met que la connexion est impossible No suitable

      No suitable driver
      

      et du coup, dès que j’ouvre le menu je crash. J’ai ajouté dans les librairies du mods (sur eclipse) la librairy mysql-connector. Je ne sais pas si il faut aussi la mettre coté serveur et si oui où ?

      Merci de votre aide.

      F 1 réponse Dernière réponse Répondre Citer 0
      • F Hors-ligne
        FullLager @FullLager
        dernière édition par

        Le problème du suitable n’est plus. Mais maintenant, dés que j’ouvre le menu sur le serveur je crash, je ne comprend pas pourquoi. A l’ouverture du menu, des requetes sont effectués et je pense que ca vient de là mais pourquoi dès qu’une requete est executée, seul le client crash et pas le serveur. Quelqu’un a une idée ?

        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

          Oui la bibliothèque doit aussi être mise sur le serveur. Soit l’intégrer au mod, soit l’ajouter au classpath.

          Sinon dire que ton jeu crash mais sans donner le rapport de crash ça ne nous permet pas de t’aider (rappel, c’est indiquer dans les règles de la section qu’il faut envoyer les rapports de crash quand il y en a …)

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

            Désolé, voici le rapport d’erreur. En fait, dès qu’un joueur se connecte, la création du compte est lancée sauf que quand je me connecte coté client ca me met “Internal server error”

            Erreurs coté serveur

            [20:50:36 ERROR]: HandshakeCompletionHandler exception
            java.lang.NullPointerException
                    at fr.fulllager.elonia.jobs.JobsManager.hasAnAccount(JobsManager.java:29) ~[JobsManager.class:?]
                    at fr.fulllager.elonia.jobs.JobsManager.createAccount(JobsManager.java:43) ~[JobsManager.class:?]
                    at fr.fulllager.elonia.jobs.JobsListenerFML.onJoin(JobsListenerFML.java:54) ~[JobsListenerFML.class:?]
                    at cpw.mods.fml.common.eventhandler.ASMEventHandler_25_JobsListenerFML_onJoin_PlayerLoggedInEvent.invoke(.dynamic) ~[?:?]
                    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51) ~[ASMEventHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122) ~[EventBus.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.FMLCommonHandler.firePlayerLoggedIn(FMLCommonHandler.java:568) ~[FMLCommonHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at net.minecraft.server.management.ServerConfigurationManager.a(ServerConfigurationManager.java:236) ~[oi.class:?]
                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:173) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:448) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:21) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
                    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
                    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
                    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
                    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) [MessageToMessageCodec.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
                    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) [EmbeddedChannel.class:?]
                    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
                    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
                    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?]
                    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?]
                    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?]
                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?]
                    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
            

            2ème erreur

            [20:50:36 ERROR]: There was a critical exception handling a packet on channel FML
            java.lang.NullPointerException
                    at fr.fulllager.elonia.jobs.JobsManager.hasAnAccount(JobsManager.java:29) ~[JobsManager.class:?]
                    at fr.fulllager.elonia.jobs.JobsManager.createAccount(JobsManager.java:43) ~[JobsManager.class:?]
                    at fr.fulllager.elonia.jobs.JobsListenerFML.onJoin(JobsListenerFML.java:54) ~[JobsListenerFML.class:?]
                    at cpw.mods.fml.common.eventhandler.ASMEventHandler_25_JobsListenerFML_onJoin_PlayerLoggedInEvent.invoke(.dynamic) ~[?:?]
                    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51) ~[ASMEventHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122) ~[EventBus.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.FMLCommonHandler.firePlayerLoggedIn(FMLCommonHandler.java:568) ~[FMLCommonHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at net.minecraft.server.management.ServerConfigurationManager.a(ServerConfigurationManager.java:236) ~[oi.class:?]
                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:173) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:448) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:21) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
                    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
                    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
                    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
                    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
                    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
                    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
                    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?]
                    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?]
                    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?]
                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?]
                    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
            

            3ème erreur

            [20:50:36 WARN]: Failed to handle packet for /IP de FullLager
            java.lang.NullPointerException
                    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:101) ~[FMLProxyPacket.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) ~[ej.class:?]
                    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
                    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?]
                    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?]
                    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?]
                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?]
                    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
            [20:50:36 INFO]: FullLager lost connection: Internal server error
            

            Et le problème de connexion est réglé je l’ai ajouté dans les libs et dans le gradle.build L’erreur vient uniquement lors d’une requête à la bdd.

            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

              @FullLager a dit dans No suitable driver (mysql-connector) :

              at fr.fulllager.elonia.jobs.JobsManager.hasAnAccount(JobsManager.java:29

              Tu peux envoyer la code de la classe JobsManager ?

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

                
                import java.sql.PreparedStatement;
                import java.sql.ResultSet;
                import java.sql.SQLException;
                
                import cpw.mods.fml.common.SidedProxy;
                import cpw.mods.fml.relauncher.Side;
                import cpw.mods.fml.relauncher.SideOnly;
                import fr.fulllager.elonia.Main;
                import fr.fulllager.elonia.events.EventsMod;
                import fr.fulllager.elonia.init.ItemMod;
                import net.minecraft.client.Minecraft;
                import net.minecraft.entity.player.EntityPlayer;
                import net.minecraft.item.ItemStack;
                import net.minecraft.server.MinecraftServer;
                import net.minecraft.util.ChatComponentText;
                
                public class JobsManager {
                	
                	public static Main main;
                	public JobsManager(Main main) {
                		JobsManager.main = main;
                	}
                	
                	public static boolean hasAnAccount(EntityPlayer p) {
                		try {
                	            PreparedStatement q = main.connection.prepareStatement("SELECT uuid FROM jobs WHERE uuid = ?");
                	            q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                	            ResultSet resultat = q.executeQuery();
                	            boolean hasAccount = resultat.next();
                	            q.close();
                	            return hasAccount;
                	        } catch (SQLException e) {
                	            e.printStackTrace();
                	        }
                		return false;
                	}
                	
                	public static void createAccount(EntityPlayer p) {
                		if(!hasAnAccount(p)) {
                		    try {
                			    PreparedStatement r = main.connection.prepareStatement("INSERT INTO jobs(uuid,pseudo) VALUES (?,?)");
                		     	r.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getName().toString());
                			    r.execute();
                			    r.close();
                		    } catch (SQLException e) {
                			    e.printStackTrace();
                			    System.out.println("La création du compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a échoué !");
                			    return;
                		    }
                		    System.out.println("La création de compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a été réalisée avec succès !");
                		}
                	}
                	
                	
                	public static int getFarmerLevel(EntityPlayer p) {
                        try {
                        	int res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_level FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getInt("farmer_level");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 1;
                	}
                	
                	public static int getMinerLevel(EntityPlayer p) {
                        try {
                        	int res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT miner_level FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getInt("miner_level");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 1;
                	}
                	
                	
                	public static int getHunterLevel(EntityPlayer p) {
                        try {
                        	int res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_level FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getInt("hunter_level");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 1;
                	}
                	
                	
                	public static double getFarmerXp(EntityPlayer p) {
                        try {
                        	double res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_xp FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getDouble("farmer_xp");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 0;
                	}
                	
                	
                	public static double getMinerXp(EntityPlayer p) {
                        try {
                        	double res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT miner_xp FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getDouble("miner_xp");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 0;
                	}
                	
                	
                	public static double getHunterXp(EntityPlayer p) {
                        try {
                        	double res = 1;
                        	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_xp FROM jobs WHERE uuid = ?");
                			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			ResultSet resultat = q.executeQuery();
                			while(resultat.next()) {
                				res = resultat.getDouble("hunter_xp");
                			}
                	        q.close();
                	        return res;
                		} catch (SQLException e) {
                			e.printStackTrace();
                		}
                        return 0;
                	}
                	
                	
                	public static int getMaxXpForLevel(int level) {
                		int max = 666;
                		if(level == 1) {max = 666;}
                		if(level == 2) {max = 1973;}
                		if(level == 3) {max = 4873;}
                		if(level == 4) {max = 9154;}
                		if(level == 5) {max = 18397;}
                		if(level == 6) {max = 23947;}
                		if(level == 7) {max = 32947;}
                		if(level == 8) {max = 44293;}
                		if(level == 9) {max = 53382;}
                		if(level == 10) {max = 66846;}
                		if(level == 11) {max = 79374;}
                		if(level == 12) {max = 89836;}
                		if(level == 13) {max = 100000;}
                		if(level == 14) {max = 118712;}
                		if(level == 15) {max = 128364;}
                		if(level == 16) {max = 139374;}
                		if(level == 17) {max = 154302;}
                		if(level == 18) {max = 179273;}
                		if(level == 19) {max = 200000;}
                		if(level == 20) {max = 250000;}
                		return max;
                	}
                	
                	
                	public static double getXpForLevel(int level, double xp) {
                		if(level == 1) {return xp;}
                		xp = xp - (level - 1);
                		if(xp <= 0) {return 0;}
                		return xp;
                	}
                	
                	
                	public static void addXp(EntityPlayer p, double xp, String job) {
                		if(job == "Farmer") {
                			double farmer_base_xp = getFarmerXp(p);
                			int farmer_base_level = getFarmerLevel(p);
                			double farmer_xp = farmer_base_xp + getXpForLevel(farmer_base_level, xp);
                			int farmer_max_xp = getMaxXpForLevel(farmer_base_level);
                			long time = System.currentTimeMillis();
                			if(Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0){
                				Double sup = Main.overlay_xp.get(p);
                				Main.overlay_xp.remove(p);
                				Main.overlay_time.remove(p);
                				Main.overlay_time.put(p, time + 2000);
                				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp) + sup);
                			} else if(!Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0) {
                				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp));
                				Main.overlay_time.put(p, time + 2000);
                			}
                			if(farmer_xp >= farmer_max_xp && !(farmer_base_level + 1 == 21)) {
                				try {
                				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_level = ? WHERE uuid = ?");
                				    r.setInt(1, farmer_base_level + 1);
                				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                				    r.execute();
                				    r.close();
                			    } catch (SQLException e) {
                				    e.printStackTrace();
                			    }
                				giftForLevel(p, farmer_base_level++);
                			}
                			try {
                			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_xp = ? WHERE uuid = ?");
                		     	r.setDouble(1, farmer_xp);
                		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			    r.execute();
                			    r.close();
                		    } catch (SQLException e) {
                			    e.printStackTrace();
                		    }
                		}
                		if(job == "Miner") {
                			double miner_base_xp = getMinerXp(p);
                			int miner_base_level = getMinerLevel(p);
                			double miner_xp = miner_base_xp + getXpForLevel(miner_base_level, xp);
                			int miner_max_xp = getMaxXpForLevel(miner_base_level);
                			long time = System.currentTimeMillis();
                			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(miner_base_level, xp) != 0) {
                				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp));
                				Main.overlay_time.put(p, time + 2000);
                			} else if(getXpForLevel(miner_base_level, xp) != 0){
                				Double sup = Main.overlay_xp.get(p);
                				Main.overlay_xp.remove(p);
                				Main.overlay_time.remove(p);
                				Main.overlay_time.put(p, time + 2000);
                				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp) + sup);
                			}
                			if(miner_xp >= miner_max_xp && !(miner_base_level + 1 == 21)) {
                				try {
                				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_level = ? WHERE uuid = ?");
                				    r.setInt(1, miner_base_level + 1);
                				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                				    r.execute();
                				    r.close();
                			    } catch (SQLException e) {
                				    e.printStackTrace();
                			    }
                				giftForLevel(p, miner_base_level + 1);
                			}
                			try {
                			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_xp = ? WHERE uuid = ?");
                		     	r.setDouble(1, miner_xp);
                		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			    r.execute();
                			    r.close();
                		    } catch (SQLException e) {
                			    e.printStackTrace();
                		    }
                		}
                		if(job == "Hunter") {
                			double hunter_base_xp = getHunterXp(p);
                			int hunter_base_level = getHunterLevel(p);
                			double hunter_xp = hunter_base_xp + getXpForLevel(hunter_base_level, xp);
                			int hunter_max_xp = getMaxXpForLevel(hunter_base_level);
                			long time = System.currentTimeMillis();
                			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(hunter_base_level, xp) != 0) {
                				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp));
                				Main.overlay_time.put(p, time + 2000);
                			} else if(getXpForLevel(hunter_base_level, xp) != 0){
                				Double sup = Main.overlay_xp.get(p);
                				Main.overlay_xp.remove(p);
                				Main.overlay_time.remove(p);
                				Main.overlay_time.put(p, time + 2000);
                				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp) + sup);
                			}
                			if(hunter_xp >= hunter_max_xp && !(hunter_base_level + 1 == 21)) {
                				try {
                				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_level = ? WHERE uuid = ?");
                				    r.setInt(1, hunter_base_level + 1);
                				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                				    r.execute();
                				    r.close();
                			    } catch (SQLException e) {
                				    e.printStackTrace();
                			    }
                				giftForLevel(p, hunter_base_level + 1);
                			}
                			try {
                			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_xp = ? WHERE uuid = ?");
                		     	r.setDouble(1, hunter_xp);
                		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                			    r.execute();
                			    r.close();
                		    } catch (SQLException e) {
                			    e.printStackTrace();
                		    }
                		}
                	}
                	
                	
                	public static void giftForLevel(EntityPlayer p, int level) {
                		p.addChatMessage(new ChatComponentText("Bravo, tu passes niveau "+level+" félicitations ! Voici un petit cadeau pour toi !"));
                		System.out.println("Récompense de niveau "+level+" pour "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName());
                		if(level == 2) {MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "give "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" elonia:fluorine_sword");}
                		if(level == 3) {}
                		if(level == 4) {}
                		if(level == 5) {}
                		if(level == 6) {}
                		if(level == 7) {}
                		if(level == 8) {}
                		if(level == 9) {}
                		if(level == 10) {}
                		if(level == 11) {}
                		if(level == 12) {}
                		if(level == 13) {}
                		if(level == 14) {}
                		if(level == 15) {}
                		if(level == 16) {}
                		if(level == 17) {}
                		if(level == 18) {}
                		if(level == 19) {}
                		if(level == 20) {}
                	}
                }
                

                Dès l’ouverture du menu, une requête est éxecutée pour récupérer le niveau et l’xp de chaque métier du joueur (c’est pas opti je sais mais ca fait le taf pour l’instant)

                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

                  La ligne 29 c’est laquelle ?
                  Il semble avoir un décalage dans ce que tu as envoyé, c’est la ligne PreparedStatement q = main.connection.prepareStatement("SELECT uuid FROM jobs WHERE uuid = ?"); ?

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

                    Ha oui j’ai pas mis le package la ligne 29 c’est le result set.

                    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

                      Je ne vois pas comment il peut avoir un NPE ici.
                      Lances ton jeu depuis ton IDE en debug et mets un point d’arrêt pour voir quelle variable est null.

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

                        J’ai mal transmis la ligne, je reupload le code

                        package fr.fulllager.elonia.jobs;
                        
                        import java.sql.PreparedStatement;
                        import java.sql.ResultSet;
                        import java.sql.SQLException;
                        
                        import cpw.mods.fml.common.SidedProxy;
                        import cpw.mods.fml.relauncher.Side;
                        import cpw.mods.fml.relauncher.SideOnly;
                        import fr.fulllager.elonia.Main;
                        import fr.fulllager.elonia.events.EventsMod;
                        import fr.fulllager.elonia.init.ItemMod;
                        import net.minecraft.client.Minecraft;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraft.item.ItemStack;
                        import net.minecraft.server.MinecraftServer;
                        import net.minecraft.util.ChatComponentText;
                        
                        public class JobsManager {
                        	
                        	public static Main main;
                        	public JobsManager(Main main) {
                        		JobsManager.main = main;
                        	}
                        	
                        	public static boolean hasAnAccount(EntityPlayer p) {
                        		try {
                        	            PreparedStatement q = main.connection.prepareStatement("SELECT uuid FROM jobs WHERE uuid = ?");
                        	            q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        	            ResultSet resultat = q.executeQuery();
                        	            boolean hasAccount = resultat.next();
                        	            q.close();
                        	            return hasAccount;
                        	        } catch (SQLException e) {
                        	            e.printStackTrace();
                        	        }
                        		return false;
                        	}
                        	
                        	public static void createAccount(EntityPlayer p) {
                        		if(!hasAnAccount(p)) {
                        		    try {
                        			    PreparedStatement r = main.connection.prepareStatement("INSERT INTO jobs(uuid,pseudo) VALUES (?,?)");
                        		     	r.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getName().toString());
                        			    r.execute();
                        			    r.close();
                        		    } catch (SQLException e) {
                        			    e.printStackTrace();
                        			    System.out.println("La création du compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a échoué !");
                        			    return;
                        		    }
                        		    System.out.println("La création de compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a été réalisée avec succès !");
                        		}
                        	}
                        	
                        	
                        	public static int getFarmerLevel(EntityPlayer p) {
                                try {
                                	int res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_level FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getInt("farmer_level");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 1;
                        	}
                        	
                        	public static int getMinerLevel(EntityPlayer p) {
                                try {
                                	int res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT miner_level FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getInt("miner_level");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 1;
                        	}
                        	
                        	
                        	public static int getHunterLevel(EntityPlayer p) {
                                try {
                                	int res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_level FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getInt("hunter_level");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 1;
                        	}
                        	
                        	
                        	public static double getFarmerXp(EntityPlayer p) {
                                try {
                                	double res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_xp FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getDouble("farmer_xp");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 0;
                        	}
                        	
                        	
                        	public static double getMinerXp(EntityPlayer p) {
                                try {
                                	double res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT miner_xp FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getDouble("miner_xp");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 0;
                        	}
                        	
                        	
                        	public static double getHunterXp(EntityPlayer p) {
                                try {
                                	double res = 1;
                                	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_xp FROM jobs WHERE uuid = ?");
                        			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			ResultSet resultat = q.executeQuery();
                        			while(resultat.next()) {
                        				res = resultat.getDouble("hunter_xp");
                        			}
                        	        q.close();
                        	        return res;
                        		} catch (SQLException e) {
                        			e.printStackTrace();
                        		}
                                return 0;
                        	}
                        	
                        	
                        	public static int getMaxXpForLevel(int level) {
                        		int max = 666;
                        		if(level == 1) {max = 666;}
                        		if(level == 2) {max = 1973;}
                        		if(level == 3) {max = 4873;}
                        		if(level == 4) {max = 9154;}
                        		if(level == 5) {max = 18397;}
                        		if(level == 6) {max = 23947;}
                        		if(level == 7) {max = 32947;}
                        		if(level == 8) {max = 44293;}
                        		if(level == 9) {max = 53382;}
                        		if(level == 10) {max = 66846;}
                        		if(level == 11) {max = 79374;}
                        		if(level == 12) {max = 89836;}
                        		if(level == 13) {max = 100000;}
                        		if(level == 14) {max = 118712;}
                        		if(level == 15) {max = 128364;}
                        		if(level == 16) {max = 139374;}
                        		if(level == 17) {max = 154302;}
                        		if(level == 18) {max = 179273;}
                        		if(level == 19) {max = 200000;}
                        		if(level == 20) {max = 250000;}
                        		return max;
                        	}
                        	
                        	
                        	public static double getXpForLevel(int level, double xp) {
                        		if(level == 1) {return xp;}
                        		xp = xp - (level - 1);
                        		if(xp <= 0) {return 0;}
                        		return xp;
                        	}
                        	
                        	
                        	public static void addXp(EntityPlayer p, double xp, String job) {
                        		if(job == "Farmer") {
                        			double farmer_base_xp = getFarmerXp(p);
                        			int farmer_base_level = getFarmerLevel(p);
                        			double farmer_xp = farmer_base_xp + getXpForLevel(farmer_base_level, xp);
                        			int farmer_max_xp = getMaxXpForLevel(farmer_base_level);
                        			long time = System.currentTimeMillis();
                        			if(Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0){
                        				Double sup = Main.overlay_xp.get(p);
                        				Main.overlay_xp.remove(p);
                        				Main.overlay_time.remove(p);
                        				Main.overlay_time.put(p, time + 2000);
                        				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp) + sup);
                        			} else if(!Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0) {
                        				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp));
                        				Main.overlay_time.put(p, time + 2000);
                        			}
                        			if(farmer_xp >= farmer_max_xp && !(farmer_base_level + 1 == 21)) {
                        				try {
                        				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_level = ? WHERE uuid = ?");
                        				    r.setInt(1, farmer_base_level + 1);
                        				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        				    r.execute();
                        				    r.close();
                        			    } catch (SQLException e) {
                        				    e.printStackTrace();
                        			    }
                        				giftForLevel(p, farmer_base_level++);
                        			}
                        			try {
                        			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_xp = ? WHERE uuid = ?");
                        		     	r.setDouble(1, farmer_xp);
                        		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			    r.execute();
                        			    r.close();
                        		    } catch (SQLException e) {
                        			    e.printStackTrace();
                        		    }
                        		}
                        		if(job == "Miner") {
                        			double miner_base_xp = getMinerXp(p);
                        			int miner_base_level = getMinerLevel(p);
                        			double miner_xp = miner_base_xp + getXpForLevel(miner_base_level, xp);
                        			int miner_max_xp = getMaxXpForLevel(miner_base_level);
                        			long time = System.currentTimeMillis();
                        			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(miner_base_level, xp) != 0) {
                        				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp));
                        				Main.overlay_time.put(p, time + 2000);
                        			} else if(getXpForLevel(miner_base_level, xp) != 0){
                        				Double sup = Main.overlay_xp.get(p);
                        				Main.overlay_xp.remove(p);
                        				Main.overlay_time.remove(p);
                        				Main.overlay_time.put(p, time + 2000);
                        				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp) + sup);
                        			}
                        			if(miner_xp >= miner_max_xp && !(miner_base_level + 1 == 21)) {
                        				try {
                        				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_level = ? WHERE uuid = ?");
                        				    r.setInt(1, miner_base_level + 1);
                        				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        				    r.execute();
                        				    r.close();
                        			    } catch (SQLException e) {
                        				    e.printStackTrace();
                        			    }
                        				giftForLevel(p, miner_base_level + 1);
                        			}
                        			try {
                        			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_xp = ? WHERE uuid = ?");
                        		     	r.setDouble(1, miner_xp);
                        		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			    r.execute();
                        			    r.close();
                        		    } catch (SQLException e) {
                        			    e.printStackTrace();
                        		    }
                        		}
                        		if(job == "Hunter") {
                        			double hunter_base_xp = getHunterXp(p);
                        			int hunter_base_level = getHunterLevel(p);
                        			double hunter_xp = hunter_base_xp + getXpForLevel(hunter_base_level, xp);
                        			int hunter_max_xp = getMaxXpForLevel(hunter_base_level);
                        			long time = System.currentTimeMillis();
                        			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(hunter_base_level, xp) != 0) {
                        				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp));
                        				Main.overlay_time.put(p, time + 2000);
                        			} else if(getXpForLevel(hunter_base_level, xp) != 0){
                        				Double sup = Main.overlay_xp.get(p);
                        				Main.overlay_xp.remove(p);
                        				Main.overlay_time.remove(p);
                        				Main.overlay_time.put(p, time + 2000);
                        				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp) + sup);
                        			}
                        			if(hunter_xp >= hunter_max_xp && !(hunter_base_level + 1 == 21)) {
                        				try {
                        				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_level = ? WHERE uuid = ?");
                        				    r.setInt(1, hunter_base_level + 1);
                        				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        				    r.execute();
                        				    r.close();
                        			    } catch (SQLException e) {
                        				    e.printStackTrace();
                        			    }
                        				giftForLevel(p, hunter_base_level + 1);
                        			}
                        			try {
                        			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_xp = ? WHERE uuid = ?");
                        		     	r.setDouble(1, hunter_xp);
                        		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        			    r.execute();
                        			    r.close();
                        		    } catch (SQLException e) {
                        			    e.printStackTrace();
                        		    }
                        		}
                        	}
                        	
                        	
                        	public static void giftForLevel(EntityPlayer p, int level) {
                        		p.addChatMessage(new ChatComponentText("Bravo, tu passes niveau "+level+" félicitations ! Voici un petit cadeau pour toi !"));
                        		System.out.println("Récompense de niveau "+level+" pour "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName());
                        		if(level == 2) {MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "give "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" elonia:fluorine_sword");}
                        		if(level == 3) {}
                        		if(level == 4) {}
                        		if(level == 5) {}
                        		if(level == 6) {}
                        		if(level == 7) {}
                        		if(level == 8) {}
                        		if(level == 9) {}
                        		if(level == 10) {}
                        		if(level == 11) {}
                        		if(level == 12) {}
                        		if(level == 13) {}
                        		if(level == 14) {}
                        		if(level == 15) {}
                        		if(level == 16) {}
                        		if(level == 17) {}
                        		if(level == 18) {}
                        		if(level == 19) {}
                        		if(level == 20) {}
                        	}
                        }
                        
                        

                        Donc c’est la ligne

                        q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                        

                        Il ne doit pas trouver l’UUID du joueur.

                        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 mais oui, je ne sais pas pourquoi je n’ai pas vu ça plutôt …

                          Pourquoi tu utilises Minecraft.getMinecraft().thePlayer dans des fonctions avec du sql qui sont sensé être exécuté sur le serveur ?

                          Surtout que tu as déjà p en argument de ta fonction … Remplaces Minecraft.getMinecraft().thePlayer. par p. Tu as ce problème partout. La classe Minecraft ne doit jamais être utilisé sur la partie serveur d’un mod.

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

                            C’est corrigé. Maintenant j’ai ça comme erreur :

                            [14:33:32 ERROR]: There was a critical exception handling a packet on channel FML
                            java.lang.NullPointerException
                                    at fr.fulllager.elonia.jobs.JobsManager.hasAnAccount(JobsManager.java:28) ~[JobsManager.class:?]
                                    at fr.fulllager.elonia.jobs.JobsListenerFML.onJoin(JobsListenerFML.java:54) ~[JobsListenerFML.class:?]
                                    at cpw.mods.fml.common.eventhandler.ASMEventHandler_25_JobsListenerFML_onJoin_PlayerLoggedInEvent.invoke(.dynamic) ~[?:?]
                                    at cpw.mods.fml.common.eventhandler.ASMEventHandler.invoke(ASMEventHandler.java:51) ~[ASMEventHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at cpw.mods.fml.common.eventhandler.EventBus.post(EventBus.java:122) ~[EventBus.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at cpw.mods.fml.common.FMLCommonHandler.firePlayerLoggedIn(FMLCommonHandler.java:568) ~[FMLCommonHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at net.minecraft.server.management.ServerConfigurationManager.a(ServerConfigurationManager.java:236) ~[oi.class:?]
                                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeServerSideConnection(NetworkDispatcher.java:173) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at cpw.mods.fml.common.network.handshake.NetworkDispatcher.completeHandshake(NetworkDispatcher.java:448) ~[NetworkDispatcher.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:21) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at cpw.mods.fml.common.network.internal.HandshakeCompletionHandler.channelRead0(HandshakeCompletionHandler.java:11) ~[HandshakeCompletionHandler.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
                                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
                                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
                                    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
                                    at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
                                    at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
                                    at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
                                    at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
                                    at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
                                    at cpw.mods.fml.common.network.internal.FMLProxyPacket.func_148833_a(FMLProxyPacket.java:77) [FMLProxyPacket.class:git-Cauldron-MCPC-Plus-1.7.10-1.1207.01.198]
                                    at net.minecraft.network.NetworkManager.func_74428_b(NetworkManager.java:244) [ej.class:?]
                                    at net.minecraft.network.NetworkSystem.func_151269_c(NetworkSystem.java:173) [nc.class:?]
                                    at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:980) [MinecraftServer.class:?]
                                    at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:423) [lt.class:?]
                                    at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:798) [MinecraftServer.class:?]
                                    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:658) [MinecraftServer.class:?]
                                    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_181]
                            

                            Je reupload la classe JobsManager

                            package fr.fulllager.elonia.jobs;
                            
                            import java.sql.PreparedStatement;
                            import java.sql.ResultSet;
                            import java.sql.SQLException;
                            
                            import cpw.mods.fml.common.SidedProxy;
                            import cpw.mods.fml.relauncher.Side;
                            import cpw.mods.fml.relauncher.SideOnly;
                            import fr.fulllager.elonia.Main;
                            import fr.fulllager.elonia.events.EventsMod;
                            import fr.fulllager.elonia.init.ItemMod;
                            import net.minecraft.client.Minecraft;
                            import net.minecraft.entity.player.EntityPlayer;
                            import net.minecraft.item.ItemStack;
                            import net.minecraft.server.MinecraftServer;
                            import net.minecraft.util.ChatComponentText;
                            
                            public class JobsManager {
                            	
                            	public static Main main;
                            	public JobsManager(Main main) {
                            		JobsManager.main = main;
                            	}
                            	
                            	public static boolean hasAnAccount(EntityPlayer p) {
                            		try {
                            	            PreparedStatement q = main.connection.prepareStatement("SELECT uuid FROM jobs WHERE uuid = ?");
                            	            q.setString(1, p.getUniqueID().toString());
                            	            ResultSet resultat = q.executeQuery();
                            	            boolean hasAccount = resultat.next();
                            	            q.close();
                            	            return hasAccount;
                            	        } catch (SQLException e) {
                            	            e.printStackTrace();
                            	        }
                            		return false;
                            	}
                            	
                            	public static void createAccount(EntityPlayer p) {
                            		if(!hasAnAccount(p)) {
                            		    try {
                            			    PreparedStatement r = main.connection.prepareStatement("INSERT INTO jobs(uuid,pseudo) VALUES (?,?)");
                            		     	r.setString(1, p.getUniqueID().toString());
                            		    	r.setString(2, p.getDisplayName());
                            			    r.execute();
                            			    r.close();
                            		    } catch (SQLException e) {
                            			    e.printStackTrace();
                            			    System.out.println("La création du compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a échoué !");
                            			    return;
                            		    }
                            		    System.out.println("La création de compte de "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" a été réalisée avec succès !");
                            		}
                            	}
                            	
                            	
                            	public static int getFarmerLevel(EntityPlayer p) {
                                    try {
                                    	int res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_level FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getInt("farmer_level");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 1;
                            	}
                            	
                            	public static int getMinerLevel(EntityPlayer p) {
                                    try {
                                    	int res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT miner_level FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getInt("miner_level");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 1;
                            	}
                            	
                            	
                            	public static int getHunterLevel(EntityPlayer p) {
                                    try {
                                    	int res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_level FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getInt("hunter_level");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 1;
                            	}
                            	
                            	
                            	public static double getFarmerXp(EntityPlayer p) {
                                    try {
                                    	double res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT farmer_xp FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getDouble("farmer_xp");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 0;
                            	}
                            	
                            	
                            	public static double getMinerXp(EntityPlayer p) {
                                    try {
                                    	double res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT miner_xp FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getDouble("miner_xp");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 0;
                            	}
                            	
                            	
                            	public static double getHunterXp(EntityPlayer p) {
                                    try {
                                    	double res = 1;
                                    	PreparedStatement q = main.connection.prepareStatement("SELECT hunter_xp FROM jobs WHERE uuid = ?");
                            			q.setString(1, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			ResultSet resultat = q.executeQuery();
                            			while(resultat.next()) {
                            				res = resultat.getDouble("hunter_xp");
                            			}
                            	        q.close();
                            	        return res;
                            		} catch (SQLException e) {
                            			e.printStackTrace();
                            		}
                                    return 0;
                            	}
                            	
                            	
                            	public static int getMaxXpForLevel(int level) {
                            		int max = 666;
                            		if(level == 1) {max = 666;}
                            		if(level == 2) {max = 1973;}
                            		if(level == 3) {max = 4873;}
                            		if(level == 4) {max = 9154;}
                            		if(level == 5) {max = 18397;}
                            		if(level == 6) {max = 23947;}
                            		if(level == 7) {max = 32947;}
                            		if(level == 8) {max = 44293;}
                            		if(level == 9) {max = 53382;}
                            		if(level == 10) {max = 66846;}
                            		if(level == 11) {max = 79374;}
                            		if(level == 12) {max = 89836;}
                            		if(level == 13) {max = 100000;}
                            		if(level == 14) {max = 118712;}
                            		if(level == 15) {max = 128364;}
                            		if(level == 16) {max = 139374;}
                            		if(level == 17) {max = 154302;}
                            		if(level == 18) {max = 179273;}
                            		if(level == 19) {max = 200000;}
                            		if(level == 20) {max = 250000;}
                            		return max;
                            	}
                            	
                            	
                            	public static double getXpForLevel(int level, double xp) {
                            		if(level == 1) {return xp;}
                            		xp = xp - (level - 1);
                            		if(xp <= 0) {return 0;}
                            		return xp;
                            	}
                            	
                            	
                            	public static void addXp(EntityPlayer p, double xp, String job) {
                            		if(job == "Farmer") {
                            			double farmer_base_xp = getFarmerXp(p);
                            			int farmer_base_level = getFarmerLevel(p);
                            			double farmer_xp = farmer_base_xp + getXpForLevel(farmer_base_level, xp);
                            			int farmer_max_xp = getMaxXpForLevel(farmer_base_level);
                            			long time = System.currentTimeMillis();
                            			if(Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0){
                            				Double sup = Main.overlay_xp.get(p);
                            				Main.overlay_xp.remove(p);
                            				Main.overlay_time.remove(p);
                            				Main.overlay_time.put(p, time + 2000);
                            				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp) + sup);
                            			} else if(!Main.overlay_xp.containsKey(p) && getXpForLevel(farmer_base_level, xp) != 0) {
                            				Main.overlay_xp.put(p, getXpForLevel(farmer_base_level, xp));
                            				Main.overlay_time.put(p, time + 2000);
                            			}
                            			if(farmer_xp >= farmer_max_xp && !(farmer_base_level + 1 == 21)) {
                            				try {
                            				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_level = ? WHERE uuid = ?");
                            				    r.setInt(1, farmer_base_level + 1);
                            				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            				    r.execute();
                            				    r.close();
                            			    } catch (SQLException e) {
                            				    e.printStackTrace();
                            			    }
                            				giftForLevel(p, farmer_base_level++);
                            			}
                            			try {
                            			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET farmer_xp = ? WHERE uuid = ?");
                            		     	r.setDouble(1, farmer_xp);
                            		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			    r.execute();
                            			    r.close();
                            		    } catch (SQLException e) {
                            			    e.printStackTrace();
                            		    }
                            		}
                            		if(job == "Miner") {
                            			double miner_base_xp = getMinerXp(p);
                            			int miner_base_level = getMinerLevel(p);
                            			double miner_xp = miner_base_xp + getXpForLevel(miner_base_level, xp);
                            			int miner_max_xp = getMaxXpForLevel(miner_base_level);
                            			long time = System.currentTimeMillis();
                            			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(miner_base_level, xp) != 0) {
                            				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp));
                            				Main.overlay_time.put(p, time + 2000);
                            			} else if(getXpForLevel(miner_base_level, xp) != 0){
                            				Double sup = Main.overlay_xp.get(p);
                            				Main.overlay_xp.remove(p);
                            				Main.overlay_time.remove(p);
                            				Main.overlay_time.put(p, time + 2000);
                            				Main.overlay_xp.put(p, getXpForLevel(miner_base_level, xp) + sup);
                            			}
                            			if(miner_xp >= miner_max_xp && !(miner_base_level + 1 == 21)) {
                            				try {
                            				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_level = ? WHERE uuid = ?");
                            				    r.setInt(1, miner_base_level + 1);
                            				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            				    r.execute();
                            				    r.close();
                            			    } catch (SQLException e) {
                            				    e.printStackTrace();
                            			    }
                            				giftForLevel(p, miner_base_level + 1);
                            			}
                            			try {
                            			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET miner_xp = ? WHERE uuid = ?");
                            		     	r.setDouble(1, miner_xp);
                            		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			    r.execute();
                            			    r.close();
                            		    } catch (SQLException e) {
                            			    e.printStackTrace();
                            		    }
                            		}
                            		if(job == "Hunter") {
                            			double hunter_base_xp = getHunterXp(p);
                            			int hunter_base_level = getHunterLevel(p);
                            			double hunter_xp = hunter_base_xp + getXpForLevel(hunter_base_level, xp);
                            			int hunter_max_xp = getMaxXpForLevel(hunter_base_level);
                            			long time = System.currentTimeMillis();
                            			if(!Main.overlay_xp.containsKey(p) && getXpForLevel(hunter_base_level, xp) != 0) {
                            				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp));
                            				Main.overlay_time.put(p, time + 2000);
                            			} else if(getXpForLevel(hunter_base_level, xp) != 0){
                            				Double sup = Main.overlay_xp.get(p);
                            				Main.overlay_xp.remove(p);
                            				Main.overlay_time.remove(p);
                            				Main.overlay_time.put(p, time + 2000);
                            				Main.overlay_xp.put(p, getXpForLevel(hunter_base_level, xp) + sup);
                            			}
                            			if(hunter_xp >= hunter_max_xp && !(hunter_base_level + 1 == 21)) {
                            				try {
                            				    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_level = ? WHERE uuid = ?");
                            				    r.setInt(1, hunter_base_level + 1);
                            				    r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            				    r.execute();
                            				    r.close();
                            			    } catch (SQLException e) {
                            				    e.printStackTrace();
                            			    }
                            				giftForLevel(p, hunter_base_level + 1);
                            			}
                            			try {
                            			    PreparedStatement r = main.connection.prepareStatement("UPDATE jobs SET hunter_xp = ? WHERE uuid = ?");
                            		     	r.setDouble(1, hunter_xp);
                            		    	r.setString(2, Minecraft.getMinecraft().thePlayer.getGameProfile().getId().toString());
                            			    r.execute();
                            			    r.close();
                            		    } catch (SQLException e) {
                            			    e.printStackTrace();
                            		    }
                            		}
                            	}
                            	
                            	
                            	public static void giftForLevel(EntityPlayer p, int level) {
                            		p.addChatMessage(new ChatComponentText("Bravo, tu passes niveau "+level+" félicitations ! Voici un petit cadeau pour toi !"));
                            		System.out.println("Récompense de niveau "+level+" pour "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName());
                            		if(level == 2) {MinecraftServer.getServer().getCommandManager().executeCommand(MinecraftServer.getServer(), "give "+Minecraft.getMinecraft().thePlayer.getGameProfile().getName()+" elonia:fluorine_sword");}
                            		if(level == 3) {}
                            		if(level == 4) {}
                            		if(level == 5) {}
                            		if(level == 6) {}
                            		if(level == 7) {}
                            		if(level == 8) {}
                            		if(level == 9) {}
                            		if(level == 10) {}
                            		if(level == 11) {}
                            		if(level == 12) {}
                            		if(level == 13) {}
                            		if(level == 14) {}
                            		if(level == 15) {}
                            		if(level == 16) {}
                            		if(level == 17) {}
                            		if(level == 18) {}
                            		if(level == 19) {}
                            		if(level == 20) {}
                            	}
                            }
                            

                            Logiquement, ca retourne false si le joueur n’est pas inscrit et si oui ca return true. La ca me met juste une erreur.

                            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

                              Tu as toujours un NPE.
                              Utilises ton débogueur pour trouver quelle variable est null.

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

                                C’est bon j’arrive à me connecter maintenant. Mais lorsque j’ouvre le menu, le client n’arrive pas à récupérer les données du joueur stockées dans la bdd. Comment faire pour que :
                                -Le client demande au serveur les données
                                -Le serveur interroge la base de données
                                -Le client reçoit les données et les écrits dans le GUI

                                Merci

                                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

                                  En utilisant des paquets.
                                  https://www.minecraftforgefrance.fr/topic/1000/1-7-2-le-network

                                  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