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

    [EN COURS] Créer un bloc translucide et des vitres

    Archives
    1.6.2
    5
    19
    8765
    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.
    • EclipseOnFire
      EclipseOnFire dernière édition par

      Bonjour/bonsoir !

      Je vous propose d’apprendre, dés maintenant, en live (ou pas en fait…) de créer vos propres vitres et votre propre bloc translucide.
      Le tutoriel va donc se diviser en deux parties, une pour les vitres et une pour les blocs translucides. Allez, hop, sans plus attendre : à vos écrans ! 🆒

      I. Les vitres

      Pour créer une vitre, c’est tout simple. Pour commencer, créons un bloc comme nous avons la fâcheuse habitude de le faire. 😄
      Mais cette fois-ci ajoutons la méthode :

      Tout d’abord, allez dans votre dossier .minecraft/versions/1.6.2 et ouvrez, à l’aide d’un logiciel de compression/décompression, votre “1.6.2.jar”.
      Ensuite, allez dans textures/blocks et prenez le bloc de verre, extrayez-le (laisser une copie dans le .jar hein 😛 ) dans votre dossier assets/textures/blocks et renommez-le
      prenez votre éditeur d’image, (de mon côté, j’utiliserai paint.net)

      Travaille sur un super serveur, Wirestone.

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

        Ce code sert à créer un bloc transparent, pas une vitre plate:

        Classe du bloc :

        package tonmod.tonpackage;
        
        import java.util.Random;
        
        import net.minecraft.block.BlockBreakable;
        import net.minecraft.block.material.Material;
        import net.minecraft.creativetab.CreativeTabs;
        import cpw.mods.fml.relauncher.Side;
        import cpw.mods.fml.relauncher.SideOnly;
        
        public class classedetaglass extends BlockBreakable // et non pas block sinon la vitre se voit a travers d'un autre bloc vitre
        {
        public classedetaglass(int par1)
        {
        super(par1, "tonmod:tatexture", Material.glass, false); //Pourquoi false, je ne sais pas mais faut mettre false
        this.setCreativeTab(ta.tab);
        }
        
        @SideOnly(Side.CLIENT) //Le rendu du bloc ne se fait que partie client
        
        public int getRenderBlockPass() // 1 pour blocs comme torches etc
        {
        return 0;
        }
        
        public boolean isOpaqueCube() // Si le bloc est plein
        {
        return false; //Empêche également la pose de torches dessus etc
        }
        
        public boolean renderAsNormalBlock() // Ce bloc n'est pas normal
        {
        return false;
        }
        
        }
        

        Ensuite dans la classe principale :

        public static Block taGlass; // a mettre avec les autres déclarations
        //Ensuite on crée le bloc :
        taGlass = new Classedetaglass(id).setHardness(1.0F).setResistance(2.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("taGlass").setCreativeTab(ta.tab).func_111022_d("tonmod:tatexture");
        
        // et on l'enregistre avec les autres :
        GameRegistry.registerBlock(taglass, "taglass");
        

        Voilà tu peux utiliser ce code, le modifier ou le compléter pour finir ton tutoriel, j’espère qu’il t’aidera en tout cas 🙂 (J’ai mis toutes les explications en commentaires directement dans le code)

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

          Ah oui merci mais je ne vais pas utiliser cette technique, je vais utiliser la méthode isOpaqueCube.

          Travaille sur un super serveur, Wirestone.

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

            D’accord, j’ai juste repris la classe du bloc Glass de Minecraft vanilla et adapté à mon Mod pour ma part, en tout cas je salue ton courage pour faire des tutoriels, il en faudrait plus des comme toi dans la communautée 😛

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

              Explique ton code, les fonctions ect… inspire toi des tutoriels faits par l’équipe, car la, c’est juste le code 😕

              "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
              • C
                CookieSpirit dernière édition par

                Si tu parles de mon code l’intention était juste de le passer a EclipseOnFire, c’est lui qui fait un tutoriel pas moi ^^ (et puis comme j’ai dis, j’ai expliqué les fonctions en commentaire dans le code, mais je n’ai pas l’intention d’en faire un tuto EclipseOnFire s’en charge :P)

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

                  @‘CookieSpirit’:

                  D’accord, j’ai juste repris la classe du bloc Glass de Minecraft vanilla et adapté à mon Mod pour ma part, en tout cas je salue ton courage pour faire des tutoriels, il en faudrait plus des comme toi dans la communautée 😛

                  Bah je pense que plus on partage nos classes, nos manières de procéder et nos algorithmes, plus on a de chance d’optimiser ses trucs et d’être efficace. 🙂

                  @‘CookieSpirit’:

                  Si tu parles de mon code l’intention était juste de le passer a EclipseOnFire, c’est lui qui fait un tutoriel pas moi ^^ (et puis comme j’ai dis, j’ai expliqué les fonctions en commentaire dans le code, mais je n’ai pas l’intention d’en faire un tuto EclipseOnFire s’en charge :P)

                  Je t’en remercie 😛 ! L’idée de prendre l’héritage “BlockBreakable” est bonne, je ne connais pas les effets de cette classe. Mais j’ai trouvé des méthodes communes aux blocs transparents en fait :
                  j’ai comparé les méthodes de la glace, du verre et du portail. J’ai remarqué que lorsque “isOpaqueCube” renvoie faux (revoie vrai par défaut), la texture des blocs adjacents devient visible. Ce qui fait qu’on ne voit pas à travers la map quand on regarde dans une vitre 🙂

                  Le seul défaut c’est que les blocs translucides rendent l’eau invisible lorsque l’on regarde à travers. Si quelqu’un a une soluce, j’achète !

                  Ensuite il y a d’autres méthodes, je dois finir de rédiger le tutoriel, ça viendra 😛 Pour le moment j’ai un plugin à finir.

                  J’ai découvert une autre méthode plutôt pas mal aussi qui permet (comme les plaques de pression), d’exécuter du code lorsque le joueur entre dans la “hitbox” du bloc. Si le bloc n’est pas complet ou est “non palpable” (comme les boutons, les leviers etc…) et que le joueur entre dans la “hitbox”, la méthode se déclenche. Plutôt pas mal ça aussi.

                  Ce qui serait cool ce serait que quelqu’un se charge de faire un tuto sur l’interaction des blocs avec la redstone. J’ai regardé les noteblock mais ils sont composés de deux méthodes, une qui permet de rafraichir l’état du bloc lorsque les blocs alentour changent, et l’autre de détecter si le bloc est alimenté en redstone ou non. Mais je ne sais pas du tout comment utiliser ces méthodes :S

                  Travaille sur un super serveur, Wirestone.

                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    Je prévois de faire un tutoriel ou je vais faire le tour de tout les méthodes qui se trouve dans Block.java et un autre pour Item.java.
                    Mais ça va mettre du temps. Pour les interactions avec redstone, tu peux le faire avec n’importe quel fonction qui possède les arguments world x y et z :
                    world.isBlockIndirectlyGettingPowered(x, y, z)
                    Soit true soit false, à toi de voir ce que tu en fais après. Le mieux est de l’utiliser dans le tickupdate.

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

                      Désolé la dernière phrase est pour moi du chinois. Je connais bien le Java mais je suis nouveau en modding, sois indulgent 😛
                      Comment utilise-tu la fonction ? :S

                      Mais –> Le noteblock se sert d’une fonction pour update les blocs autour de lui. N’est-ce pas nécessaire pour détecter les alimentation en courant indirectes comme les repeaters ou les torches de redstone à travers les blocs ?

                      (Ca fait beaucoup de questions mais je te casse plus les pieds, promis é_é)

                      Travaille sur un super serveur, Wirestone.

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        Ha oui, c’est plus intelligent de le mettre dans le onNeighborBlockChange, ça évite d’avoir un tick update sur le bloc (donc moins de lag)
                        Du coup dans la classe de ton bloc :
                        [code_java] public void onNeighborBlockChange(World world, int x, int y, int z, int changedblockid)
                        {
                        if(world.isBlockIndirectlyGettingPowered(x, y, z))
                        {
                        //le bloc est alimenté en redstone
                        }
                        else
                        {
                        //il n’est pas alimenté en redstone
                        }
                        }[/code_java]
                        (il faudrait arrêter de pourrir ce tutoriel avec quelque qui n’est même pas dans le sujet ><)

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

                          Ah oui sympa ! 😄
                          Une dernière question sans vouloir abuser, comment je peux faire pour sélectionner de quel côté mon bloc doit être alimenté en redstone ?
                          (C’est mon tuto je fais ce que je veux :P)
                          Nan plus sérieusement, au pire quand il sera fini je ferai un post clean tu pourra supprimer celui là si tu veux.

                          Travaille sur un super serveur, Wirestone.

                          1 réponse Dernière réponse Répondre Citer 0
                          • robin4002
                            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                            Impossible de vérifie ça directement avec la fonction, mais il suffit juste de s’intéresser au fonctionnement de la redstone.
                            Lorsqu’il est actif, le metadata du bloc de redstone change. Il me semble que c’est 0 lorsqu’il est éteint, et ensuite de 1 à 15 pour la force du signal, en revanche je ne sais pas dans quel sens. Mais c’est pas grave, puisqu’on veut juste savoir si elle est actif ou pas. Donc :
                            [code_java] public void onNeighborBlockChange(World world, int x, int y, int z, int changedblockid)
                            {
                            if(world.isBlockIndirectlyGettingPowered(x, y, z))
                            {
                            // le bloc est alimenté en redstone
                            if(world.getBlockId(x + 1, y, z) == Block.redstoneWire.blockID && world.getBlockMetadata(x + 1, y, z) > 0)
                            {
                            //Le bloc est alimenté en redstone par le bloc de coordonné x + 1
                            }
                            if(world.getBlockId(x, y, z + 1) == Block.redstoneWire.blockID && world.getBlockMetadata(x, y, z + 1) > 0)
                            {
                            //Le bloc est alimenté en redstone par le bloc de coordonné z + 1
                            }
                            if(world.getBlockId(x - 1, y, z) == Block.redstoneWire.blockID && world.getBlockMetadata(x - 1, y, z) > 0)
                            {
                            //Le bloc est alimenté en redstone par le bloc de coordonné x - 1
                            }
                            if(world.getBlockId(x, y, z - 1) == Block.redstoneWire.blockID && world.getBlockMetadata(x + 1, y, z - 2) > 0)
                            {
                            //Le bloc est alimenté en redstone par le bloc de coordonné z - 1
                            }
                            }
                            else
                            {
                            // il n’est pas alimenté en redstone
                            }
                            }[/code_java]
                            Ce code ne check que les 4 blocs autour, tu peux encore l’améliorer pour vérifier au dessus. Et il ne fait que la redstone, il faudrait aussi vérifier les leviers et les torches donc ça fait un très long code 😉

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

                              @‘robin4002’:

                              Impossible de vérifie ça directement avec la fonction, mais il suffit juste de s’intéresser au fonctionnement de la redstone.
                              Lorsqu’il est actif, le metadata du bloc de redstone change. Il me semble que c’est 0 lorsqu’il est éteint, et ensuite de 1 à 15 pour la force du signal, en revanche je ne sais pas dans quel sens. Mais c’est pas grave, puisqu’on veut juste savoir si elle est actif ou pas. Donc :
                              Ce code ne check que les 4 blocs autour, tu peux encore l’améliorer pour vérifier au dessus. Et il ne fait que la redstone, il faudrait aussi vérifier les leviers et les torches donc ça fait un très long code 😉

                              D’accord je comprend ! Merci beaucoup de ton aide ! Bon pour les leviers je vais essayer de me renseigner mais peut-on vérifier ça de la même manière ou c’est une fonction particulière ?

                              Travaille sur un super serveur, Wirestone.

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                Exactement le même principe oui, si c’était pas pareil je t’aurais donné le code ^^

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

                                  @‘robin4002’:

                                  Exactement le même principe oui, si c’était pas pareil je t’aurais donné le code ^^

                                  Super merci beaucoup !!

                                  Travaille sur un super serveur, Wirestone.

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

                                    @EclipseOnFire:

                                    L’idée de prendre l’héritage “BlockBreakable” est bonne, je ne connais pas les effets de cette classe.

                                    Cette classe permet de rendre invisible ce bloc s’il est posé à coté d’un autre bloc du même type, en tout cas chez moi si j’extend Block au lieu de BlockBreakable et bien on verra mes autres blocs a travers et c’est très moche 😕

                                    ps : Désolé de répondre aussi tard, j’espère que tu pourras finir ton tuto ça en aidera quelques uns je pense 🙂

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • robin4002
                                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                      Plus de nouvelle ? Tutoriel abandonné ?

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

                                        Je pourrais le reprendre si tu veux 🙂

                                        Mes tutos :

                                        >! Un item mangeable
                                        [url=http://www.minecraftforgefranc…

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                          Je considère ce tutoriel comme abandonné.
                                          En passant, oubliez ce que j’ai dis ici :

                                          @‘robin4002’:

                                          Impossible de vérifie ça directement avec la fonction, mais il suffit juste de s’intéresser au fonctionnement de la redstone.
                                          Lorsqu’il est actif, le metadata du bloc de redstone change. Il me semble que c’est 0 lorsqu’il est éteint, et ensuite de 1 à 15 pour la force du signal, en revanche je ne sais pas dans quel sens. Mais c’est pas grave, puisqu’on veut juste savoir si elle est actif ou pas. Donc :
                                          [code_java] public void onNeighborBlockChange(World world, int x, int y, int z, int changedblockid)
                                          {
                                          if(world.isBlockIndirectlyGettingPowered(x, y, z))
                                          {
                                          // le bloc est alimenté en redstone
                                          if(world.getBlockId(x + 1, y, z) == Block.redstoneWire.blockID && world.getBlockMetadata(x + 1, y, z) > 0)
                                          {
                                          //Le bloc est alimenté en redstone par le bloc de coordonné x + 1
                                          }
                                          if(world.getBlockId(x, y, z + 1) == Block.redstoneWire.blockID && world.getBlockMetadata(x, y, z + 1) > 0)
                                          {
                                          //Le bloc est alimenté en redstone par le bloc de coordonné z + 1
                                          }
                                          if(world.getBlockId(x - 1, y, z) == Block.redstoneWire.blockID && world.getBlockMetadata(x - 1, y, z) > 0)
                                          {
                                          //Le bloc est alimenté en redstone par le bloc de coordonné x - 1
                                          }
                                          if(world.getBlockId(x, y, z - 1) == Block.redstoneWire.blockID && world.getBlockMetadata(x + 1, y, z - 2) > 0)
                                          {
                                          //Le bloc est alimenté en redstone par le bloc de coordonné z - 1
                                          }
                                          }
                                          else
                                          {
                                          // il n’est pas alimenté en redstone
                                          }
                                          }[/code_java]
                                          Ce code ne check que les 4 blocs autour, tu peux encore l’améliorer pour vérifier au dessus. Et il ne fait que la redstone, il faudrait aussi vérifier les leviers et les torches donc ça fait un très long code 😉

                                          Car il y a beaucoup plus simple, world.getIndirectPowerLevelTo(x, y, z, direction)
                                          (du coup c’est moi qui fait du hors-sujet x) )

                                          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