MFF

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

    Texture 'pulling' arc

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    12 Messages 3 Publieurs 2.6k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      La texture de l’arc de Minecraft n’est pas du tout géré dans la classe de l’arc. Ça passe par une autre classe, qu’on ne peut bien sûr pas modifier. C’est pour ça que forge ajoute la fonction getModel, à utiliser comme ça :

         @Override
         public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining)
         {
             ModelResourceLocation modelresourcelocation = new ModelResourceLocation(NanotechHungerGames.MODID + ":bomber_bow", "inventory");
      
             if(stack.getItem() == this && player.getItemInUse() != null)
             {
                 if(useRemaining >= 18)
                 {
                     modelresourcelocation = new ModelResourceLocation(NanotechHungerGames.MODID + ":bomber_bow_pull2", "inventory");
                 }
                 else if(useRemaining > 13)
                 {
                     modelresourcelocation = new ModelResourceLocation(NanotechHungerGames.MODID + ":bomber_bow_pull1", "inventory");
                 }
                 else if(useRemaining > 0)
                 {
                     modelresourcelocation = new ModelResourceLocation(NanotechHungerGames.MODID + ":bomber_bow_pull0", "inventory");
                 }
             }
             return modelresourcelocation;
         }
      

      C’est le code de NHG, ça fait un moment que j’y ai pas touché, ça date du début de la 1.8, il me semble qu’il y a juste eu un petit changement dessus :
      https://github.com/MinecraftForge/MinecraftForge/issues/1623
      https://github.com/MinecraftForge/MinecraftForge/commit/64bf7bb3bef588d414561b638a945e8653df6dc5
      Donc il faudrait faire int useTime = this.getMaxDuration() - useRemaining; puis changer la texture en fonction de useTime et non de useRemaining.

      Attention à bien enregistrer les textures dans une fonction côté client (proxy ou directement classe principale avec un if(event.getSide().isClient()) :

             registerItem(NHGItems.bomberBow, 0, NanotechHungerGames.MODID + ":bomber_bow");
             registerItem(NHGItems.bomberBow, 1, NanotechHungerGames.MODID + ":bomber_bow_pull0");
             registerItem(NHGItems.bomberBow, 2, NanotechHungerGames.MODID + ":bomber_bow_pull1");
             registerItem(NHGItems.bomberBow, 3, NanotechHungerGames.MODID + ":bomber_bow_pull2");
      
             ModelBakery.addVariantName(NHGItems.bomberBow, new String[] {NanotechHungerGames.MODID + ":bomber_bow", NanotechHungerGames.MODID + ":bomber_bow_pull0", NanotechHungerGames.MODID + ":bomber_bow_pull1", NanotechHungerGames.MODID + ":bomber_bow_pull2"});
      

      La fonction registerItem :

         public static void registerItem(Item item, int metadata, String identifier)
         {
             ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
             mesher.register(item, metadata, new ModelResourceLocation(identifier, "inventory"));
         }
      
      1 réponse Dernière réponse Répondre Citer 0
      • EryahE Hors-ligne
        Eryah
        dernière édition par

        Pfiou, tous cela m’a l’air bien plus compliqué de ce que je pensait…
        Je pense que je vais abbandoner pour l’instant, je reprendrais plus tard, quand je serais assez expérimenté pour faire cela

        Membre fantôme
        Je développe maintenant un jeu sur UnrealEngine4


        Contact :…

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

          Bon, je me suis remis a ce topic
          J’ai tenté, et j’ai foiré

          Classe du Clientproxy

          ​ registerItem(BladedBowDiamond.diamond_bladed_bow, 0, Reference.MOD_ID + ":diamond_bladed_bow_standby");
                registerItem(BladedBowDiamond.diamond_bladed_bow, 1, Reference.MOD_ID + ":diamond_bladed_bow_pulling_0");
                registerItem(BladedBowDiamond.diamond_bladed_bow, 2, Reference.MOD_ID + ":diamond_bladed_bow_pulling_1");
                registerItem(BladedBowDiamond.diamond_bladed_bow, 3, Reference.MOD_ID + ":diamond_bladed_bow_pulling_2");
          
                 ModelBakery.addVariantName(BladedBowDiamond.diamond_bladed_bow, new String[] {Reference.MOD_ID + ":diamond_bladed_bow_standby", Reference.MOD_ID + ":diamond_bladed_bow_pulling_0", Reference.MOD_ID + ":diamond_bladed_bow_pulling_1", Reference.MOD_ID + ":diamond_bladed_bow_pulling_2"});
          
          }
          
          private void registerItem(Item diamond_bladed_bow, int i, String identifier) {
          
                  ItemModelMesher mesher = Minecraft.getMinecraft().getRenderItem().getItemModelMesher();
                  mesher.register(diamond_bladed_bow, i, new ModelResourceLocation(identifier, "inventory"));
          
          }
          

          J’ai du utilisé la méthode registerItem auto généré, car celle de robin ne fonctionnait pas.

          Classe de l’itme

          ​  @Override
              public ModelResourceLocation getModel(ItemStack stack, EntityPlayer player, int useRemaining)
              {
                  ModelResourceLocation modelresourcelocation = new ModelResourceLocation(Reference.MOD_ID + ":diamond_bladed_bow_standby", "inventory");
          
                  if(stack.getItem() == this && player.getItemInUse() != null)
                  {
                      if(useRemaining >= 18)
                      {
                          modelresourcelocation = new ModelResourceLocation(Reference.MOD_ID + ":diamond_bladed_bow_pulling_0", "inventory");
                      }
                      else if(useRemaining > 13)
                      {
                          modelresourcelocation = new ModelResourceLocation(Reference.MOD_ID + ":diamond_bladed_bow_pulling_1", "inventory");
                      }
                      else if(useRemaining > 0)
                      {
                          modelresourcelocation = new ModelResourceLocation(Reference.MOD_ID + ":diamond_bladed_bow_pulling_2", "inventory");
                      }
                  }
                  return modelresourcelocation;
              }
          

          Pour une fois, j’ai relu 3x mon code avant de demander de l’aide !

          Je me demande : Faudrait-il un .json pour chaque phase de l’arc ?
          Car l’arc de base à plusieurs .json

          • bow_standby.json
          • bow_pulling_0.json
          • bow_pulling_1.json
          • bow_pulling_2.json

          Il est assez tard à l’heure ou j’ecrit ce message ( 01:45 ), je vais dormir et je vais tester cela


          Cela focntionne, mais je n’ai qu’une animation ( La pulling_0 je croit )

          Membre fantôme
          Je développe maintenant un jeu sur UnrealEngine4


          Contact :…

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

            Ajoute des logs en mettant dedans la variable useRemaining pour voir jusqu’où cette valeur va.

            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
            • EryahE Hors-ligne
              Eryah
              dernière édition par

              Euh… je n’ai pas trop compris ce que tu veut dire
              Je n’ai aps encore une troop grande expérience sur Java ( Mais je me lance sur OpenClassroom quand je serais en vacances ( Lieu )) donc je ne sais pas faire un logger
              j’ai tenter de mettre un PrintIn dans une méthode else if(useRemaining), mais cela fait crasher mon jeu

              Membre fantôme
              Je développe maintenant un jeu sur UnrealEngine4


              Contact :…

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

                Si tu n’as pas de logger, fait un System.ou.println(useRemaining) dans la fonction getModel.

                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
                • EryahE Hors-ligne
                  Eryah
                  dernière édition par

                  Déso, j’avais un crash, et je devais le regler
                  Quand je right click avec l’arc, ce la donne ça dans les logs

                  ​0
                  0
                  71993
                  71986
                  71981
                  71975
                  71969
                  71963
                  0
                  0
                  

                  Donc c’est bon, j’ai compris l’erreur, je vais faire des tests pour voir quels sont les meilleurs valeurs a mettre
                  (PS : j’ai un bug sur mon client Debug, sa me le lance en normal, idée de ce que cela pourrait être ? )

                  Membre fantôme
                  Je développe maintenant un jeu sur UnrealEngine4


                  Contact :…

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

                    C’est à dire ? Si tu cliques sur debug, çà lance en debug.

                    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
                    • EryahE Hors-ligne
                      Eryah
                      dernière édition par

                      eh bien non, moi ca ne me lance pas les consoles suplémentaires du débug, et quand je modfie une valeur, elle n’est pas modfié en temps réel

                      Membre fantôme
                      Je développe maintenant un jeu sur UnrealEngine4


                      Contact :…

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

                        Il n’y a pas de console supplémentaire en debug, si tu as une autre page sur eclipse qui veut s’ouvrir c’est qu’il y a eu une erreur donc il faut que tu lances en version normale. çà arrive notamment quand un thread autre que celui principal crash.

                        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
                        • EryahE Hors-ligne
                          Eryah
                          dernière édition par

                          Ah non c’est bon, mon Debug fonctionne.
                          Je le clos le sujet, en espérent ne jamais avoir a le re-ouvrir

                          Membre fantôme
                          Je développe maintenant un jeu sur UnrealEngine4


                          Contact :…

                          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