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.
    • 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
                    • GabsG Hors-ligne
                      Gabs
                      dernière édition par

                      D’acc exact j’ai oublier le save.

                      Donc si j’ai bien compris je dois créer le fichier sur le serveur ?

                      Comment je peux procédé ?

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

                        Non, il est déjà créé. Ce qu’il dit c’est que tu dois save() après avoir ajouter quelque chose, sinon il n’y aura rien.

                        Sinon, si ta méthode add est vide, tu n’ajouteras rien…

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

                          Lache ton mod un instant, fait un programme Java qui reprend les éléments que j’ai abordé et test par toi même.
                          C’est le seul moyen que tu as pour comprendre.

                          Même si la solution que je t’ai fournis fonctionne, elle reste très générale et pas forcément conçu au mieux pour ton projet.
                          Si tu ne comprends pas par toi même la solution que je t’ai proposé, tu ne pourra pas la modifier pour qu’elle colle parfaitement a ta conception.

                          –------------------------------------------------------------------------------------
                          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

                            Non mais oui c’est bon j’ai fais pour le add faut juste faire un map.put(string, string2) ^^
                            Et j’ai une question, Comment marche les niveau de permissions avec les commandes sous forge ?
                            En gros si j’ai bien compris en multijoueur la fichier serra hébergeur dans le fichier config du serveur c’est ça ?

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

                              En gros, tu peux le placer où tu veux, mais tu peux le placer dans le dossier config si tu veux. Ensuite, le niveau de permission est déterminé dans le fichier ops.json, il me semble. Chaque opérateur peut avoir un niveau différent et tu peux le récupéré sur Forge. Cependant, je ne sais pas si il y a un moyen de changer cette valeur directement en jeu.

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

                                D’accordd merci les gens 😄

                                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