MFF

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

    Enchant, multi texture & doublon

    Planifier Épinglé Verrouillé Déplacé Résolu 1.8.x
    1.8
    17 Messages 3 Publieurs 3.6k Vues 1 Abonné
    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.
    • J Hors-ligne
      Jodge
      dernière édition par

      Merci, j’ai enfin réussis a régler le 2eme problème grâce a toi 😄 En faite, j’avais juste pas penser à regarder au niveau de ItemStack ^^’
      J’avais vue la fonction sur EnchantmentHelper, mais j’ai aucune idée de ce a quoi correspond le type Map

      Finalement, je suis partie sur la fonction “attackTargetEntityWithCurrentItem” de EntityPlayer, que j’ai copier puis adapter afin d’avoir une base plus saine et complètes dans ma classe Weapons.
      Je laisse encore un peu ouvert le sujet si quelqu’un peu me dépatouiller pour le premier problème, mais ont peu consideré comme résolus le cas échéant.

      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

        Je ne crois pas qu’on puisse gérer ça. Les achievements sont hardcodé, donc ce n’est pas évidant de faire en sorte qu’un item soit restreint en achievement.

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

          Il est toujours possible de modifier les enums avec l’EnumHelper

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

            @‘SCAREX’:

            Il est toujours possible de modifier les enums avec l’EnumHelper

            c’est une piste a explorer, mais j’ai peur que ce soit plus compliquer puisqu’il faut aussi modifier la méthode “canEnchantItem” de l’Enum… Je vais m’y pencher demain moi.

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

              J’up le sujet, car j’ai changé mon problème (plutôt que de créer des nouveau sujet a chaque petit problème ^^')

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

                Il vaut mieux créer un nouveau sujet à chaque fois, comme çà si quelqu’un a le même problème, ce sera plus simple de trouver le sujet.

                Pour les models : regarde dans les logs si le fichier est trouvé.

                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
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  Les JSON ajoutés avec la fonction getModel doivent être enregistré, je ne connais plus par coeur la fonction, je ne pourrai que te la donner demain soir. (Je suis pas chez moi, je suis sur mon téléphone).

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

                    Alors, sur les log en cours d’exécution, je n’ai pas de message d’erreur indiquant que le fichier est manquant (comme c’étais le cas pour certain autre item).

                    concernant l’enregistrement des fichier .JSON, je l’avais déjà compris. Si j’ai bien compris, il suffit d’enregistrer comme s’il s’agissait d’une autre métadata de l’item

                    
                           Main.proxy.registerItemTexture(this, 0, getUnlocalizedNameAlone(), modid);
                           Main.proxy.registerItemTexture(this, 1, getUnlocalizedNameAlone() + "Using", modid);
                    
                    

                    Le problème est que dans cette ordre, cela fonctionne sans problème pour le modèle par défaut (0), mais pas du tout pour le modèle avec “getModel” (1)

                    En revanche, si j’échange les deux, alors le résultat est inversé. Celui par défaut (0) ne fonctionne pas, en revanche, celui avec “getModel” (1) lui fonctionne ( en utilisant le le modèle enregistrer sur la métadata 1 évidemment ).

                    
                           Main.proxy.registerItemTexture(this, 0, getUnlocalizedNameAlone() + "Using", modid);
                           Main.proxy.registerItemTexture(this, 1, getUnlocalizedNameAlone(), modid);
                    
                    

                    Evidemment, je rappel que les fichier .json sont STRICTEMENT identique, a l’exception du nom

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

                      , getUnlocalizedNameAlone() + “Using” tu disais pas que c’était “_using” ?

                      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
                      • robin4002R Hors-ligne
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                        dernière édition par

                        C’est cette fonction qu’il te manque
                        :
                        ModelBakery.addVariantName(NHGItems.backStabberKnife, new String[] {NanotechHungerGames.MODID + “:item_back_stabber_normal”, NanotechHungerGames.MODID + “:item_back_stabber_ready”});
                        Premier argument : l’item
                        Deuxième argument : tableau de string avec le nom des JSON.
                        À mettre côté client seulement.

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

                          Il faut mettre cette fonction ou précisément ? J’ai tenter dans clientProxy, mais elle ne semble pas fonctionner, et j’ai tenter dans la classe de mon item comme cela (que j’appelle dans mon constructeur au passage) :

                          @SideOnly(Side.CLIENT)
                          public JScythe multiTexture(String modid)
                          {
                          ModelBakery.addVariantName(this, new String[] {modid + ":" + getUnlocalizedNameAlone(), modid + ":" + getUnlocalizedNameAlone() + "Using"});
                          return this;
                          }
                          

                          Mais cela ne semble pas fonctionné aussi (aucun message d’erreur)

                          EDIT : Autant pour moi, j’avais mal appeler la fonction, j’avais utilisé multiTextue(modid + “:”) mais les “:” étais déjà intégrer ^^"

                          Merci pour la résolution ! 😄

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

                            N’oublie pas la balise résolu.

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

                              J’ai hésité a fermer les sujets, puis en ré-ouvrir un, mais au final, j’ai tellement de question en suspense, de chose qui m’échappe sur Forge, qu’au final, j’ai décider d’essayer de faire de se sujet, une sort de FAQ de toute mes questions. Si l’idée ne vous plait pas, n’hésiter pas a le dire, si vraiment, cela s’avères nul, je fermerai le sujet, et en ré-ouvrirai à coté.

                              Maintenant, voila la question actuel :

                              :::
                              Et c’est re partie pour des questions ^^’ Bien dormis au moins ? X)

                              public void onPlayerStoppedUsing(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn, int timeLeft)
                              {
                              AxisAlignedBB hitArea;
                              int x = itemStackIn.getMaxItemUseDuration() - timeLeft;
                              if (x > 50)
                              {
                              x = 50;
                              }
                              
                              Double bonus = 1.0D + (x / 25); // 1 + (limite max - temps restant) / tickParSeconde
                              Float damageMultiplier = 0.75F ;
                              
                              rightCombo++;
                              
                              if(playerIn.isSneaking())
                              {
                              hitArea = new AxisAlignedBB(playerIn.posX, playerIn.posY, playerIn.posZ, playerIn.posX + 1.0D, playerIn.posY + 1.0D, playerIn.posZ + 1.0D).expand(bonus, 0.0D, bonus);
                              }
                              else
                              {
                              hitArea = new AxisAlignedBB(playerIn.posX, playerIn.posY + 1.0D, playerIn.posZ, playerIn.posX + 1.0D, playerIn.posY + 2.0D, playerIn.posZ + 1.0D).expand(bonus, 0.0D, bonus);
                              damageMultiplier += 0.5F;
                              }
                              damageMultiplier *= (0.25F + (float) (bonus / 4.0D))*(3.0F/2.0F) * (0.5F/rightCombo + 0.5F);
                              
                              List entityList = playerIn.worldObj.getEntitiesWithinAABBExcludingEntity(playerIn, hitArea);
                              
                              for (int i = 0; i < entityList.size(); i++)
                              {
                              if(entityList.get(i) instanceof EntityLivingBase)
                              {
                              JFunction.dealDamage(playerIn, (EntityLivingBase) entityList.get(i), damageMultiplier, false);
                              }
                              }
                              }
                              
                              

                              Voici ma fonction permettant de gérer mon attaque sur le clic droit.
                              Le problème étant que pour une raison qui m’échappe, la fonction est appeler deux fois à la suite, à chaque fois que je lâche le clic.
                              Les dégâts ne sont bien infliger qu’une fois, le problème étant plus sur la variable combo, qui se retrouve implémenter deux fois trop vite, réduisant les dégât du spam clic bien trop rapidement.

                              Ma question du jour étant : Est ce normal que la fonction s’active deux fois, ou est ce que cela est dus à autre chose (sachant que je n’appelle cette fonction nul part ailleurs)
                              :::

                              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

                                C’est une question de client / serveur. La plupart des méthodes sont appelés une fois en client et une fois en serveur à chaque fois. Donc deux fois au total.
                                Il faut utiliser la condition if(!world.isRemote) pour faire les actions que côté serveur.

                                Petite remarque, dans ton code tu devrais utiliser double et float et non Double et Float. C’est juste un majuscule qui change en apparence, mais float et double sont des primitives alors que Float et Double sont des objets. Et il ne s’exécute pas du tout à la même vitesse.

                                Et oui il est mieux de créer plusieurs discussions de tel sorte que une discussion = un problème.
                                Pour une simple raison, actuellement ta discussion s’appelle “Les petits problèmes à Jodge”. Si quelqu’un a le même problème, jamais il ne viendra voir cette discussion. Et sur google il a aucune chance que cette discussion soit trouvé en tapant “fonction pour obtenir les enchantements d’un item”.
                                À l’inverse avec un titre clair et une discussion par problème on peut trouver beaucoup mieux sur google / avec une recherche sur le fofo.

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

                                  Ha ouai, je connaissais pas ^^ Merci pour l’astuce ^^

                                  Pour Float ou float, je connais pas la différence de temps d’exécution, donc je te fait confiance ^^

                                  Pour la discussion, okay, je clos, le sujet et j’en réouvrirai d’autre ^^

                                  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