Navigation

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

    SOLVED Block traversable avec la texture du block adjascent

    1.7.x
    1.7.10
    3
    5
    506
    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.
    • Ciolgaming
      Ciolgaming last edited by

      Bonjour, j’ai récement eu l’idée d’un block que l’on peut traverser, et qui prends la texture du block qui est en x + 1, cependant je n’ai pas trouvé de solution pour récupérer la texture sur le forum, voici mon code pour le moment :

      package com.mod.ciolmod.blocks;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.client.Minecraft;
      import net.minecraft.util.AxisAlignedBB;
      import net.minecraft.util.IIcon;
      import net.minecraft.world.IBlockAccess;
      import net.minecraft.world.World;
      
      public class BlockTravers extends Block {
      
         public BlockTravers(Material p_i45394_1_)
         {
             super(p_i45394_1_);
             this.setBlockBounds(0.0f, 0.0f, 0.0f, 1f, 1f, 1f);
             this.setLightLevel(0.1f);
             this.setLightOpacity(10);
         }
      
          public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_)
          {
              return null;
          }
      
          public boolean isOpaqueCube(){
              return false;
          }
      
         public boolean renderAsNormalBlock()
         {
             return true;
         }
      
      }
      

      Merci de votre réponse,
      Bonne journée !

      1 Reply Last reply Reply Quote 0
      • robin4002
        robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

        Salut,
        Il faut que tu override la fonction getIcon(IBlockAccess world, int x, int y, int z, int side) et que tu return l’IIcon du bloc à x + 1.

        De tête ça donne quelques choses comme ceci :

        public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
        {
            return world.getBlock(x + 1, y, z).getIcon(world, x + 1, y, z, side);
        }
        

        Attention par contre au risque de boucle. En plaçant que le même bloc en ligne sur la même coordonnée x, ça risque de mal se comporter.

        1 Reply Last reply Reply Quote 1
        • Ciolgaming
          Ciolgaming last edited by

          Merci beaucoup ça fonctionne, cependant y aurait-il moyen de récupérer la teinte vert si c’est de la grass à côté ?  🙂

          1 Reply Last reply Reply Quote 0
          • Deleted
            Deleted last edited by

            Salut, rends toi dans la classe BlockGrass, tu verras trois instance de IIcon au-dessus du constructeur, teste les voir laquelle est la bonne.

            1 Reply Last reply Reply Quote 0
            • Ciolgaming
              Ciolgaming last edited by

              Merci beaucoup pour toute votre aide 🙂

              voici le code pour ceux que ça intéresse :

              package com.mod.ciolmod.blocks;
              
              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.util.AxisAlignedBB;
              import net.minecraft.util.IIcon;
              import net.minecraft.world.ColorizerGrass;
              import net.minecraft.world.IBlockAccess;
              import net.minecraft.world.World;
              
              public class BlockTravers extends Block {
              
              public BlockTravers(Material p_i45394_1_)
              {
              super(p_i45394_1_);
              this.setBlockBounds(0.0f, 0.0f, 0.0f, 1f, 1f, 1f);
              this.setLightLevel(0.1f);
              this.setLightOpacity(10);
              
              }
              
              public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_)
                 {
                     return null;
                 }
              
                 public boolean isOpaqueCube(){
              
                  return false;
              
                  }
              
              public boolean renderAsNormalBlock()
              
              {
              
              return true;
              
              }
              
              @Override
              public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side)
              {
                 return world.getBlock(x + 1, y, z).getIcon(world, x + 1, y, z, side);
              }
              
                 @SideOnly(Side.CLIENT)
                 public int getBlockColor()
                 {
                     double d0 = 0.5D;
                     double d1 = 1.0D;
                     return ColorizerGrass.getGrassColor(d0, d1);
                 }
              
                 @SideOnly(Side.CLIENT)
                 public int getRenderColor(int p_149741_1_)
                 {
                     return this.getBlockColor();
                 }
              
                 @SideOnly(Side.CLIENT)
                 public int colorMultiplier(IBlockAccess p_149720_1_, int p_149720_2_, int p_149720_3_, int p_149720_4_)
                 {
                     int l = 0;
                     int i1 = 0;
                     int j1 = 0;
              
                     for (int k1 = -1; k1 <= 1; ++k1)
                     {
                         for (int l1 = -1; l1 <= 1; ++l1)
                         {
                             int i2 = p_149720_1_.getBiomeGenForCoords(p_149720_2_ + l1, p_149720_4_ + k1).getBiomeGrassColor(p_149720_2_ + l1, p_149720_3_, p_149720_4_ + k1);
                             l += (i2 & 16711680) >> 16;
                             i1 += (i2 & 65280) >> 8;
                             j1 += i2 & 255;
                         }
                     }
              
                     return (l / 9 & 255) << 16 | (i1 / 9 & 255) << 8 | j1 / 9 & 255;
                 }
              
              }
              
              
              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