MFF

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

    Liste de personne.

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    33 Messages 5 Publieurs 6.4k Vues 1 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • BrokenSwingB Hors-ligne
      BrokenSwing Moddeurs confirmés Rédacteurs
      dernière édition par

      Ok, du coup tu veux sauvegarder les données seulement lorsque que le serveur s’éteint ou à chaque modification de la HashMap ?

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

        @‘BrokenSwing’:

        Ok, du coup tu veux sauvegarder les données seulement lorsque que le serveur s’éteint ou à chaque modification de la HashMap ?

        A chaque modification de la hashmap.

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

          Ok, maintenant dit-moi où tu bloques ? Tu sais utiliser le package java.io ?

          1 réponse Dernière réponse Répondre Citer 0
          • DiabolicaTrixD Hors-ligne
            DiabolicaTrix Correcteurs Moddeurs confirmés
            dernière édition par

            Dans ton cas, c’est du Java tout simplement, tu peux regarder des tutos sur l’écriture dans un fichier.

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

              @‘BrokenSwing’:

              Ok, maintenant dit-moi où tu bloques ? Tu sais utiliser le package java.io ?

              Bah le truc c’est que je bloque simplement au enregistrement sur un dossier externe.

              Le package java.io correspond a quoi ? ^^

              edit:

              J’ai trouvé ça:

              
              [size=x-smallpackage com.test;
              
              import java.io.*;
              
              public class A {
              
              public static void main(String[] args) {
              String pathFrom = "c:\\folderFrom\\jaros.jar";
              byte[] tab = lire1(pathFrom);
              
              String pathTo = "C:\\folderTo\\jaros.jar";
              ecrire(pathTo, tab);
              
              System.out.println("test");
              }
              
              public static byte[] lire1(String pathFrom) {
              // Lire le fichier
              byte[] tabReadData = null;
              File file = new File(pathFrom);
              
              try {
              FileInputStream fin = new FileInputStream(file);
              tabReadData = new byte[(int) file.length()];
              fin.read(tabReadData);
              } catch (FileNotFoundException e) {
              e.printStackTrace();
              } catch (IOException e) {
              e.printStackTrace();
              }
              
              return tabReadData;
              }
              
              public static byte[] lire2(String pathFrom) {
              File file = new File(pathFrom);
              byte[] fileData = new byte[(int) file.length()];
              DataInputStream dis;
              try {
              dis = new DataInputStream(new FileInputStream(file));
              dis.readFully(fileData);
              dis.close();
              } catch (FileNotFoundException e) {
              e.printStackTrace();
              } catch (IOException e) {
              e.printStackTrace();
              }
              return fileData;
              }
              
              public static void ecrire(String pathTo, byte[] tab) {
              try {
              FileOutputStream fos = new FileOutputStream(pathTo);
              fos.write(tab);
              fos.close();
              } catch (FileNotFoundException ex) {
              ex.printStackTrace();
              } catch (IOException ioe) {
              ioe.printStackTrace();
              }
              }
              }]
              

              Du coup maintenant je vois a quoi correspond le package java.io et je comprends presque rien ^^

              1 réponse Dernière réponse Répondre Citer 0
              • RedRelayR Hors-ligne
                RedRelay Moddeurs confirmés
                dernière édition par

                Ce que tu cherches a faire, ça s’appelle la sérialization.
                Il existe plein (vraiment plein) de tutoriel la dessus.
                C’est complètement *** d’utiliser ton propre format pour sérialiser tes données surtout lorsque tu n’as aucune connaissance en Java.

                Dans le classpath standard de Minecraft et de Forge, tu as l’API Gson qui te permet de faire simplement un fichier JSON.

                Un tutoriel est disponible ici : http://www.jmdoudoux.fr/java/dej/chap-gson.htm

                –------------------------------------------------------------------------------------
                Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                  @‘RedRelay’:

                  Ce que tu cherches a faire, ça s’appelle la sérialization.
                  Il existe plein (vraiment plein) de tutoriel la dessus.
                  C’est complètement *** d’utiliser ton propre format pour sérialiser tes données surtout lorsque tu n’as aucune connaissance en Java.

                  Dans le classpath standard de Minecraft et de Forge, tu as l’API Gson qui te permet de faire simplement un fichier JSON.

                  Un tutoriel est disponible ici : http://www.jmdoudoux.fr/java/dej/chap-gson.htm

                  Merci,

                  Je penses tenir quelques chose dis moi:

                  
                  package com.CSC.net.Commands;
                  
                  import java.util.HashMap;
                  
                  import com.CSC.net.json.TestSerialisation;
                  
                  import net.minecraft.client.Minecraft;
                  import net.minecraft.command.CommandBase;
                  import net.minecraft.command.CommandException;
                  import net.minecraft.command.ICommandSender;
                  import net.minecraft.entity.player.EntityPlayerMP;
                  import net.minecraft.server.MinecraftServer;
                  import net.minecraft.util.ChatComponentText;
                  import net.minecraft.util.EnumChatFormatting;
                  
                  public class WantedaddCommand extends CommandBase{
                  
                  HashMap <string, string="">array = new HashMap();
                  
                  @Override
                  public String getName() {
                  return "add";
                  }
                  
                  @Override
                  public String getCommandUsage(ICommandSender sender) {
                  return "conjure <text>";
                  }
                  
                  @Override
                  public void execute(ICommandSender sender, String[] args)
                  throws CommandException 
                  {
                  EntityPlayerMP entityplayermp = getPlayer(sender, args[0]);
                  
                  StringBuilder builder = new StringBuilder();
                          for (int i = 1; i < args.length; i++)
                            builder.append(args* + " ");
                          String reason = builder.toString();
                  
                  if(sender.canUseCommand(3, "add"))
                  {
                  if(args.length >= 2)
                  {
                  sender.addChatMessage(new ChatComponentText(entityplayermp.getDisplayNameString() + "ajouter pour: " + builder));
                  TestSerialisation.valeurs.put(args[0], builder);
                  }
                  else
                  {
                  sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /add <player><raison>"));
                  }
                  }
                  else
                  {
                  sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Vous ne pouvez pas faire cette commande!"));
                  }
                  }
                  
                  }
                  
                  
                  
                  package com.CSC.net.json;
                  
                  import java.util.HashMap;
                  import java.util.Map;
                  
                  import com.google.gson.Gson;
                  import com.google.gson.GsonBuilder;
                  
                  public class TestSerialisation {
                  
                  public static Map <string, stringbuilder="">valeurs = new HashMap<string, stringbuilder="">();
                  
                  public static void main(final String[] args) 
                  {
                  final GsonBuilder builder = new GsonBuilder();
                  final Gson gson = builder.create();
                  System.out.println(valeurs);
                  final String json = gson.toJson(valeurs);
                  System.out.println("Resultat = " + json);
                  }
                  }
                  
                  

                  Je supposes qu’il faut enregistrer la classe TestSerialisation.</string,></string,></raison></player></text></string,>

                  1 réponse Dernière réponse Répondre Citer 0
                  • RedRelayR Hors-ligne
                    RedRelay Moddeurs confirmés
                    dernière édition par

                    Heu … non.

                    
                    public class MesDonneesASauvegarderDansUnFichier {
                    
                    /**
                    * Ta Map
                    * A peut être une String pour le nom du joueur ou l'UUID du joueur
                    * B peut être une String pour ce que tu as a enregister ou une liste de String
                    */
                    private final Map <a, b="">map = new HashMap<a, b="">();
                    
                    /**
                    * On met en private pour que seule la fonction static load(File) puisse créer une instance de cet classe
                    */
                    private MesDonneesASauvegarderDansUnFichier() {
                    }
                    
                    /**
                    * Ajoute une information a la map (appelé par la commande)
                    */
                    public void add( /* params … */) {
                    }
                    
                    /**
                    * Sauvegarde la contenu de ta classe dans le fichier
                    * @param file le fichier ou tu souhaite le sauvegarder
                    */
                    public void save(File file) {
                    final GsonBuilder builder = new GsonBuilder();
                    final Gson gson = builder.create();
                    final FileWriter writer = new FileWriter(file);
                    gson.toJson(this, writer);
                    writer.close();
                    }
                    
                    /**
                    * Charge ton instance via le fichier, si celui-ci n'existe pas ou contient de erreurs, une nouvelle instance est créé
                    * @param file
                    * @return
                    */
                    public static MesDonneesASauvegarderDansUnFichier load(File file) {
                    final GsonBuilder builder = new GsonBuilder();
                    final Gson gson = builder.create();
                    final FileReader reader = new FileReader(file);
                    MesDonneesASauvegarderDansUnFichier loaded = null;
                    try {
                    loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                    }catch(JsonParseException e) {
                    loaded = new MesDonneesASauvegarderDansUnFichier();
                    }
                    reader.close();
                    }
                    
                    }
                    
                    

                    PS : Pour la commande, la construction de la chaine par le StringBuilder, c’est de faire le traitement après tes conditions sender.canUseCommand() et args.length, sans quoi tu fais le traitement pour rien dans le cas ou tu ne passes pas dans cette condition.</a,></a,>

                    –------------------------------------------------------------------------------------
                    Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                      @‘RedRelay’:

                      Heu … non.

                      
                      public class MesDonneesASauvegarderDansUnFichier {
                      
                      /**
                      * Ta Map
                      * A peut être une String pour le nom du joueur ou l'UUID du joueur
                      * B peut être une String pour ce que tu as a enregister ou une liste de String
                      */
                      private final Map <a, b="">map = new HashMap<a, b="">();
                      
                      /**
                      * On met en private pour que seule la fonction static load(File) puisse créer une instance de cet classe
                      */
                      private MesDonneesASauvegarderDansUnFichier() {
                      }
                      
                      /**
                      * Ajoute une information a la map (appelé par la commande)
                      */
                      public void add( /* params … */) {
                      }
                      
                      /**
                      * Sauvegarde la contenu de ta classe dans le fichier
                      * @param file le fichier ou tu souhaite le sauvegarder
                      */
                      public void save(File file) {
                      final GsonBuilder builder = new GsonBuilder();
                      final Gson gson = builder.create();
                      final FileWriter writer = new FileWriter(file);
                      gson.toJson(this, writer);
                      writer.close();
                      }
                      
                      /**
                      * Charge ton instance via le fichier, si celui-ci n'existe pas ou contient de erreurs, une nouvelle instance est créé
                      * @param file
                      * @return
                      */
                      public static MesDonneesASauvegarderDansUnFichier load(File file) {
                      final GsonBuilder builder = new GsonBuilder();
                      final Gson gson = builder.create();
                      final FileReader reader = new FileReader(file);
                      MesDonneesASauvegarderDansUnFichier loaded = null;
                      try {
                      loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                      }catch(JsonParseException e) {
                      loaded = new MesDonneesASauvegarderDansUnFichier();
                      }
                      reader.close();
                      }
                      
                      }
                      
                      

                      PS : Pour la commande, la construction de la chaine par le StringBuilder, c’est de faire le traitement après tes conditions sender.canUseCommand() et args.length, sans quoi tu fais le traitement pour rien dans le cas ou tu ne passes pas dans cette condition.</a,></a,>

                      D’acc,

                      Du coup j’ai ça:

                      
                      package com.CSC.net.json;
                      
                      import java.io.File;
                      import java.io.FileNotFoundException;
                      import java.io.FileReader;
                      import java.io.FileWriter;
                      import java.io.IOException;
                      import java.util.HashMap;
                      import java.util.Map;
                      
                      import com.CSC.net.Commands.WantedaddCommand;
                      import com.google.gson.Gson;
                      import com.google.gson.GsonBuilder;
                      import com.google.gson.JsonParseException;
                      
                      public class MesDonneesASauvegarderDansUnFichier {
                      
                      /**
                      * Ta Map
                      * A peut être une String pour le nom du joueur ou l'UUID du joueur
                      * B peut être une String pour ce que tu as a enregister ou une liste de String
                      */
                      private final Map <string, stringbuilder="">map = new HashMap<string, stringbuilder="">();
                      
                      /**
                      * On met en private pour que seule la fonction static load(File) puisse créer une instance de cet classe
                      */
                      private MesDonneesASauvegarderDansUnFichier() {
                      }
                      
                      /**
                      * Ajoute une information a la map (appelé par la commande)
                      */
                      public void add(String string, StringBuilder stringbuilder) {
                      string = WantedaddCommand.m;
                      stringbuilder = WantedaddCommand.s;
                      map.put(string, stringbuilder);
                      }
                      
                      /**
                      * Sauvegarde la contenu de ta classe dans le fichier
                      * @param file le fichier ou tu souhaite le sauvegarder
                      * @throws IOException 
                      */
                      public void save(File file) throws IOException {
                      final GsonBuilder builder = new GsonBuilder();
                      final Gson gson = builder.create();
                      final FileWriter writer = new FileWriter(file);
                      gson.toJson(this, writer);
                      writer.close();
                      }
                      
                      /**
                      * Charge ton instance via le fichier, si celui-ci n'existe pas ou contient de erreurs, une nouvelle instance est créé
                      * @param file
                      * @return
                      * @throws IOException 
                      */
                      public static MesDonneesASauvegarderDansUnFichier load(File file) throws IOException {
                      final GsonBuilder builder = new GsonBuilder();
                      final Gson gson = builder.create();
                      final FileReader reader = new FileReader(file);
                      MesDonneesASauvegarderDansUnFichier loaded = null;
                      try {
                      loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                      }catch(JsonParseException e) {
                      loaded = new MesDonneesASauvegarderDansUnFichier();
                      }
                      reader.close();
                      return loaded;
                      }
                      
                      }
                      

                      Mais j’ai un problème tu me dis que je dois appeler la fonction add quand j’execute la commande mais le problème est que add n’est pas en static du coup je fais comment ?

                      Commande:

                      
                      package com.CSC.net.Commands;
                      
                      import java.util.HashMap;
                      
                      import com.CSC.net.json.MesDonneesASauvegarderDansUnFichier;
                      
                      import net.minecraft.client.Minecraft;
                      import net.minecraft.command.CommandBase;
                      import net.minecraft.command.CommandException;
                      import net.minecraft.command.ICommandSender;
                      import net.minecraft.entity.player.EntityPlayerMP;
                      import net.minecraft.server.MinecraftServer;
                      import net.minecraft.util.ChatComponentText;
                      import net.minecraft.util.EnumChatFormatting;
                      
                      public class WantedaddCommand extends CommandBase{
                      
                      public static String m;
                      
                      public static StringBuilder s;
                      
                      @Override
                      public String getName() {
                      return "add";
                      }
                      
                      @Override
                      public String getCommandUsage(ICommandSender sender) {
                      return "conjure <text>";
                      }
                      
                      @Override
                      public void execute(ICommandSender sender, String[] args)
                      throws CommandException 
                      {
                      EntityPlayerMP entityplayermp = getPlayer(sender, args[0]);
                      m = entityplayermp.getDisplayNameString();
                      
                      if(sender.canUseCommand(3, "add"))
                      {
                      if(args.length >= 2)
                      {
                      StringBuilder builder = new StringBuilder();
                             for (int i = 1; i < args.length; i++)
                               builder.append(args* + " ");
                             String reason = builder.toString();
                             s = builder;
                      sender.addChatMessage(new ChatComponentText(entityplayermp.getDisplayNameString() + "ajouter pour: " + builder));
                      MesDonneesASauvegarderDansUnFichier. // ici je fais comment ?
                      }
                      else
                      {
                      sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /add <player><raison>"));
                      }
                      }
                      else
                      {
                      sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Vous ne pouvez pas faire cette commande!"));
                      }
                      }
                      
                      }
                      
                      ```</raison></player></text></string,></string,>
                      1 réponse Dernière réponse Répondre Citer 0
                      • RedRelayR Hors-ligne
                        RedRelay Moddeurs confirmés
                        dernière édition par

                        On ne stocke pas des StringBuilder dans ta Map.

                        Dans la classe principale de ton mod, tu ajoute un attribut static privé qui sera l’instance de ta classe a sauvegardé que tu aura chargé dans le preInit() via la méthode load.
                        Ensuite tu fais un getter static dans ta classe principale pour pour accéder a ton objet et donc a ta méthode add a partir de la commande.

                        Dans ta commande, String m et StringBuilder s, n’ont pas lieu d’exister.

                        
                        // ici je fais comment ?
                        TaClassPrincipale.getMesDonneesASauvegarderDansUnFichier().add(…)
                        
                        

                        –------------------------------------------------------------------------------------
                        Si tu trouves mon intervention pertinente, n'hésite pas a m…

                        1 réponse Dernière réponse Répondre Citer 1
                        • GabsG Hors-ligne
                          Gabs
                          dernière édition par

                          @‘RedRelay’:

                          On ne stocke pas des StringBuilder dans ta Map.

                          Dans la classe principale de ton mod, tu ajoute un attribut static privé qui sera l’instance de ta classe a sauvegardé que tu aura chargé dans le preInit() via la méthode load.
                          Ensuite tu fais un getter static dans ta classe principale pour pour accéder a ton objet et donc a ta méthode add a partir de la commande.

                          Dans ta commande, String m et StringBuilder s, n’ont pas lieu d’exister.

                          
                          // ici je fais comment ?
                          TaClassPrincipale.getMesDonneesASauvegarderDansUnFichier().add(…)
                          
                          

                          Ah okkk c’est bon du coup 😄

                          Mais le fichier est créer ou est s’appelle comment ?

                          Merci en tout cas !!!

                          Edit:

                          Ah j’ai crash car le fichier est introuvable mdr donc du coup c’est bon oublie la question j’essaye et je te dis!!

                          Crash quand j’execute la commande:

                          
                          [18:25:52] [Client thread/INFO]: [CHAT] Cette commande a échoué suite à une erreur inconnue
                          [18:26:56] [Server thread/ERROR]: Couldn't process command: 'add floriangabet salut c'est un test'
                          java.lang.NullPointerException
                          at com.CSC.net.Commands.WantedaddCommand.execute(WantedaddCommand.java:50) ~[WantedaddCommand.class:?]
                          at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:110) [CommandHandler.class:?]
                          at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:87) [CommandHandler.class:?]
                          at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:853) [NetHandlerPlayServer.class:?]
                          at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:829) [NetHandlerPlayServer.class:?]
                          at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:44) [C01PacketChatMessage.class:?]
                          at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:57) [C01PacketChatMessage.class:?]
                          at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:24) [PacketThreadUtil$1.class:?]
                          at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_45]
                          at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
                          at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:709) [FMLCommonHandler.class:?]
                          at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
                          at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:669) [MinecraftServer.class:?]
                          at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:171) [IntegratedServer.class:?]
                          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:540) [MinecraftServer.class:?]
                          at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
                          [18:26:56] [Client thread/INFO]: [CHAT] floriangabetajouter pour: salut c'est un test 
                          [18:26:56] [Client thread/INFO]: [CHAT] Cette commande a échoué suite à une erreur inconnue
                          

                          J’ai du mal comprendre pour le getter j’ai fais ça:

                              public static MesDonneesASauvegarderDansUnFichier getter;
                          
                          1 réponse Dernière réponse Répondre Citer 0
                          • RedRelayR Hors-ligne
                            RedRelay Moddeurs confirmés
                            dernière édition par

                            La c’est du Java de base, il faut sérieusement que tu t’y mette avant de continuer ton mod.
                            Les tutoriels de JM Doudoux sont très complet, fait au moins la partis 1 et 2 avant de commencer à modder : http://www.jmdoudoux.fr/accueil_java.htm

                            
                            public class TaClassPrincipale {
                            
                            private static MesDonneesASauvegarderDansUnFichier donnees;
                            
                            public void onPreInit(FMLPreInitializationEvent evt) {
                            donnes = MesDonneesASauvegarderDansUnFichier.load(new File("path/vers/ou/tu/veux/ecrire/les/donnees/sur/le/disque"));
                            }
                            
                            public static MesDonneesASauvegarderDansUnFichier getDonnees() {
                            return donnees;
                            }
                            
                            }
                            
                            

                            –------------------------------------------------------------------------------------
                            Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                              @‘RedRelay’:

                              La c’est du Java de base, il faut sérieusement que tu t’y mette avant de continuer ton mod.
                              Les tutoriels de JM Doudoux sont très complet, fait au moins la partis 1 et 2 avant de commencer à modder : http://www.jmdoudoux.fr/accueil_java.htm

                              
                              public class TaClassPrincipale {
                              
                                 private static MesDonneesASauvegarderDansUnFichier donnees;
                              
                                 public void onPreInit(FMLPreInitializationEvent evt) {
                                      donnes = MesDonneesASauvegarderDansUnFichier.load(new File("path/vers/ou/tu/veux/ecrire/les/donnees/sur/le/disque"));
                                 }
                              
                                 public static MesDonneesASauvegarderDansUnFichier getDonnees() {
                                     return donnees;
                                 }
                              
                              }
                              
                              

                              J’avais pas bien compris…

                              Pour le new File je fais un event.getSuggestedConfigurationFile Comme ça il se retrouve dans le fichier config.

                              Sinon j’ai toujours le crash…

                              [18:5

                              5:37] [Server thread/ERROR]: Couldn't process command: 'add floriangabet salut c un test'
                              java.lang.NullPointerException
                              at com.CSC.net.Commands.WantedaddCommand.execute(WantedaddCommand.java:45) ~[WantedaddCommand.class:?]
                              at net.minecraft.command.CommandHandler.tryExecute(CommandHandler.java:110) [CommandHandler.class:?]
                              at net.minecraft.command.CommandHandler.executeCommand(CommandHandler.java:87) [CommandHandler.class:?]
                              at net.minecraft.network.NetHandlerPlayServer.handleSlashCommand(NetHandlerPlayServer.java:853) [NetHandlerPlayServer.class:?]
                              at net.minecraft.network.NetHandlerPlayServer.processChatMessage(NetHandlerPlayServer.java:829) [NetHandlerPlayServer.class:?]
                              at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:44) [C01PacketChatMessage.class:?]
                              at net.minecraft.network.play.client.C01PacketChatMessage.processPacket(C01PacketChatMessage.java:57) [C01PacketChatMessage.class:?]
                              at net.minecraft.network.PacketThreadUtil$1.run(PacketThreadUtil.java:24) [PacketThreadUtil$1.class:?]
                              at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_45]
                              at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_45]
                              at net.minecraftforge.fml.common.FMLCommonHandler.callFuture(FMLCommonHandler.java:709) [FMLCommonHandler.class:?]
                              at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:726) [MinecraftServer.class:?]
                              at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:669) [MinecraftServer.class:?]
                              at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:171) [IntegratedServer.class:?]
                              at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:540) [MinecraftServer.class:?]
                              at java.lang.Thread.run(Thread.java:745) [?:1.8.0_45]
                              [18:55:37] [Client thread/INFO]: [CHAT] floriangabetajouter pour: salut c un test 
                              [18:55:37] [Client thread/INFO]: [CHAT] Cette commande a échoué suite à une erreur inconnue
                              
                              

                              ligne 45 pointe ici:

                              Main.getDonnees().add(args[0], reason);

                              1 réponse Dernière réponse Répondre Citer 0
                              • RedRelayR Hors-ligne
                                RedRelay Moddeurs confirmés
                                dernière édition par

                                @‘floriangabet’:

                                Pour le new File je fais un event.getSuggestedConfigurationFile Comme ça il se retrouve dans le fichier config.

                                Je te conseil d’en choisir un autre sinon tes données de config seront écrasées.

                                Peux-tu poster le code mis a jour de ta classe principale, de ta commande et de ta classe a sauvegarder ?

                                –------------------------------------------------------------------------------------
                                Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                                  @‘RedRelay’:

                                  @‘floriangabet’:

                                  Pour le new File je fais un event.getSuggestedConfigurationFile Comme ça il se retrouve dans le fichier config.

                                  Je te conseil d’en choisir un autre sinon tes données de config seront écrasées.

                                  Peux-tu poster le code mis a jour de ta classe principale, de ta commande et de ta classe a sauvegarder ?

                                  Tien:

                                  
                                  package com.CSC.net;
                                  
                                  import java.io.File;
                                  import java.io.IOException;
                                  import java.nio.file.Files;
                                  
                                  import org.apache.logging.log4j.Logger;
                                  
                                  import net.minecraft.item.Item;
                                  import net.minecraftforge.common.MinecraftForge;
                                  import net.minecraftforge.fml.common.FMLCommonHandler;
                                  import net.minecraftforge.fml.common.Mod;
                                  import net.minecraftforge.fml.common.Mod.EventHandler;
                                  import net.minecraftforge.fml.common.Mod.Instance;
                                  import net.minecraftforge.fml.common.SidedProxy;
                                  import net.minecraftforge.fml.common.event.FMLInitializationEvent;
                                  import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
                                  import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
                                  import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
                                  import net.minecraftforge.fml.common.network.NetworkRegistry;
                                  import net.minecraftforge.fml.common.network.simpleimpl.SimpleNetworkWrapper;
                                  import net.minecraftforge.fml.relauncher.Side;
                                  
                                  import com.CSC.net.Commands.WantedaddCommand;
                                  import com.CSC.net.Events.Events;
                                  import com.CSC.net.GUI.GuiHandlerInv;
                                  import com.CSC.net.GUI.GuiHandlerMachine;
                                  import com.CSC.net.GUI.GuiHandlerPanierLinge;
                                  import com.CSC.net.item.CSCItems;
                                  import com.CSC.net.item.packet.PacketMoney;
                                  import com.CSC.net.item.packet.PacketRank;
                                  import com.CSC.net.item.packet.PacketSang;
                                  import com.CSC.net.json.MesDonneesASauvegarderDansUnFichier;
                                  import com.CSC.net.proxy.CommonProxy;
                                  import com.CSC.net.save.RankSave;
                                  
                                  @Mod(modid = Main.MODID, version = Main.VERSION, name = "Cite Sous Controle")
                                  public class Main
                                  {
                                      public static final String MODID = "csc";
                                      public static final String VERSION = "1.0";
                                  
                                      private static MesDonneesASauvegarderDansUnFichier donnees;
                                  
                                      public static SimpleNetworkWrapper network;
                                  
                                      @Instance(Main.MODID)
                                      public static Main instance;
                                  
                                      @SidedProxy(clientSide = "com.CSC.net.proxy.ClientProxy", serverSide = "com.CSC.net.proxy.ServerProxy")
                                      public static CommonProxy proxy;
                                  
                                      public static Logger logger;
                                  
                                      @EventHandler
                                      public void preinit(FMLPreInitializationEvent event) throws IOException
                                      {
                                        donnees = MesDonneesASauvegarderDansUnFichier.load(event.getSuggestedConfigurationFile());
                                      logger = event.getModLog();
                                      proxy.preInit(event.getSuggestedConfigurationFile());
                                  
                                      network = NetworkRegistry.INSTANCE.newSimpleChannel("csc:");
                                          network.registerMessage(PacketSang.Handler.class, PacketSang.class, 0, Side.CLIENT);
                                          network.registerMessage(PacketRank.Handler.class, PacketRank.class, 1, Side.SERVER);
                                  network.registerMessage(PacketMoney.ClientHandler.class, PacketMoney.class, 8, Side.CLIENT);
                                  network.registerMessage(PacketMoney.ServerHandler.class, PacketMoney.class, 8, Side.SERVER);
                                  
                                      }
                                  
                                      @EventHandler
                                      public void init(FMLInitializationEvent event)
                                      {
                                      proxy.init();
                                  
                                  NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerPanierLinge());
                                  //  
                                  // NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerInv());
                                  //  
                                  // NetworkRegistry.INSTANCE.registerGuiHandler(instance, new GuiHandlerMachine());
                                  
                                  //Events
                                      MinecraftForge.EVENT_BUS.register(new Events());
                                      FMLCommonHandler.instance().bus().register(new Events());
                                  
                                      }
                                  
                                      @EventHandler
                                      public void onServerStarting(FMLServerStartingEvent event)
                                      {
                                          if(RankSave.instance == null)
                                          {
                                              RankSave.load(event.getServer().getEntityWorld());
                                              System.out.println("ranksaveload");
                                          }
                                          event.registerServerCommand(new WantedaddCommand());
                                  
                                      }
                                  
                                      public static MesDonneesASauvegarderDansUnFichier getDonnees() {
                                          return donnees;
                                      }
                                  
                                      @EventHandler
                                      public void postinit(FMLPostInitializationEvent event)
                                      {
                                  
                                      }
                                  }
                                  
                                  
                                  
                                  package com.CSC.net.Commands;
                                  
                                  import java.util.HashMap;
                                  
                                  import com.CSC.net.Main;
                                  import com.CSC.net.json.MesDonneesASauvegarderDansUnFichier;
                                  
                                  import net.minecraft.client.Minecraft;
                                  import net.minecraft.command.CommandBase;
                                  import net.minecraft.command.CommandException;
                                  import net.minecraft.command.ICommandSender;
                                  import net.minecraft.entity.player.EntityPlayerMP;
                                  import net.minecraft.server.MinecraftServer;
                                  import net.minecraft.util.ChatComponentText;
                                  import net.minecraft.util.EnumChatFormatting;
                                  
                                  public class WantedaddCommand extends CommandBase{
                                  
                                  @Override
                                  public String getName() {
                                  return "add";
                                  }
                                  
                                  @Override
                                  public String getCommandUsage(ICommandSender sender) {
                                  return "conjure <text>";
                                  }
                                  
                                  @Override
                                  public void execute(ICommandSender sender, String[] args)
                                  throws CommandException 
                                  {
                                  
                                  if(sender.canUseCommand(3, "add"))
                                  {
                                  if(args.length >= 2)
                                  {
                                  EntityPlayerMP entityplayermp = getPlayer(sender, args[0]);
                                  StringBuilder builder = new StringBuilder();
                                         for (int i = 1; i < args.length; i++)
                                           builder.append(args* + " ");
                                         String reason = builder.toString();
                                  sender.addChatMessage(new ChatComponentText(entityplayermp.getDisplayNameString() + "ajouter pour: " + builder));
                                  Main.getDonnees().add(args[0], reason);
                                  }
                                  else
                                  {
                                  sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Usage: /add <player><raison>"));
                                  }
                                  }
                                  else
                                  {
                                  sender.addChatMessage(new ChatComponentText(EnumChatFormatting.RED + "Vous ne pouvez pas faire cette commande!"));
                                  }
                                  }
                                  
                                  }
                                  
                                  
                                  
                                  package com.CSC.net.json;
                                  
                                  import java.io.File;
                                  import java.io.FileNotFoundException;
                                  import java.io.FileReader;
                                  import java.io.FileWriter;
                                  import java.io.IOException;
                                  import java.util.HashMap;
                                  import java.util.Map;
                                  
                                  import com.CSC.net.Commands.WantedaddCommand;
                                  import com.google.gson.Gson;
                                  import com.google.gson.GsonBuilder;
                                  import com.google.gson.JsonParseException;
                                  
                                  public class MesDonneesASauvegarderDansUnFichier {
                                  
                                  /**
                                  * Ta Map
                                  * A peut être une String pour le nom du joueur ou l'UUID du joueur
                                  * B peut être une String pour ce que tu as a enregister ou une liste de String
                                  */
                                  private final Map <string, string="">map = new HashMap<string, string="">();
                                  
                                  /**
                                  * On met en private pour que seule la fonction static load(File) puisse créer une instance de cet classe
                                  */
                                  private MesDonneesASauvegarderDansUnFichier() {
                                  }
                                  
                                  /**
                                  * Ajoute une information a la map (appelé par la commande)
                                  */
                                  public void add(String string, String string2) {
                                  
                                  }
                                  
                                  /**
                                  * Sauvegarde la contenu de ta classe dans le fichier
                                  * @param file le fichier ou tu souhaite le sauvegarder
                                  * @throws IOException 
                                  */
                                  public void save(File file) throws IOException {
                                  final GsonBuilder builder = new GsonBuilder();
                                  final Gson gson = builder.create();
                                  final FileWriter writer = new FileWriter(file);
                                  gson.toJson(this, writer);
                                  writer.close();
                                  }
                                  
                                  /**
                                  * Charge ton instance via le fichier, si celui-ci n'existe pas ou contient de erreurs, une nouvelle instance est créé
                                  * @param file
                                  * @return
                                  * @throws IOException 
                                  */
                                  public static MesDonneesASauvegarderDansUnFichier load(File file) throws IOException {
                                  final GsonBuilder builder = new GsonBuilder();
                                  final Gson gson = builder.create();
                                  final FileReader reader = new FileReader(file);
                                  MesDonneesASauvegarderDansUnFichier loaded = null;
                                  try {
                                  loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                                  }catch(JsonParseException e) {
                                  loaded = new MesDonneesASauvegarderDansUnFichier();
                                  }
                                  reader.close();
                                  return loaded;
                                  }
                                  
                                  }
                                  
                                  

                                  Edit:

                                  J’ai une question aussi donc la save serra stocker par exemple dans le fichier config du jeu.
                                  Mais a chaque fois que un joueur va faire la comment ça va lui ajouter se qu’il a mis dans la commande que de son côté non ?</string,></string,></raison></player></text>

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

                                    aaaaaaaaaargh mes yeux !!! ça pique sauvez moi !

                                    Qu’est-ce que c’est que ces noms de packages, de classes etc ?! Tu aurais au moins pu enlever les commentaires des tutos

                                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                                    Pas de demandes de support par MP ni par skype SVP.
                                    Je n'accepte sur skype que l…

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • RedRelayR Hors-ligne
                                      RedRelay Moddeurs confirmés
                                      dernière édition par

                                      Remplace

                                      
                                      try {
                                         loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                                      }catch(JsonParseException e) {
                                         loaded = new MesDonneesASauvegarderDansUnFichier();
                                      }
                                      
                                      

                                      par

                                      
                                      try {
                                         loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                                      }catch(JsonParseException e) {
                                      }
                                      
                                      if(loaded == null) {
                                         loaded = new MesDonneesASauvegarderDansUnFichier();
                                      }
                                      
                                      

                                      Comme l’a dit Scarex, tu ne respecte pas les conventions de nommages et ce n’est pas une bonne habitude

                                      EDIT : Tu dois aussi remplacer "builder.append(args* + " “);” par “builder.append(args*).append(” “);”

                                      –------------------------------------------------------------------------------------
                                      Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                                        @‘RedRelay’:

                                        Remplace

                                        
                                        try {
                                           loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                                        }catch(JsonParseException e) {
                                           loaded = new MesDonneesASauvegarderDansUnFichier();
                                        }
                                        
                                        

                                        par

                                        
                                        try {
                                           loaded = gson.fromJson(reader, MesDonneesASauvegarderDansUnFichier.class);
                                        }catch(JsonParseException e) {
                                        }
                                        
                                        if(loaded == null) {
                                           loaded = new MesDonneesASauvegarderDansUnFichier();
                                        }
                                        
                                        

                                        Comme l’a dit Scarex, tu ne respecte pas les conventions de nommages et ce n’est pas une bonne habitude

                                        EDIT : Tu dois aussi remplacer "builder.append(args* + " “);” par “builder.append(args*).append(” “);”

                                        D’acc,

                                        Alors j’ai plus d’érreur mais rien est ajouté dans le fichier et regarde mon édit de mon précédant message .

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • DiabolicaTrixD Hors-ligne
                                          DiabolicaTrix Correcteurs Moddeurs confirmés
                                          dernière édition par

                                          Est-ce que tu écris dans le fichier, au moins? Sinon, pour ton edit, si tu veux que la liste soit seulement côté serveur, tu crées le fichier seulement sur le serveur et les commandes sont client/serveur, donc tu vérifies si !worldObj.isRemote et tu écris dans le fichier. Si tu veux qu’elle soit synchronisée, tu n’as rien besoin de faire étant donnée que c’est déjà client/serveur.

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • RedRelayR Hors-ligne
                                            RedRelay Moddeurs confirmés
                                            dernière édition par

                                            Si tu n’appel save() a aucun moment, forcément ce n’est jamais enregistré.
                                            Tu peux appeler save() en dernière instruction de ton add, tu peux aussi mettre le champs File en attribut et l’initialisé dans le constructeur, ce sera plus pratique.

                                            La save sera stocké dans %appdata%/.minecraft/config/MODID.cfg

                                            Dans ton cas, les ajouts dans la map se font coté serveur puisque tu utilises des commandes.

                                            –------------------------------------------------------------------------------------
                                            Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB