MFF

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

    [1.12] Obtenir chemin dossier resources pour JavaIO

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.2
    12 Messages 2 Publieurs 739 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.
    • SpyManS Hors-ligne
      SpyMan
      dernière édition par SpyMan

      yo, deja sache que tu ne peux pas ecrire dans un fichier se trouvant dans un jar ou meme en creer

      public void CreateJsonStats(EntityJoinWorldEvent e)
      

      et les noms de fonctions prennent pas de majuscules

      un jar c’est comme une archive ZIP c’est un fichier pas un répertoire donc tu ne peux pas récupérer comme ca contenun pour le stockage utilise directement un fichier situé en dehors de ton jar (genre dans le dossier config de minecraft par exemple ou alors ailleurs, ca c’est comme tu veux apres)

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

        Hey merci de ton aide j’aimerais savoir si tu avais un exemple de code ??

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

          t’as juste a créer un fichier et a écrire dedans…
          puis si il existe alors tu le lis sinon tu en créer un

          File f = new File("./json_stats.json"); // The file will be located into minecraft root directory ('.minecraft/json_stats.json')  or server root directory (the directory that contains your minecraft server jar file)
          
          if (f.exists()) {
              // Read file...
          } else {
              // Create default empty file or other things
          }
          
          1 réponse Dernière réponse Répondre Citer 0
          • S Hors-ligne
            silvertaurus
            dernière édition par

            Merci de t’es réponse ainsi que du bout de code afin de m’orienter ^^

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

              Pour la solutin voici mon code afin de vérifier si cela fonctionne correctement

              package fr.silvertaurus.PlayerStats;
              
              import net.minecraft.client.Minecraft;
              import net.minecraftforge.event.entity.EntityJoinWorldEvent;
              import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
              
              import java.io.*;
              
              public class CreateJsonPlayerStats
              {
                  File f = new File("./Test.json");
                  @SubscribeEvent
                  public void CreateJsonStats(EntityJoinWorldEvent e) throws IOException {
                      if(e.getEntity().equals(Minecraft.getMinecraft().player))
                      {
                          if (f.exists())
                          {
                              System.out.println("Le fichier "+f.getName()+" existe déjà !");
                              System.out.println("Chemin d'accès : "+f.getPath());
                              return;
                          }
                          else
                          {
                              System.out.println("Le fichier "+f.getName()+" n'existe pas !" );
                              System.out.println("Création du fichier ..." );
                              f.createNewFile();
              
                              ///!\ Ceci sera à supprimer cela permet de bien vérifier les étapes si la création du fichier vide
                              ///!\ est un succès après vous le remplissez à la suite du f.createNewFile();
                              if(f.exists())
                              {
                                  System.out.println("Création du fichier réussie !" );
                                  System.out.println("Chemin d'accès : "+f.getPath());
                                  return;
                              }
                              else
                              {
                                  System.out.println("Création du fichier échouer !" );
                                  return;
                              }
                          }
                      }
                  }
              }
              
              
              1 réponse Dernière réponse Répondre Citer 0
              • SpyManS Hors-ligne
                SpyMan
                dernière édition par SpyMan

                attention ton code fonctionnera pas coté server ca va faire crash le server, il faut que ton event doit enregistrer client only ! si ce n’est pas deja fait

                Minecraft etant une class Client le serveur ne la possede donc pas

                et je vois pas l’interet du check de l’entity c’est useless etandonné que cet event est appelé pour chaque joueur venant de rejoindre le monde

                deplus les noms de method/fonction ne commence jamais par un maj en java public void CreateJsonStats(EntityJoinWorldEvent e)

                => Java Code Convention <=

                et aussi a quoi sert ton systeme tu veux stocké quoi en fait ?

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

                  Salut j’aimerais faire un system de leveling avec des statistiques, genre force, Vitesse minage, Armur, Agiliter etc. Mais là je n’arrive pas a Créer, lire, Modifier un json, dans mon développement d’applications j’utiliser [javax] mais là quand j’essaye avec il n’y a pas [javax] donc pourrais-tu m’aider si jamais tu as un <snipet> de méthode pour l’utilisation de JSON ?

                  Ps: pour l’enregistrement de mes évenements j’utilise MinecraftForge

                  L’alternative trouver :

                  package fr.silvertaurus.PlayerStats;
                  
                  import com.google.gson.JsonObject;
                  import net.minecraft.client.Minecraft;
                  import net.minecraft.entity.player.EntityPlayer;
                  import net.minecraftforge.event.entity.EntityJoinWorldEvent;
                  import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
                  
                  import java.io.*;
                  import java.util.ArrayList;
                  
                  public class CreateJsonPlayerStats
                  {
                      @SubscribeEvent
                      public void CreateJsonStats(EntityJoinWorldEvent e) throws IOException
                      {
                          if(e.getEntity().equals(Minecraft.getMinecraft().player))
                          {
                              EntityPlayer p = Minecraft.getMinecraft().player;
                              
                              File folder = new File("./JsonStats");
                              
                              if(folder.exists())
                              {
                                  File[] listFile = folder.listFiles();
                                  
                                  ArrayList<String> filePlayer = new ArrayList<>();
                                  for(File f : listFile)
                                  {
                                      filePlayer.add(f.getName());
                                  }
                                  
                                  if(filePlayer.contains(p.getUniqueID()+".json"))
                                  {
                                      System.out.println("Un fichier pour ce joueur éxiste déjà !");
                                  }
                                  else
                                  {
                                      this.CreateJson(p, p.getUniqueID().toString());
                                  }
                              }
                              else
                              {
                                  folder.mkdir();
                                  
                                  this.CreateJson(p, p.getUniqueID().toString());
                  
                                  System.out.println("Création du fichier de stats du joueur "+p.getName());
                              }
                          }
                      }
                  
                      public void CreateJson(EntityPlayer p, String fileName) throws IOException
                      {
                          File f = new File("./JsonStats/"+fileName+".json");
                          String jsonFilePath = f.getPath();
                  
                          JsonObject json = new JsonObject();
                          json.addProperty("PlayerName", p.getName());
                          json.addProperty("Level", "0");
                          json.addProperty("Experience", "0");
                  
                          FileWriter file = new FileWriter(jsonFilePath);
                          file.write(String.valueOf(json));
                          file.close();
                      }
                  }
                  

                  Normalement j’aurais du faire cela si le [javax] fonctionne

                      public void CreateJson(String fileName) throws IOException
                      {
                          File f = new File("./JsonStats/"+fileName+".json");
                          String jsonFilePath = f.getPath();
                  
                          JsonObject json = new JsonObject();
                          json.put("level", 0);
                  
                          try(FileWriter file = new FileWriter(jsonFilePath))
                          {
                              file.write(Jsoner.prettyPrint(json.toJson()));
                              file.flush();
                          }
                      }
                  

                  @SpyMan a dit dans [1.12] Obtenir chemin dossier resources pour JavaIO :

                  attention ton code fonctionnera pas coté server ca va faire crash le server, il faut que ton event doit enregistrer client only ! si ce n’est pas deja fait

                  Minecraft etant une class Client le serveur ne la possede donc pas

                  et je vois pas l’interet du check de l’entity c’est useless etandonné que cet event est appelé pour chaque joueur venant de rejoindre le monde

                  deplus les noms de method/fonction ne commence jamais par un maj en java public void CreateJsonStats(EntityJoinWorldEvent e)

                  => Java Code Convention <=

                  et aussi a quoi sert ton systeme tu veux stocké quoi en fait ?

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

                    deja si c’est juste pour stocké quelques valeurs comme ca autant utiliser les properties de java…
                    et en plus tu a fait n’importe quoi, c’est pas comme ca que l’on utiliser la lib GSON
                    de plus je comprends pas pourquoi tu me parle de Javax…
                    pour utiliser GSON : http://www.javacreed.com/simple-gson-example/

                    et les noms de methods/fonctions en java commence par une minuscule ainsi que les noms de variable
                    Je t’invite a lire la Java Code Convention afin de normaliser ton code
                    => https://www.oracle.com/technetwork/java/codeconventions-150003.pdf <=

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

                      Merci de t’es explication, c’est se que j’avais remarquer quand je JSO N Object, cela utiliser la librairie Gson et je l’apprend.

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

                        Voici ma solution après l’apprentissage de Gson:

                        package fr.silvertaurus;
                        
                        import fr.silvertaurus.GuiClient.GuiLife;
                        import fr.silvertaurus.PlayerStats.CreateJsonPlayerStats;
                        import fr.silvertaurus.proxy.CommonProxy;
                        import fr.silvertaurus.utils.PlayerStatsSerialisationManager;
                        import fr.silvertaurus.utils.Reference;
                        import net.minecraftforge.common.MinecraftForge;
                        import net.minecraftforge.fml.common.Mod;
                        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;
                        
                        @Mod(modid = Reference.MOD_ID, name = Reference.MOD_NAME, version = Reference.MOD_VERSION)
                        public class Main
                        {
                            @Mod.Instance(Reference.MOD_ID)
                            public static Main instance;
                        
                            @SidedProxy(clientSide = Reference.CLIENT_PROXY, serverSide = Reference.SERVEUR_PROXY)
                            public static CommonProxy proxy;
                        
                            private PlayerStatsSerialisationManager playerStatsSerialisation;
                        
                            public Main()
                            {
                                this.playerStatsSerialisation = new PlayerStatsSerialisationManager();
                                MinecraftForge.EVENT_BUS.register(new CreateJsonPlayerStats());
                                MinecraftForge.EVENT_BUS.register(new GuiLife());
                            }
                        
                        
                            @Mod.EventHandler
                            public void preInit(FMLPreInitializationEvent e)
                            {
                                proxy.preInit();
                            }
                        
                            @Mod.EventHandler
                            public void Init(FMLInitializationEvent e)
                            {
                                proxy.init();
                            }
                        
                            @Mod.EventHandler
                            public void postInit(FMLPostInitializationEvent e)
                            {
                                proxy.postInit();
                            }
                        
                            public PlayerStatsSerialisationManager getPlayerStatsSerialisation() {
                                return playerStatsSerialisation;
                            }
                        }
                        
                        
                        package fr.silvertaurus.utils;
                        
                        import net.minecraft.client.Minecraft;
                        
                        public class PlayerStatsJson
                        {
                            private String playerName;
                            private int level;
                            private int experience;
                        
                            public PlayerStatsJson(String playerName, int level, int experience) {
                                this.playerName = playerName;
                                this.level = level;
                                this.experience = experience;
                            }
                        
                            public int getExperience() {
                                return experience;
                            }
                        
                            public String getPlayerName() {
                                return playerName;
                            }
                        
                            public int getLevel() {
                                return level;
                            }
                        }
                        
                        
                        package fr.silvertaurus.PlayerStats;
                        
                        import com.google.gson.JsonObject;
                        import fr.silvertaurus.Main;
                        import fr.silvertaurus.utils.JsonFileManager;
                        import fr.silvertaurus.utils.PlayerStatsJson;
                        import fr.silvertaurus.utils.PlayerStatsSerialisationManager;
                        import net.minecraft.client.Minecraft;
                        import net.minecraft.entity.player.EntityPlayer;
                        import net.minecraftforge.event.entity.EntityJoinWorldEvent;
                        import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
                        
                        import java.io.*;
                        
                        public class CreateJsonPlayerStats
                        {
                            @SubscribeEvent
                            public void onPlayerJoinEvent(EntityJoinWorldEvent e) throws IOException
                            {
                                if(e.getEntity() instanceof EntityPlayer)
                                {
                                    File file = new File("./LifeGui/JsonPlayer/"+e.getEntity().getUniqueID()+".json");
                                    PlayerStatsSerialisationManager playerStatsSerialisationManager = Main.instance.getPlayerStatsSerialisation();
                        
                                    if(file.exists())
                                    {
                                        String json = JsonFileManager.loadFile(file);
                        
                                        PlayerStatsJson playerStatsJson = playerStatsSerialisationManager.deserialise(json);
                                    }
                                    else
                                    {
                                        PlayerStatsJson playerStatsJson = new PlayerStatsJson(e.getEntity().getName(), 0, 0);
                                        String json = playerStatsSerialisationManager.serialise(playerStatsJson);
                                        JsonFileManager.saveFile(file, json);
                                    }
                                }
                            }
                        }
                        
                        
                        package fr.silvertaurus.utils;
                        
                        import com.google.gson.Gson;
                        import com.google.gson.GsonBuilder;
                        
                        public class PlayerStatsSerialisationManager
                        {
                            private Gson gson;
                        
                            public PlayerStatsSerialisationManager()
                            {
                                this.gson = new Gson();
                            }
                            private Gson GsonCreateInstance()
                            {
                                return new GsonBuilder()
                                        .setPrettyPrinting()
                                        .serializeNulls()
                                        .disableHtmlEscaping()
                                        .create();
                            }
                        
                            public String serialise(PlayerStatsJson playerStatsJson)
                            {
                                return this.gson.toJson(playerStatsJson);
                            }
                        
                            public PlayerStatsJson deserialise(String json)
                            {
                                return this.gson.fromJson(json, PlayerStatsJson.class);
                            }
                        }
                        
                        
                        package fr.silvertaurus.utils;
                        
                        import com.google.gson.JsonObject;
                        
                        import java.io.*;
                        
                        public class JsonFileManager
                        {
                            public static void createFile(File file) throws IOException
                            {
                                if(!file.exists())
                                {
                                    file.getParentFile().mkdirs();
                                    file.createNewFile();
                                    return;
                                }
                            }
                        
                            public static void saveFile(File file, String text) throws IOException
                            {
                                final FileWriter fw;
                        
                                createFile(file);
                                fw = new FileWriter(file);
                                fw.write(text);
                                fw.flush();
                                fw.close();
                            }
                        
                            public static String loadFile(File file) throws IOException
                            {
                                if(file.exists())
                                {
                                    final BufferedReader bufferedReader = new BufferedReader(new FileReader(file));
                                    final StringBuilder text = new StringBuilder();
                        
                                    String line;
                        
                                    while((line = bufferedReader.readLine()) != null)
                                    {
                                        text.append(line);
                                    }
                                    bufferedReader.close();
                                    return text.toString();
                                }
                                return "";
                            }
                        }
                        
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • SpyManS Hors-ligne
                          SpyMan
                          dernière édition par SpyMan

                          mouais c’est pas encore ca…
                          sinon Gson#fromJson pour recupérer un instance d’un PlayerStats a partir d’un fichier
                          et Gson#toJson pour convertir l’instance de class en text json que tu peux apres stocker dans un fichier

                          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