MFF

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

    Texture de trappe orientable

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    14 Messages 5 Publieurs 2.0k 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.
    • S Hors-ligne
      sventus
      dernière édition par

      Bonjour à tous, votre humble sventus revient pour de nouvelles aventures.

      je suis actuellement dans un mini projet consistant à creer une trappe, le seul souci est que cette trappe doit prendre la texture du bloc sur laquelle elle est posée.

      je comprend que le problème doit comporter la direction puisque cette dite trappe ne marche que pour une seule des quatre directions. j’aimerais donc savoir comment intégrer ce principe dans cette petite class.

      je vous post ce petit code :

      http://pastebin.com/KqhJ4gid

      si vous avez des solutions, je vous en serais très reconnaissant.

      cordialement,
      un Sventus sauvage.

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

        Il faut que tu récupères la meta data du block (qui contient la direction) avec world.getBlockMetadata(x, y, z); et selon celle-ci, tu donnes la texture. Pour savoir à quelle direction correspond chaque meta data, regarde dans la classe BlockTrapDoor.

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

          Bonjour,
          merci de ta réponse, juste une chose.

          Tu parles de la fonction :onBlockPlaced ?

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

            public int onBlockPlaced(World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ, int metadata) {}

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

              merci plaigon, donc j’avais trouvé la bonne fonction, les noms ont été remplacés pour mieux voir, mais je vois pas ou mettre

              “world.getBlockMetadata(x, y, z);” …

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

                Il ne faut pas utiliser onBlockAdded car ta superclasse (le extends) BlockTrapDoor le gère déjà, donc il faut que tu get la méta data dans getIcon pour savoir l’orientation qu’à enregistré BlockTrapDoor dans sa fonction onBlockAdded.

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

                  c’est honteux je sais,  j’ai essayé quelque chose comme ça, sans succès :

                  
                  if (world.getBlockMetadata(x, y, z) == 2)
                  {
                  world.getBlock(x - 1, y, z).getIcon(world, x - 1, y, z, side);
                  }
                  
                  if (world.getBlockMetadata(x, y, z) == 3)
                  {
                  world.getBlock(x + 1, y, z).getIcon(world, x + 1, y, z, side);
                  }
                  
                  if (world.getBlockMetadata(x, y, z) == 4)
                  {
                  world.getBlock(x + 1, y, z).getIcon(world, x, y, z - 1, side);
                  }
                  
                  if (world.getBlockMetadata(x, y, z) == 5)
                  {
                  world.getBlock(x + 1, y, z).getIcon(world, x, y, z + 1, side);
                  }
                  
                  
                  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

                    Il faut juste que tu place ce code dans la fonction getIcon et que tu mettes des return devant les world.getBlock(….).getIcon(…); et ça sera bon.

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

                      voila ma class :

                      
                      public IIcon getIcon(IBlockAccess world,int x, int y, int z, int side)
                      {
                      
                      if (world.getBlockMetadata(x, y, z) == 2)
                      {
                      
                      return world.getBlock(x - 1, y, z).getIcon(world, x - 1, y, z, side);
                      }
                      
                      if (world.getBlockMetadata(x, y, z) == 3)
                      {
                      
                      return world.getBlock(x + 1, y, z).getIcon(world, x + 1, y, z, side);
                      }
                      
                      if (world.getBlockMetadata(x, y, z) == 4)
                      {
                      
                      return world.getBlock(x + 1, y, z).getIcon(world, x , y, z - 1, side);
                      }
                      
                      if (world.getBlockMetadata(x, y, z) == 5)
                      {
                      
                      return world.getBlock(x + 1, y, z).getIcon(world, x + 1, y, z, side);
                      }
                      
                      return world.getBlock(x + 1, y, z).getIcon(world, x , y, z - 1, side);
                      
                      

                      je suis obligé d’avoir le dernier return sinon ça me met une erreur …

                      et du coup ça prend en compte que le dernier 😕

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

                        Est-ce que tu as vérifié as quelle face correspond chaque méta data dans la classe BlockTrapDoor ?

                        Envoyé de mon RAINBOW LITE 4G en utilisant Tapatalk

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

                          le “==2” ? et tout ça ?

                          j’ai réussi, j’avais pas réfléchi car en gros j"ai changé les == 1 ….  pour trouver lequel correspondait à quelle positionnement ^^

                          par contre je viens de voir qu’une fois la trappe levé, bah je perd la texture

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

                            Vérifie bien la méta data dans la classe BlockTrapDoor car il y a deux méta data à mettre dans chaque condition: une pour quand le trappe est ouverte et une autre quand elle est fermé. ( exemple if (world.getBlockMetadata(x, y, z) == 2 || world.getBlockMetadata(x, y, z) == 😎 )
                            En plus, je pence que tu t’est trompé pour tes 3 derniers return car il n’y à pas les mêmes argument en x, y et z pour le getBlock er le getIcon.

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

                              oui je faisais des tests, ça c’est ce que j’ai de fonctionnel (je vais ajouter les deuxiemes metadata :

                              
                              public IIcon getIcon(IBlockAccess world,int x, int y, int z, int side)
                              {
                              
                              if ((world.getBlockMetadata(x, y, z) == 3) || (world.getBlockMetadata(x, y, z) == 7))
                              {
                              
                              return world.getBlock(x - 1, y, z).getIcon(world, x - 1, y, z, side);
                              }
                              
                              if ((world.getBlockMetadata(x, y, z) == 0) || (world.getBlockMetadata(x, y, z) == 4))
                              {
                              
                              return world.getBlock(x, y, z + 1).getIcon(world, x , y, z + 1, side);
                              }
                              
                              if ((world.getBlockMetadata(x, y, z) == 1) || (world.getBlockMetadata(x, y, z) == 5))
                              {
                              
                              return world.getBlock(x, y, z - 1).getIcon(world, x, y, z - 1, side);
                              }
                              
                              return world.getBlock(x + 1, y, z).getIcon(world, x , y, z - 1, side);
                              
                                 }
                              
                              

                              voila c’est fini, tout marche parfaitement, merci beaucoup pour votre aide 🙂 ❤

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

                                Balise résolue à ne pas oublier 😃

                                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