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

    Résolu Créer des tapis.

    Anciennes versions
    1.5.2
    3
    10
    4023
    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.
    • B
      Bounty dernière édition par

      Bonjour à tous,

      Voila j’ai créer une class tapis_brun, et mon problème est encore une fois le direction du tapis
      dont je voudrais que le coté arrondie soit de mon coté quand je le pose à terre.

      J’ai essayer la formule comme sur les block mais sa ne fonctionne pas.

      
      public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving living, ItemStack stack)
      {
      int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0f / 360.0f) + 2.5D) & 3;
      world.setBlockMetadataWithNotify(x, y, z, direction, 2);
      }
      
      
      • le tapis_brun ![](http://bountycraft.power-heberg.com/Images perso/tapis-brun.png) ![](http://bountycraft.power-heberg.com/Images perso/tapis_direction.png)

      Merci encore d’avance pour l’aide que vous pour m’apporter.

      
      package crepi.mod;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.entity.EntityLiving;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.AxisAlignedBB;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.World;
      
      public class BlockTapis_brun extends Block
      {
      public BlockTapis_brun(int par1, int par2)
      {
      super(par1, Material.grass);
      setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F);
      setTickRandomly(true);
      this.setCreativeTab(ModBuild.CreativeTabAccessoire);
      }
      
      public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
      {
      int i = par1World.getBlockMetadata(par2, par3, par4) & 7;
      
      if (i >= 3)
      {
      return AxisAlignedBB.getBoundingBox((double)par2 + minX, (double)par3 + minY, (double)par4 + minZ, (double)par2 + maxX, (float)par3 + 0.5F, (double)par4 + maxZ);
      }
      else
      {
      return null;
      }
      }
      
      public boolean isOpaqueCube()
      {
      return false;
      }
      
      public boolean renderAsNormalBlock()
      {
      return false;
      }
      }
      
      

      Bounty…

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

        Il faut mettre des metadatas à ton bloc, la méthode que tu as utilisée en a besoin:

        world.setBlockMetadataWithNotify(x, y, z, direction, 2);
        


        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
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          Il faut que tu fasse 4 texture, une pour chaque sens, et ensuite dans le getIcon en fonction du metadata tu prends la bonne texture.

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

            Bonjour,

            Voila j’ai fait mes quatre textures et modifier mon code et je n’est toujours un seul sens à mon tapis, donc mon code ne doit pas être bon.

            
            package crepi.mod;
            
            import cpw.mods.fml.relauncher.Side;
            import cpw.mods.fml.relauncher.SideOnly;
            import net.minecraft.block.Block;
            import net.minecraft.block.material.Material;
            import net.minecraft.client.renderer.texture.IconRegister;
            import net.minecraft.entity.EntityLiving;
            import net.minecraft.item.ItemStack;
            import net.minecraft.util.AxisAlignedBB;
            import net.minecraft.util.Icon;
            import net.minecraft.util.MathHelper;
            import net.minecraft.world.World;
            
            public class BlockTapis_Orange extends Block
            {
            private Icon icontop2; //= this.tapis_orange3;
            private Icon icontop3; //= this.tapis_orange2;
            private Icon icontop4; //= this.tapis_orange5;
            private Icon icontop5; //= this.tapis_orange4;
            
            public BlockTapis_Orange(int par1, int par2)
            {
            super(par1, Material.grass);
            setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.125F, 1.0F);
            setTickRandomly(true);
            this.setCreativeTab(ModBuild.CreativeTabAccessoire);
            }
            
            public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
            {
            int i = par1World.getBlockMetadata(par2, par3, par4) & 7;
            
            if (i >= 3)
            {
            return AxisAlignedBB.getBoundingBox((double)par2 + minX, (double)par3 + minY, (double)par4 + minZ, (double)par2 + maxX, (float)par3 + 0.5F, (double)par4 + maxZ);
            }
            else
            {
            return null;
            }
            }
            
            public boolean isOpaqueCube()
            {
            return false;
            }
            
            public boolean renderAsNormalBlock()
            {
            return false;
            }
            
            @SideOnly(Side.CLIENT)
            public Icon getIcon(int side, int metadata)
            {
            return side == 1 ? this.icontop2 : (metadata == 2 && side == 1 ? this.icontop3 :
            (metadata == 3 && side == 1 ? this.icontop2 :
            (metadata == 4 && side == 1 ? this.icontop5 :
            (metadata == 5 && side == 1 ? this.icontop4 : this.blockIcon))));
            }
            @Override
            @SideOnly(Side.CLIENT)
            public void registerIcons(IconRegister iconRegister)
            {
            icontop2 = iconRegister.registerIcon("tapis_orange0"); // Sud f0
            icontop3 = iconRegister.registerIcon("tapis_orange2"); // Nord f2
            icontop4 = iconRegister.registerIcon("tapis_orange3"); // Est f3
            icontop5 = iconRegister.registerIcon("tapis_orange1"); // Ouest f1
            }
            
            public void onBlockPlacedBy(World world, int x, int y, int z, EntityLiving living, ItemStack stack)
            {
            int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0f / 360.0f) + 2.5D) & 3;
            world.setBlockMetadataWithNotify(x, y, z, direction, 2);
            }
            }
            
            

            Bounty…

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

              @SideOnly(Side.CLIENT)
              public Icon getIcon(int side, int metadata)
              {
              return metadata == 1 ? this.icontop2 : metadata == 2 ? this.icontop3 :
              metadata == 3 ? this.icontop4 : this.icontop5;
              }
              
              1 réponse Dernière réponse Répondre Citer 0
              • B
                Bounty dernière édition par

                re bonjour,

                J’ai appliquer le code et voila ce que sa donne sur l’image.

                ![](http://bountycraft.power-heberg.com/Images perso/tapis_direction1.png)

                J’ai eu bon changer les les textures au icontop mais rien à faire de n’obtiens qu’une seule direction de bonne à chaque fois., et
                aussi j’ai des bordures d’épaisseur sur les textures pour certaine.

                Bounty…

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

                  Pourtant c’est possible, il faut juste adapter le getIcon au metadata du bloc.
                  Pour le problème de bordure, c’est la fonction getCollisionBoundingBoxFromPool, au pire envoie-moi les 4 textures, je vais voir ce que je peux faire de mon côté.

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

                    Re bonjour,

                    Je te donne le lien du téléchargement pour les textures et le fichier texte.

                    [Les textures BlockTapis Orange](http://bountycraft.power-heberg.com/Images perso/BlockTapis_Orange.zip)

                    Merci d’avance à toi.

                    Bounty…

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


                      C’est bon comme ça ?

                      J’ai fais ça en 1.6.2, donc réadapte pour la 1.5.2 (il y a juste EntityLivingBase à mettre en EntityLiving il me semble)

                      package tutoriel.common;
                      
                      import net.minecraft.block.Block;
                      import net.minecraft.block.material.Material;
                      import net.minecraft.client.renderer.texture.IconRegister;
                      import net.minecraft.entity.EntityLivingBase;
                      import net.minecraft.item.ItemStack;
                      import net.minecraft.util.AxisAlignedBB;
                      import net.minecraft.util.Icon;
                      import net.minecraft.util.MathHelper;
                      import net.minecraft.world.World;
                      
                      public class BlockTapis_brun extends Block
                      {
                      private Icon icontop1, icontop2, icontop3, icontop4, iconvide;
                      
                      public BlockTapis_brun(int id)
                      {
                      super(id, Material.grass);
                      setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.001F, 1.0F);
                      }
                      
                      public void registerIcons(IconRegister iconRegister)
                      {
                      icontop1 = iconRegister.registerIcon("modtutoriel:tapis_orange1");
                      icontop2 = iconRegister.registerIcon("modtutoriel:tapis_orange0");
                      icontop3 = iconRegister.registerIcon("modtutoriel:tapis_orange2");
                      icontop4 = iconRegister.registerIcon("modtutoriel:tapis_orange3");
                      iconvide = iconRegister.registerIcon("modtutoriel:vide");
                      }
                      
                      public Icon getIcon(int side, int meta)
                      {
                      if(side == 1 || side == 0)
                      {
                      switch(meta)
                      {
                      case 0:
                      return icontop2;
                      case 1:
                      return icontop4;
                      case 2:
                      return icontop3;
                      default:
                      return icontop1;
                      }
                      }
                      else
                      return iconvide;
                      }
                      
                      public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack)
                      {
                      int direction = MathHelper.floor_double((double)(living.rotationYaw * 4.0f / 360.0f) + 2.5D) & 3;
                      world.setBlockMetadataWithNotify(x, y, z, direction, 2);
                      }
                      
                      public boolean isOpaqueCube()
                      {
                      return false;
                      }
                      
                      public boolean renderAsNormalBlock()
                      {
                      return false;
                      }
                      }
                      

                      Vide est une image de 1x1 transparent, c’est pour éviter d’avoir un truc sur les cotés

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

                        Bonjour à tous,

                        Merci encore pour ton aide robin4002.

                        Bounty…

                        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