MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Block traversable avec la texture du block adjascent

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    5 Messages 3 Publieurs 673 Vues 1 Watching
    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.
    • CiolgamingC Hors-ligne
      Ciolgaming
      dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        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 réponse Dernière réponse Répondre Citer 1
        • CiolgamingC Hors-ligne
          Ciolgaming
          dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • DeletedD Hors-ligne
            Deleted
            dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • CiolgamingC Hors-ligne
              Ciolgaming
              dernière édition par

              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 réponse Dernière réponse Répondre Citer 0
              • 1 / 1
              • Premier message
                Dernier message
              Design by Woryk
              ContactMentions Légales

              MINECRAFT FORGE FRANCE © 2024

              Powered by NodeBB