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

    Résolu Probleme de transparence

    1.7.x
    1.7.10
    2
    5
    921
    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.
    • D
      Demolir dernière édition par

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

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

        1 réponse Dernière réponse Répondre Citer 0
        • D
          Demolir dernière édition par

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

            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 réponse Dernière réponse Répondre Citer 0
            • D
              Demolir dernière édition par

              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 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