MFF

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

    Niveau de lumière

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    16 Messages 6 Publieurs 4.2k 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

      Le niveau de lumière est déjà géré sur le WorldClient pour le rendu. Donc pas besoin de paquet, c’est déjà fait par ceux de mc.

      Tu peux utiliser world.getFullBlockLightValue(x, y, z);

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

        Même problème, cette fonction ne tiens pas compte si il fait jour ou nuit 😞

        Merci de votre aide en tout cas !

        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 il faudrait regarder quel code est utilisé dans le code qui rend ce qui voit dans F3.

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

            Ha oui, ça c’est pas bête, jvai voir tout de suite

            Edit: Mauvaise nouvelle, la nuit n’est pas pris en compte ici non plus

            Edit²: Dailleur je viens de tester dans le minecraft officiel 1.7.4, c’est pas le cas non plus 😕

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

              Alors ça fait un ptit moment que je suis en train de chercher, et je remarque le la partie client n’a aucune notion de l’heure qu’il est, et ne fait (pratiquement) aucun calcule pour ce qui est de la lumière (voir aucun pour la lumière du soleil)
              Dailleur, à l’époque de Minecraft Beta, toutes les lumières était géré par le serveur, le client ne faisait aucun calcule et récupérait toutes les données venant du serveur, se qui est resté le cas pour la lumière du soleil

              Jvai devoir me résumer à utiliser les PacketsHandler 😞 😞 😞

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

                Bah, y’a le temps du world non ?

                Enfin, moi je me sers de ça pour détecter jour/nuit

                
                if(this.mc.thePlayer.worldObj.getWorldTime() > 13000){
                //C'est la nuit o/
                } else {
                //C'est pas la nuit o/
                }
                
                

                "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
                ― Jordan B. Peterson

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

                  Exactement ^^

                  Mais je vais dans un peut plus complexe (si possible)
                  Le soir, la lumière diminue peut à peut, et le niveau de lumière passe de 15 à 0 progressivement, et j’ai besoin de sa
                  (J’ai regarder dans le code du détecteur de lumière, sa aide pas vraiment)

                  Ps: Sinon, j’avais utiliser à peut de chose près la même fonction:

                  
                  if(this.mc.TheWorld.getWorldTime() > 12000){
                  // –- NUIT ! --- //
                  } else {
                  // --- JOUR! --- //
                  }
                  
                  
                  1 réponse Dernière réponse Répondre Citer 0
                  • MugiwaxarM Hors-ligne
                    Mugiwaxar
                    dernière édition par

                    Bon, j’ai tester nos deux fonctions, et malheureusement, aucune des deux ne fonctionne correctement 😞
                    Pourquoi ? Réponse sur le wiki:

                    time add <number>:
                    Sets the world time. number is an integer between 0 and 24000, inclusive, where 0 is dawn, 6000 midday, 12000 dusk and 18000 midnight. Number can be greater than 24000; in this case, the time of day wraps around, but the moon’s phase is advanced. However, Setting the time “backward” (earlier than the current time) does not change the moon. “time set day” sets the time to 1000, and “time set night” sets the time to 13000.</number>

                    En gros, une fois que le WorldTime arrive a 24000, il ne revient pas à zero mais continue indéfiniment pour pouvoir calculer la phase de la lune

                    De plus, le WorldTime du serveur et du client peuvent être désynchronisé (coup de lag, ralentissement, etc …), c’est pour ça que c’est le serveur qui envoi l’heure de la journée aux clients, pour qu’il fasse jour ou nuit chez tout le monde en même temps, et pour que la phase de la lune soit partout la même

                    Donc pour moi, c’est hard, il me faut une autre fonction :dodgy:

                    Edit:
                    Solution de secours de type B:

                    
                    int dayNumber = (int) (world.getWorldTime() / 24000) + 1;
                    
                    if( world.getWorldTime() / dayNumber > 13000) {
                    // --- NUIT ! --- //
                    } else {
                    // --- JOUR! --- //
                    }
                    
                    

                    Mais c’est du bricolage et j’aime pas, et j’ai toujours mon problème de synchronisation :s

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

                      Rooh fait confiance au client. La synchro est automatique.

                      final boolean isDay = world.getWorldTime() % 24000 < 13000;
                      

                      Pour un niveau de luminosité du soleil de 0 à 15:

                      final int light = !isDay ? 0 : 15 - Math.abs(6500 - world.getWorldTime() % 24000) * 14 / 6500
                      

                      light == 0 toute la nuit
                      light == 15 au zénith
                      light == 1 à l’aube et au crépuscule

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

                        La solution:

                        
                        int dayNumber = (int) (world.getWorldTime() / 24000) + 1;
                        
                        if( world.getWorldTime() / dayNumber > 13000) {
                        // –- NUIT ! --- //
                        } else {
                        // --- JOUR! --- //
                        }
                        
                        

                        est pas mal, en plus j’ai le nombre de jours !

                        Merci à tous !

                        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