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.
    • 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