Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED Créer des tapis.

    Anciennes versions
    1.5.2
    3
    10
    3820
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      Bounty last edited by

      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 Reply Last reply Reply Quote 0
      • kevin_68
        kevin_68 Moddeurs confirmés last edited by

        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);
        
        1 Reply Last reply Reply Quote 0
        • robin4002
          robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

          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 Reply Last reply Reply Quote 0
          • B
            Bounty last edited by

            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 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

              @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 Reply Last reply Reply Quote 0
              • B
                Bounty last edited by

                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 Reply Last reply Reply Quote 0
                • robin4002
                  robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

                  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 Reply Last reply Reply Quote 0
                  • B
                    Bounty last edited by

                    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 Reply Last reply Reply Quote 0
                    • robin4002
                      robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by


                      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 Reply Last reply Reply Quote 0
                      • B
                        Bounty last edited by

                        Bonjour à tous,

                        Merci encore pour ton aide robin4002.

                        Bounty…

                        1 Reply Last reply Reply Quote 0
                        • 1 / 1
                        • First post
                          Last post
                        Design by Woryk
                        Contact / Mentions Légales / Faire un don

                        MINECRAFT FORGE FRANCE © 2018

                        Powered by NodeBB