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

Créer un arbre de A à Z

Archives
1.6.2
8
21
8.6k
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.
  • 0nit
    0nit dernière édition par robin4002 10 août 2019, 13:59 8 sept. 2013, 20:44

    Introduction

    Bonjour à toutes et à tous, je vais vous apprendre à créer… Un arbre de A à Z, qui comprendra donc(principalement) les bûches, les feuilles, la pousse, la génération et la réaction à la BoneMeal.

    Sommaire:

    -Les Pré-requis
    -Les bûches
    -Les feuilles
    -La pousse
    -La génération
    -La réaction à la BoneMeal
    -Bonus

    Les pré-requis

    Il vous faudra savoir faire un bloc simple et un minimum de connaissance en Java.

    Les bûches

    Pour commencer créez le bloc “TutorielWood”, créez sa classe, puis faite la héritée de la classe BlockRotatedPillar et faite “add constructor” comme pour un bloc simple(après avoir ajouter le constructeur il y aura encore une erreur sur “TutorielWood” on verra sa plus tard), n’oubliez pas d’ajouter cette ligne dans le constructeur:

    this.setBurnProperties(this.blockID, 5, 20);
    

    Elle permet de rendre le bloc inflammable (pour plus d’info ellez voir ce tutoriel).

    Vous devriez avoir sa:

    public class TutorielWood extends BlockRotatedPillar
    {
    public TutorielWood(int id) {
    super(id, Material.wood);
    setCreativeTab(CreativeTabs.tabBlock);
    this.setBurnProperties(this.blockID, 5, 20);
    }
    }

    Maintenant on va passer aux petites méthodes :

    public int quantityDropped(Random par1Random)
    {
    return 1;
    }

    Cette méthode sert à déterminer la quantiter de bloc(ou item) dropper une fois le bloc casser.

    @Override
    public boolean canSustainLeaves(World world, int x, int y, int z)
    {
    return true;
    }

    Celle-ci permet au bloc de pouvoir “alimenter les feuilles en énergie”(j’ai rien trouver d’autres comme explication 😛 ).

    @Override
    public boolean isWood(World world, int x, int y, int z)
    {
    return true;
    }

    Cette méthode la renvoi si le bloc est du bois ou pas(si vous voulez récupérer le bloc avec une pioche ou autres…).

    public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6)
    {
    byte b0 = 4;
    int j1 = b0 + 1;
    if (par1World.checkChunksExist(par2 - j1, par3 - j1, par4 - j1, par2 + j1, par3 + j1, par4 + j1))
    {
    for (int k1 = -b0; k1 <= b0; ++k1)
    {
    for (int l1 = -b0; l1 <= b0; ++l1)
    {
    for (int i2 = -b0; i2 <= b0; ++i2)
    {
    int j2 = par1World.getBlockId(par2 + k1, par3 + l1, par4 + i2);
    if (Block.blocksList[j2] != null)
    {
    Block.blocksList[j2].beginLeavesDecay(par1World, par2 + k1, par3 + l1, par4 + i2);
    }
    }
    }
    }
    }
    }

    Et une dernière pour la route 😄 , elle détermine l’action produite une fois le bloc casser(ici les feuilles commence à disparètre quand la méthode est executer).

    Il est temps mes ami(e)s de passer aux choses serieuses… La textures du bloc, donc maintenant vous allez pouvoir corriger l’erreur qu’il y a depuis le début du tuto en implémentant la méthode demander(vous devrier avoir sa de nouveau):

    @Override
    @SideOnly(Side.CLIENT)
    protected Icon getSideIcon(int i) {
    return null;
    }

    Vous allez remplacer null par iconSide il y aurat une erreur sur iconSide, allez dessu et créez le field de iconSide.

    Ajoutez en dessous:

    @SideOnly(Side.CLIENT)
    protected Icon getEndIcon(int i) {
    return iconTop;
    }

    Il y aurat aussi une erreur sur iconTop, faites la même chose que pour iconSide.

    Je ne vous ai pas encore dit à quoi peuvent bien servir ces deux méthodes, et bin elles servent à définir l’emplacement des textures sur le bloc.

    C’est bien on à dit au bloc quel texture aller où mais on ne les a pas enregistrées.
    Donc on rajoute cette méthode:

    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister iconRegister)
    {
    iconSide = iconRegister.registerIcon("modtutoriel:tutorielWood");
    iconTop = iconRegister.registerIcon("modtutoriel:tutorielWood_top");

    Bien sûr vous remplacez “modtutoriel” par votre mod id, “tutorielWood” par le nom de la texture à afficher sur les cotés puis “tutorielWood_top” par le nom de la texture à afficher en dessous et au dessus du bloc.

    Vous vouliez un petit aperçu, en voilà un:

    #Les feuilles(Les feuilles)

    Pour les feulles créez un bloc simple, qui s’appellera “TutorielLeaves” et ajoutez sa dans le constructeur pour que le bloc soit inflamable:

    this.setBurnProperties(this.blockID, 5, 20);
    

    Je n’en dit pas plus tout a déjà était expliquer.

    Et ajoutez aussi sa:

    this.setTickRandomly(true);
    

    Cette le ligne sert(si je ne me plante pas :s ) à rendre l’update des tick du bloc aléatoire, elle sera utilisé dans la méthode qui fais disparaitre les feuilles.

    Vous devriez avoir sa(je sais je me répète mais c’est pour le bien du tuto 😛 😞

    public class TutorielWood extends BlockRotatedPillar
    {
    public TutorielLeaves(int id) {
    super(id, Material.leaves);
    setCreativeTab(CreativeTabs.tabDecoration);
    this.setTickRandomly(true);
    this.setBurnProperties(this.blockID, 5, 20);
    }
    }

    Et maintenant il est temps de passer voir chaque petite méthode de la classe:

    @SideOnly(Side.CLIENT)
    public int getBlockColor()
    {
    double d0 = 1.0D;
    double d1 = 0.5D;
    return ColorizerFoliage.getFoliageColor(d0, d1);
    }

    Cette méthode définit la couleur de base des feuilles(le vert);

    @SideOnly(Side.CLIENT)
    public int getRenderColor(int par1)
    {
    return ColorizerFoliage.getFoliageColorBasic();
    }

    Elle gère la couleur du bloc et celle du bloc en main. Cette couleur peut être modifié dans la méthode ci-dessous mais j’expliquerais sa en détails dans la partie Bonus.

    @SideOnly(Side.CLIENT)
    public int colorMultiplier(IBlockAccess par1IBlockAccess, int par2, int par3, int par4)
    {
    {
    int i1 = 0;
    int j1 = 0;
    int k1 = 0;
    for (int l1 = -1; l1 <= 1; ++l1)
    {
    for (int i2 = -1; i2 <= 1; ++i2)
    {
    int j2 = par1IBlockAccess.getBiomeGenForCoords(par2 + i2, par4 + l1).getBiomeFoliageColor();
    i1 += (j2 & 16711680) >> 16;
    j1 += (j2 & 65280) >> 8;
    k1 += j2 & 255;
    }
    }
    return (i1 / 9 & 255) << 16 | (j1 / 9 & 255) << 8 | k1 / 9 & 255;
    }
    }

    Comme je l’ai dit, cette méthode aussi gère la couleur du bloc mais en fonction du biome où le bloc est placé.

    @SideOnly(Side.CLIENT)
    public void randomDisplayTick(World par1World, int par2, int par3, int par4, Random par5Random)
    {
    if (par1World.canLightningStrikeAt(par2, par3 + 1, par4) && !par1World.doesBlockHaveSolidTopSurface(par2, par3 - 1, par4) && par5Random.nextInt(15) == 1)
    {
    double d0 = (double)((float)par2 + par5Random.nextFloat());
    double d1 = (double)par3 - 0.05D;
    double d2 = (double)((float)par4 + par5Random.nextFloat());
    par1World.spawnParticle("dripWater", d0, d1, d2, 0.0D, 0.0D, 0.0D);
    }
    }

    Celle ci est utilisée pour faire apparaitre des goutes d’eau qui tombes des feuilles quand il pleut.

    private void removeLeaves(World par1World, int par2, int par3, int par4)
    {
    this.dropBlockAsItem(par1World, par2, par3, par4, par1World.getBlockMetadata(par2, par3, par4), 0);
    par1World.setBlockToAir(par2, par3, par4);
    }

    Celle la définie la/las action(s) produite(s) lors de la disparition des feuilles.

    public int quantityDropped(Random par1Random)
    {
    return par1Random.nextInt(20) == 0 ? 1 : 0;
    }

    Cette méthode la définie la quantitée d’items à dropper de façon aléatoire.

    public int idDropped(int par1, Random par2Random, int par3)
    {
    return tutoriel.TutorielSapling.blockID;
    }

    Pour cette méthode, son sera de définir la pousse dropper par les feuilles(pour moi TutorielSapling extrait de ma classe principale tutoriel)

    public void harvestBlock(World par1World, EntityPlayer par2EntityPlayer, int par3, int par4, int par5, int par6)
    {
    super.harvestBlock(par1World, par2EntityPlayer, par3, par4, par5, par6);
    }

    Elle définie le harvest du bloc(ne me demander pas ce que c’est car moi aussi je sais pas 😕 )

    public int damageDropped(int par1)
    {
    return par1 & 3;
    }

    Sa je sais pas à quoi sa sert :huh:

    j’arrête pour aujourd’hui car je suis un peut fatigué[/java]

    Mes tutoriels:

    >! [1.6.x] - Le kit d'outils
    >! [1.6.x] - Les recettes du four

    1 réponse Dernière réponse Répondre Citer 0
    • S
      sevenno07 dernière édition par 8 sept. 2013, 21:26

      Hum … I LOVE TROLE FACE !!!
      Quand tu dit de A a Z, j’espère que tu expliquera comment on peu le personnalisé ;).

      Auteur originale de Sevenno's Addons et de [url=http://www.minecraftfor…

      1 réponse Dernière réponse Répondre Citer 0
      • 0nit
        0nit dernière édition par 8 sept. 2013, 21:28

        bien sûr mais je rentrerais plus en détail dans la partie bonus

        Mes tutoriels:

        >! [1.6.x] - Le kit d'outils
        >! [1.6.x] - Les recettes du four

        1 réponse Dernière réponse Répondre Citer 0
        • S
          sevenno07 dernière édition par 9 sept. 2013, 10:41

          Ok pas de problème :).

          Auteur originale de Sevenno's Addons et de [url=http://www.minecraftfor…

          1 réponse Dernière réponse Répondre Citer 0
          • utybo
            utybo dernière édition par 11 sept. 2013, 15:10

            Trollface? 😞

            Moddeur à la retraite et développeur de trucs en Java.

            J'aide les gens comme je peux, alors si mon message v…

            1 réponse Dernière réponse Répondre Citer 0
            • 0nit
              0nit dernière édition par 11 sept. 2013, 15:23

              t’inquiète pas, je devrait bientôt pouvoir le commencer.

              Mes tutoriels:

              >! [1.6.x] - Le kit d'outils
              >! [1.6.x] - Les recettes du four

              1 réponse Dernière réponse Répondre Citer 0
              • C
                CIad dernière édition par 11 sept. 2013, 18:45

                salut,

                c’est pousse et non pouce sinon merci à toi.

                1 réponse Dernière réponse Répondre Citer 0
                • S
                  sevenno07 dernière édition par 12 sept. 2013, 10:10

                  @‘utybo’:

                  Trollface? 😞

                  Tu c’est pas se que s’est ? …

                  Auteur originale de Sevenno's Addons et de [url=http://www.minecraftfor…

                  1 réponse Dernière réponse Répondre Citer 0
                  • utybo
                    utybo dernière édition par 12 sept. 2013, 16:43

                    Si si je suis juste déçu… 😞

                    Moddeur à la retraite et développeur de trucs en Java.

                    J'aide les gens comme je peux, alors si mon message v…

                    1 réponse Dernière réponse Répondre Citer 0
                    • S
                      sevenno07 dernière édition par 12 sept. 2013, 20:38

                      Lol !
                      Déçu de quoi ?

                      Auteur originale de Sevenno's Addons et de [url=http://www.minecraftfor…

                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 13 sept. 2013, 12:36

                        Déçu que le tutoriel soit vide …
                        D’ailleurs j’attends aussi, s’il n’est plus continué il passe dans les tutoriels refusés.

                        1 réponse Dernière réponse Répondre Citer 0
                        • 0nit
                          0nit dernière édition par 13 sept. 2013, 16:29

                          Et voila, les bûches c’est fais.

                          PS: si il y a des erreurs/fautes d’orthographes etc… faite le moi remarquer.

                          Mes tutoriels:

                          >! [1.6.x] - Le kit d'outils
                          >! [1.6.x] - Les recettes du four

                          1 réponse Dernière réponse Répondre Citer 0
                          • Gugu
                            Gugu dernière édition par 13 sept. 2013, 22:33

                            Avec l’ajout de cette nouvelle partie, je considère le tutoriel comme toujours actif.

                            Merci de le terminer le plus tôt possible.

                            "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
                            • 0nit
                              0nit dernière édition par 13 sept. 2013, 22:36

                              je fais se que je peut(surtout j’ai fais sa sur mon iphone)

                              Mes tutoriels:

                              >! [1.6.x] - Le kit d'outils
                              >! [1.6.x] - Les recettes du four

                              1 réponse Dernière réponse Répondre Citer 0
                              • Bowser338
                                Bowser338 dernière édition par 22 oct. 2013, 08:37

                                J’ai un problème avec le bloc de bois tout est bon sauf au niveau de la texture “iconTop”
                                il ne ma l’affiche pas en jeu
                                j’ai verifié le nom et tout rien a faire

                                Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                                1 réponse Dernière réponse Répondre Citer 0
                                • 0nit
                                  0nit dernière édition par 22 oct. 2013, 09:27

                                  fais voir ta classe

                                  Mes tutoriels:

                                  >! [1.6.x] - Le kit d'outils
                                  >! [1.6.x] - Les recettes du four

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • Bowser338
                                    Bowser338 dernière édition par 22 oct. 2013, 09:47

                                    package lunarblocks;
                                    import java.util.Random;
                                    import cpw.mods.fml.relauncher.Side;
                                    import cpw.mods.fml.relauncher.SideOnly;
                                    import net.minecraft.block.Block;
                                    import net.minecraft.block.BlockRotatedPillar;
                                    import net.minecraft.block.material.Material;
                                    import net.minecraft.client.renderer.texture.IconRegister;
                                    import net.minecraft.creativetab.CreativeTabs;
                                    import net.minecraft.util.Icon;
                                    import net.minecraft.world.World;
                                    public class BlockWoodL extends BlockRotatedPillar
                                    {
                                    private Icon iconSide;
                                    private Icon iconTop;
                                    public BlockWoodL(int id) {
                                    super(id, Material.wood);
                                    setCreativeTab(CreativeTabs.tabBlock);
                                    this.setBurnProperties(this.blockID, 5, 20);
                                    }
                                    public int quantityDropped(Random par1Random)
                                    {
                                    return 1;
                                    }
                                    @Override
                                    public boolean canSustainLeaves(World world, int x, int y, int z)
                                    {
                                    return true;
                                    }
                                    public void breakBlock(World par1World, int par2, int par3, int par4, int par5, int par6)
                                    {
                                    byte b0 = 4;
                                    int j1 = b0 + 1;
                                    if (par1World.checkChunksExist(par2 - j1, par3 - j1, par4 - j1, par2 + j1, par3 + j1, par4 + j1))
                                    {
                                    for (int k1 = -b0; k1 <= b0; ++k1)
                                    {
                                    for (int l1 = -b0; l1 <= b0; ++l1)
                                    {
                                    for (int i2 = -b0; i2 <= b0; ++i2)
                                    {
                                    int j2 = par1World.getBlockId(par2 + k1, par3 + l1, par4 + i2);
                                    if (Block.blocksList[j2] != null)
                                    {
                                    Block.blocksList[j2].beginLeavesDecay(par1World, par2 + k1, par3 + l1, par4 + i2);
                                    }
                                    }
                                    }
                                    }
                                    }
                                    }
                                    @Override
                                    @SideOnly(Side.CLIENT)
                                    protected Icon func_111048_c(int i) {
                                    return iconSide;
                                    }
                                    @SideOnly(Side.CLIENT)
                                    protected Icon getEndIcon(int i) {
                                    return iconTop;
                                    }
                                    @SideOnly(Side.CLIENT)
                                    public void registerIcons(IconRegister iconRegister)
                                    {
                                    iconSide = iconRegister.registerIcon("rm:LUNARWOOD");
                                    iconTop = iconRegister.registerIcon("rm:LUNARWOODTOP");
                                    }
                                    }

                                    Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • kevin_68
                                      kevin_68 Moddeurs confirmés dernière édition par 22 oct. 2013, 09:56

                                      iconSide = iconRegister.registerIcon("rm:LUNARWOOD");
                                      iconTop = iconRegister.registerIcon("rm:LUNARWOODTOP");

                                      De 1: pas de majuscules dans les noms de textures, car après tu vas te demander pouquoi elles ne sont plus là après recompilation.
                                      De 2: le nom de ton image est bien “LUNARWOODTOP.png” ?


                                      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
                                      • Bowser338
                                        Bowser338 dernière édition par 22 oct. 2013, 10:01

                                        Ok merci
                                        et Oui j’ai fait copier coller du nom
                                        j’ai meme enlever la texture il a rien remarquer il n’a pas mis de missing texture …

                                        Tout probleme a sa solution, s'il n'y a pas de solution c'est qu'il n'y a pas de problemes

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 3 nov. 2013, 19:17

                                          Plus de nouvelle ?

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 1 / 2
                                          1 sur 21
                                          • Premier message
                                            1/21
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB