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.
    • T Hors-ligne
      totos51
      dernière édition par

      Edit.J’ai rien dit

      Regarde au niveau de la condition pour ploanter des graineS?

      1 réponse Dernière réponse Répondre Citer 0
      • kevin_68K Hors-ligne
        kevin_68 Moddeurs confirmés
        dernière édition par

        Tu mets une instance du TileEntity dans le gui et tu crée une variable dans le TileEntity qui donne la lumière au niveau du bloc.
        Donc:
        Dans le gui:

        
        protected TonTileEntity tileentity;
        
        public NomDeLaClasse(InventoryPlayer playerInventory, TonTE te, World world)
        {
        super(new TonContainer(te, playerInventory, world));
        invPlayer = playerInventory;
        tileEntity = te;
        this.world = world;
        }
        
        

        et dans le GuiHandler, dans le getClientGuiElement(…):

        
        return new ClasseDeTonGui(player.inventory, (TonTileEntity)tileentity, world);
        
        

        (ce code est juste pour l’instance)


        Mettez à jours vers la dernière version stable (1.8.9 voir même…

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

          Je veux bien, mais a part les packetHandler (qui m’arange pas trop), jvois pas de moyen de passer le niveau de lumière du coté serveur vers le côté client …

          Il faut savoir que la variable “world.skylightSubtracted” côté client retourne 0 dans tout les cas (nuit inclut), donc impossible de calculer le niveau de lumière venant du soleil

          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

            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