MFF

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

    Problème json fence gate

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    15 Messages 3 Publieurs 2.8k 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.
    • EmotionFoxE Hors-ligne
      EmotionFox
      dernière édition par

      Justement c’est ça le probléme, tout comme la barrière, le portillon à lui aussi des states qui ont chacun un modèle (Exemple : modèle au nord, modèle au sud etc…). Normalement c’est le but du fichier json à l’intérieur du dossier blockstates de donner le chemin des modèles mais dans le cas du portillon il ne le fait pas et le jeu me demande donc un modèle “normal” avec comme nom celui du json de blockstates.

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

        Ton bloc s’appelle comment ? (ce que tu as mit dans GameRegistry.registerBlock)

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

          Le bloc ce nome “atlas_fence_gate” comme le fichier json qui ce trouve dans blockstates, le probléme c’est que si je crée un fichier json “atlas_fence_gate” dans les modèles mon bloc auras toujours celui-ci peut-importe ces states (c’est pour ça que normalement il y a pas ce probléme).

          C’est assez difficile à expliquer mais en gros tous mes autres blocs avec des states non pas besoin d’un modèle du même nom étant donné qu’ils ont tous plusieurs modèles (à voir la barrière), sauf que celui-là apparemment me demande un modèle fixe et je pense sérieusement que c’est un probléme au niveau de l’enregistrement des blocs mais j’ai aucune idée pour fixer ce truc…

          Ps: Regardez pour la barrière, elle ne demande en aucun cas un fichier json “atlas_fence” vue qu’il n’existe pas et que j’ai aucune erreur.

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

            -* Up *-

            Apparemment j’ai tester sans ma méthode pour enregistrer les blocs et l’erreur survient quand même, je sais vraiment pas quoi faire…
            Surtout que le probléme est présent aussi pour la porte et demie-dalle.

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

              Sinon envoies-moi un zip / 7z de ton dossier src, je vais faire des tests de mon côté car là je ne vois pas d’où le problème vient.

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

                J’ai trouvé le problème.
                Dans ton fichier tu as :
                       “facing=south,in_wall=false,open=false”: { “model”: “emomod:atlas_fence_gate_closed” },
                Or il cherche :
                [11:18:28] [Client thread/ERROR] [FML]: Model definition for location emomod:atlas_fence_gate#facing=south,in_wall=true,open=true,powered=true not found

                Avec powered en plus.
                Dans la classe net.minecraft.client.renderer.BlockModelShapes il y a ça :
                       this.registerBlockWithStateMapper(Blocks.oak_fence_gate, (new StateMap.Builder()).addPropertiesToIgnore(new IProperty[] {BlockFenceGate.POWERED}).build());
                Donc voila pourquoi dans le json de Minecraft il n’y a pas ce powered.
                Donc soit tu adapte les lignes pour mettre power=true et power=false en plus à chaque fois (donc le fichier sera deux fois plus long)
                Soit faut trouver une méthode pour ignorer cette propriété.

                Édit : trouvé ! Forge ajoute ce qu’il faut :
                           ModelLoader.setCustomStateMapper(EmotionBlocks.atlasFenceGate, (new StateMap.Builder()).addPropertiesToIgnore(new IProperty[] {BaseFenceGate.POWERED}).build());
                Par contre, j’ai essayé de le mettre dans ta méthode registerRenderThings de ton client proxy au début et ça n’a pas fonctionné. Donc j’ai supposé que c’était dû au fait que la méthode ModelLoader.onRegisterAllBlocks était appelé avant l’event FMLInitializationEvent et c’est le cas, il faut donc mettre cette méthode dans la fonction preInit, puis ça fonctionne. (J’ai fait comme ça :

                ​    @Mod.EventHandler
                    public void preInit(FMLPreInitializationEvent event)
                    {
                        // Load All Other Class By Type
                        EmotionTab.mainRegistry();
                        EmotionBlocks.mainRegistry();
                        EmotionItems.mainRegistry();
                        EmotionWorld.mainRegistry();
                        EmotionEntity.mainRegistry();
                        EmotionAchievement.mainRegistry();
                        EnchantManager.mainRegistry();
                        CraftingManager.mainRegistry();
                        BiomeRegistry.mainRegistry();
                
                        if(event.getSide().isClient())
                        {
                            ModelLoader.setCustomStateMapper(EmotionBlocks.atlasFenceGate, (new StateMap.Builder()).addPropertiesToIgnore(new IProperty[] {BaseFenceGate.POWERED}).build());
                        }
                    }
                

                Mais tu peux aussi faire un méthode dans ton proxy nommé preInitRender et mettre cette fonction dedans puis appeler proxy.preInitRender(); dans la fonction preInit de ta classe principale.
                Par contre attention à ce que les blocs soient initialisés avant de faire cette fonction, sinon EmotionBlocks.atlasFenceGate va être null et donc ça ne va pas fonctionner.

                Je sens que ces vacance je vais devoir faire un tutoriel complet sur les états de blocs et les rendus avec les jsons car il y en a des choses à dire …

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

                  Alors déjà merci énormément, ça à due être un gros travaille de recherche cependant pour les imports c’est bien :

                  import net.minecraftforge.client.model.ModelLoader;

                  Si oui il me dit :

                  The method setCustomStateMapper(Block, StateMap) is undefined for the type ModelLoader

                  Une solution ?

                  Ps: Je suppose que ça va être la même méthode pour porte et demie-dalle, si oui comment à tu sue que c’était ça le problème ?

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

                    Oula, si cette méthode n’existe pas c’est que tu utilises une très veille version de Forge : https://github.com/MinecraftForge/MinecraftForge/commit/b8add23d9bc1c225ca0e25a3e3419e6ed89b1879
                    cette méthode a été ajouté le 4 février. Faut mettre à jour de temps en temps !

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

                      Alors oui parlons en x) Non j’ai jamais mis à jour depuis le début, j’avais aucun idée qu’il fallait le faire. Je suppose que ça :

                      http://www.minecraftforgefrance.fr/showthread.php?tid=777

                      Va mettre utile, merci encore et j’imagine que ça fonctionne alors je passe le sujet en résolue.

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

                        Tu as juste à modifier la version de Forge dans le build.gradle et refaire un setup.

                        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