• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Niveau de lumière

    Anciennes versions
    1.6.4
    6
    16
    3973
    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.
    • Mugiwaxar
      Mugiwaxar dernière édition par

      Bonjours à tous !

      Voila, question bête mais simple (sa fait deux heures que je traîne dessus :-/)

      Sachant que je n’est pas accès au coté serveur, vu que je suis dans une classe GuiScreen, comment je peux avoir le niveau de lumière d’un bloc dans le jeu ?

      Alors j’ai essayer diverse méthode, rien de marche …

      Merci pour toute votre aide ❤

      Mugiwaxar

      1 réponse Dernière réponse Répondre Citer 0
      • T
        totos51 dernière édition par

        euh LightValue[Block.BlockqueTuVeux.BlockId] ?

        Enfin si j’ai bien compris ce que tu veux, tu veux pouvoir utiliser le Lightlevel d’un bloc?

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

          Ce que je veux, c’est le niveau de lumière à l’endroit où est le bloc (lumière du soleil ou des torches à proximité)

          1 réponse Dernière réponse Répondre Citer 0
          • T
            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_68
              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
              • Mugiwaxar
                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
                • robin4002
                  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
                  • Mugiwaxar
                    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
                    • robin4002
                      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
                      • Mugiwaxar
                        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
                        • Mugiwaxar
                          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
                          • Gugu
                            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
                            • Mugiwaxar
                              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
                              • Mugiwaxar
                                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
                                  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
                                  • Mugiwaxar
                                    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
                                    Contact / Mentions Légales

                                    MINECRAFT FORGE FRANCE © 2018

                                    Powered by NodeBB