MFF

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

    Les choses étranges du code de Minecraft

    Planifier Épinglé Verrouillé Déplacé Le salon libre
    74 Messages 21 Publieurs 2.1k 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.
    • AxaurusA Hors-ligne
      Axaurus
      dernière édition par

      Dans net/minecraft/entity/monster, une classe (non de Mojang) quelque peu inutile. Jugez par vous-même :

      // Auto generated package-info by MCP
      @ParametersAreNonnullByDefault
      @MethodsReturnNonnullByDefault
      package net.minecraft.entity.monster;
      
      import mcp.MethodsReturnNonnullByDefault;
      import javax.annotation.ParametersAreNonnullByDefault;
      

      EDIT : j’ai oublier, il n’est pas avant la 1.10

      1 réponse Dernière réponse Répondre Citer 0
      • jglrxavpokJ Hors-ligne
        jglrxavpok Modérateurs
        dernière édition par

        @‘Axaurus’:

        Dans net/minecraft/entity/monster, une classe (non de Mojang) quelque peu inutile. Jugez par vous-même :

        // Auto generated package-info by MCP
        @ParametersAreNonnullByDefault
        @MethodsReturnNonnullByDefault
        package net.minecraft.entity.monster;
        
        import mcp.MethodsReturnNonnullByDefault;
        import javax.annotation.ParametersAreNonnullByDefault;
        

        EDIT : j’ai oublier, il n’est pas avant la 1.10

        C’est marqué en commentaire en haut du fichier, ça donne des infos sur les méthodes présentes dans les classes du package ‘net.minecraft.entity.monster’

        Modérateur sur MFF. 
        Mon Github: http://github.com/jglrxavpok
        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

          Effectivement ces annotations sont générées automatiquement, en revanche je vois pas l’utilité de les mettre dans la classe vu qu’elles sont déjà dans le package-info

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

            Peut-être, mais alors juste peut-être, que ce sont des annotations plutôt destinées à des analyseurs statiques, qui peuvent lever des warnings avant même la compilation si l’analyse montre qu’il y a des null potentiels dans les paramètres ou les valeurs de retours.

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

              Non, ce sont des annotations qui indiquent que les paramètres de fonctions ne doivent pas êtres nuls (par défaut). Donc si tu essaies de mettre null dans une fonction ton IDE te dira que c’est pas possible (il me semble que c’est le but)

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

                Donc de l’analyse statique 🙂

                C’est le nom générique des analyseurs qui tentent de faire des vérifications sur un programme au niveau du code source (ça peut aller bien plus loin que ça).

                1 réponse Dernière réponse Répondre Citer 0
                • jglrxavpokJ Hors-ligne
                  jglrxavpok Modérateurs
                  dernière édition par

                  @‘Mokona78’:

                  Peut-être, mais alors juste peut-être, que ce sont des annotations plutôt destinées à des analyseurs statiques, qui peuvent lever des warnings avant même la compilation si l’analyse montre qu’il y a des null potentiels dans les paramètres ou les valeurs de retours.

                  J’en suis sûr, c’est exactement ça.

                  Modérateur sur MFF. 
                  Mon Github: http://github.com/jglrxavpok
                  Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                  1 réponse Dernière réponse Répondre Citer 0
                  • jglrxavpokJ Hors-ligne
                    jglrxavpok Modérateurs
                    dernière édition par

                    Dans Particle.java:

                    public void moveEntity(double x, double y, double z)
                    {
                    double d0 = y;
                    
                    if (this.field_190017_n)
                    {
                    List <axisalignedbb>list = this.worldObj.getCollisionBoxes((Entity)null, this.getEntityBoundingBox().addCoord(x, y, z));
                    
                    for (AxisAlignedBB axisalignedbb : list)
                    {
                    y = axisalignedbb.calculateYOffset(this.getEntityBoundingBox(), y);
                    }
                    
                    this.setEntityBoundingBox(this.getEntityBoundingBox().offset(0.0D, y, 0.0D));
                    
                    for (AxisAlignedBB axisalignedbb1 : list)
                    {
                    x = axisalignedbb1.calculateXOffset(this.getEntityBoundingBox(), x);
                    }
                    
                    this.setEntityBoundingBox(this.getEntityBoundingBox().offset(x, 0.0D, 0.0D));
                    
                    for (AxisAlignedBB axisalignedbb2 : list)
                    {
                    z = axisalignedbb2.calculateZOffset(this.getEntityBoundingBox(), z);
                    }
                    
                    this.setEntityBoundingBox(this.getEntityBoundingBox().offset(0.0D, 0.0D, z));
                    }
                    else
                    {
                    this.setEntityBoundingBox(this.getEntityBoundingBox().offset(x, y, z));
                    }
                    
                    this.resetPositionToBB();
                    this.isCollided = y != y && d0 < 0.0D;
                    
                    if (x != x)
                    {
                    this.motionX = 0.0D;
                    }
                    
                    if (z != z)
                    {
                    this.motionZ = 0.0D;
                    }
                    }
                    
                    this.isCollided = y != y && d0 < 0.0D;
                    
                    if (x != x)
                    {
                    this.motionX = 0.0D;
                    }
                    
                    if (z != z)
                    {
                    this.motionZ = 0.0D;
                    }
                    

                    Celle-là, je l’avais jamais vu!</axisalignedbb>

                    Modérateur sur MFF. 
                    Mon Github: http://github.com/jglrxavpok
                    Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

                    1 réponse Dernière réponse Répondre Citer 0
                    • elias54E Hors-ligne
                      elias54 Administrateurs
                      dernière édition par

                      Assez étrange en effet.

                      Mon site | GitHub

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

                        Oui c’est bizarre… Je pense que les mappings y sont pour quelque chose.

                        Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                        AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                        Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                        Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                        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

                          Peut-être une erreur de décompilation et de mappage oui.
                          Mais je ne vois pas d’autres variables dans la fonction donc ce n’est pas certain. Et puis si le code ne fait pas la même chose que celui de minecraft, on devrait constater une anomalie sur le déplacement des entités en ayant forge, or ce n’est pas le cas.

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

                            C’est du code tout à fait valable. C’est du code de protection contre la valeur NaN.

                            Lorsqu’un flottant se retrouve à la valeur NaN (Not a Number), un moyen de réinitialiser la variable est de vérifier si elle est différente d’elle-même. En effet, par définition, NaN est différent de tous les autres nombres, y compris de NaN.

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

                              Et comment qu’un double pourrait ne pas être un nombre ?

                              Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                              AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                              Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                              Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                                Quand le résultat d’une opération ne donne pas un nombre.

                                Avec des entiers, 1/0 ou 0/0 vont envoyer une exception ; en flottant, le résultat est défini, 1.0/0.0 donne +inf (infinity). -1.0/0.0 donne -inf. Et 0.0/0.0 donne… NaN.

                                De même, le résultat de Math.sqrt() avec un nombre flottant négatif NaN, puisque la racine carrée d’un nombre négatif n’est pas défini pour les réels.

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

                                  Ah et ben tu viens de m’apprendre quelque chose, bizarre qu’on puisse deviser par zéro quand c’est un flottant.

                                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • jglrxavpokJ Hors-ligne
                                    jglrxavpok Modérateurs
                                    dernière édition par

                                    @‘Mokona78’:

                                    C’est du code tout à fait valable. C’est du code de protection contre la valeur NaN.

                                    Lorsqu’un flottant se retrouve à la valeur NaN (Not a Number), un moyen de réinitialiser la variable est de vérifier si elle est différente d’elle-même. En effet, par définition, NaN est différent de tous les autres nombres, y compris de NaN.

                                    Tu m’as appris quelque chose!
                                    J’aurais plutôt penser à ça qui est moins ambigu:

                                    if(!Float.isNaN(x))
                                    

                                    Modérateur sur MFF. 
                                    Mon Github: http://github.com/jglrxavpok
                                    Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

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

                                      Ça serait bien plus lisible en effet.

                                      Après, si c’est du code décompilé, il est possible que le compilateur est remplacé l’appel à IsNaN() par son implémentation en ligne et qu’à la décompilation, on se retrouve avec ça. Je ne sais pas assez comment se comporte le compilateur Java.

                                      Ou bien, c’est quelqu’un qui a l’habitude de cette formulation dans d’autres langages qui n’ont pas de fonction IsNaN().

                                      (on pourrait objecter que x != x est plus rapide qu’un appel de fonction, mais je pense que le JIT se charge de l’optimisation lors du premier appel… si le compilateur ne s’en ai déjà pas chargé. Là encore, ça sort de mon champ de connaissance)

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

                                        Ouai mais du coup ça renvoi une erreur

                                        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
                                        • 1
                                        • 2
                                        • 3
                                        • 4
                                        • 3 / 4
                                        • Premier message
                                          Dernier message
                                        Design by Woryk
                                        ContactMentions Légales

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB