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

    Solved Probleme de transparence

    1.7.x
    1.7.10
    2
    5
    828
    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.
    • D
      Demolir last edited by

      Bonjour ou bonsoir !
      Dernièrement j’ai voulu ajouter des vitres colorées sur mon serveur en paralèlle des vitres classiques
      tout semble fonctionner sauf un élément de la transparence de ces dernieres :

      A droites les miennes a Gauche les blocs de verre vanilla
      Je ne comprends pas pourquoi les miennes ne se comportent pas comme les fenêtres classiques voici la classe de mes vitres
      (si vous avez besoin de l’ItemBlock je l’ajouterais)

      ​package com.phoenixarena.phoenix.common;
      
      import java.util.List;
      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.material.Material;
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.IIcon;
      
      public class BlockPhoenixGlassMetaDataBlock extends Block
      {
          //MetaData
          public static String[] subBlock = new String[]{"glassWhiteIronBlock","glassOrangeIronBlock","glassMagentaIronBlock","glassLightBlueIronBlock","glassYellowIronBlock","glassLimeIronBlock","glassPinkIronBlock","glassGreyIronBlock","glassLightGreyIronBlock","glassCyanIronBlock","glassPurpleIronBlock","glassBlueIronBlock","glassBrownIronBlock","glassGreenIronBlock","glassRedIronBlock","glassBlackIronBlock"};
          public IIcon[] iconArray = new IIcon[subBlock.length];
          //Declaration du bloc
          protected BlockPhoenixGlassMetaDataBlock()
          {
              super(Material.glass);    
          }
          public boolean renderAsNormalBlock()
          {
              return false;
          }
          //Transparence
          public boolean isOpaqueCube()
          {
          return false;
          }
          //Silk Touch
          protected boolean canSilkHarvest()
          {
              return true;
          }
          //Couche Alpha
          @SideOnly(Side.CLIENT)
          public int getRenderBlockPass()
          {
              return 1;
          }
      
          public int quantityDropped(Random p_149745_1_)
          {
              return 0;
          }
          //Drops de blocs
          public int damageDropped(int metadata)
          {
              return metadata;
          }
          //Ajout des blocs
          public void getSubBlocks(Item item, CreativeTabs tabs, List list)
          {
              for(int i = 0; i<subblock.length; i++)<br="">        {
                  list.add(new ItemStack(item,1, i));
              }
          }
          //Catalogue des textures
          public void registerBlockIcons(IIconRegister iconRegister)
          {
              for(int i = 0; i<subblock.length; i++)<br="">        {
                  this.iconArray* = iconRegister.registerIcon(Phoenix.MODID + ":" + subBlock*);
              }
          }
          //Ajout des textures
          public IIcon getIcon(int side, int metadata)
          {
              if(metadata >=0 && metadata < subBlock.length)
              {
                  return this.iconArray[metadata];    
              }
              return this.iconArray[0];
          }
      }
      

      J’ai crée ce bloc a l’aide du tutoriel vidéo concernant les blocs à métadatas
      En esperant que vous pourrez m’aider
      Merci beaucoup</subblock.length;></subblock.length;>

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

        Regarde dans BlockGlass. C’est la fonction shouldBeRendered qui te manque.
        Sinon c’est quoi un “Ptonleme” ?

        1 Reply Last reply Reply Quote 0
        • D
          Demolir last edited by

          XD mince c’est ça de taper trop vite ^^ on décale d’une touche et problème devient : ptonlème
          Pour ce qui est du code j’ai trouvé ça dans BlockBreakable.class :

          ​    @SideOnly(Side.CLIENT)
          
              public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_)
              {
                  Block block = p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_);
          
                  if (this == Blocks.glass || this == Blocks.stained_glass)
                  {
                      if (p_149646_1_.getBlockMetadata(p_149646_2_, p_149646_3_, p_149646_4_) != p_149646_1_.getBlockMetadata(p_149646_2_ - Facing.offsetsXForSide[p_149646_5_], p_149646_3_ - Facing.offsetsYForSide[p_149646_5_], p_149646_4_ - Facing.offsetsZForSide[p_149646_5_]))
                      {
                          return true;
                      }
          
                      if (block == this)
                      {
                          return false;
                      }
                  }
          
                  return !this.field_149996_a && block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_);
              }
          

          Mais quand je le copie dans mon bloc il y a des erreurs sur le field_149996_a je suis un peu perdu 😕
          merci d’avance

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

            field_149996_a est une valeur booléenne qui est défini dans le constructeur. Le vers à la valeur false.
            Donc tu peux mettre false pour la remplace.
            Ça donne donc :

            return !false && block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_);
            

            qu’on peut remplacer par :

            return true && block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_);
            

            et donc simplifier par :

            return block == this ? false : super.shouldSideBeRendered(p_149646_1_, p_149646_2_, p_149646_3_, p_149646_4_, p_149646_5_);
            

            C’est de la logique ^^

            Pense aussi a remplacer :

                    if (this == Blocks.glass || this == Blocks.stained_glass)
            

            par :

                    if (this == TaClassePrincipale.tonBlock)
            
            1 Reply Last reply Reply Quote 0
            • D
              Demolir last edited by

              Tout marche 😄 Merci beaucoup !
              Franchement je saurais pas décrire a quel point je suis heureux j’ai planché dessus tout l’après midi mais je débute ^^
              Merci Encore ! 🙂

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

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB