Un extends BlockWall avec Metadata ?



  • Yo,
    depuis ce début d'après-midi je cherche des solutions afin de retourner les textures d'un block et son metadata sur un blockWall custom.
    Voici la classe de mon bloc sans les metadata (un simple extends vers BlockWall) :

    
    package com.mvmc.mvmcmod.blocks;
    
    import java.util.List;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockWall;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class BlockmvmcWall extends BlockWall {
    
        private Block block1;
    
        public BlockmvmcWall(Block block) {
            super(block);
            this.block1 = block;
        }
    
        @SideOnly(Side.CLIENT)
        public IIcon getIcon(int side, int meta)
        {
            return block1.getBlockTextureFromSide(side);
        }
    
        public void getSubBlocks(Item item, CreativeTabs tab, List list)
        {
            list.add(new ItemStack(item, 1, 0));
        }
    }
    

    Voilà, même en ayant joué de nombreuses fois avec le getIcon et son return, je n'ai pas réussi à mettre en place les textures d'un block selon son
    metadata. Il retourne toujours automatiquement à celles du block1 : 0 (ce qui est logique, car c'est dans le premier constructeur). 
    En fait le mieux ça serait carrément de pouvoir intégrer le Metadata dans le constructeur, un peu comme ça :

    public BlockmvmcWall(Block block, Metadata meta)
    

    Mais c'est impossible … 😞
    Quelqu'un aurait une solution pour faire un Wall qui prend les textures d'un block et son metadata ?
    Par exemple un Mur de bois de Sapin.

    Merci d'avance...


  • Administrateurs

    package com.mvmc.mvmcmod.blocks;
    
    import java.util.List;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockWall;
    import net.minecraft.creativetab.CreativeTabs;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.IIcon;
    
    public class BlockmvmcWall extends BlockWall {
    
        private Block block1;
    private int metadata;
    
        public BlockmvmcWall(Block block, int metadata) {
            super(block);
            this.block1 = block;
    this.metadata = metadata;
        }
    
        @SideOnly(Side.CLIENT)
        public IIcon getIcon(int side, int meta)
        {
            return block1.getIcon(side, this.metadata);
        }
    
        public void getSubBlocks(Item item, CreativeTabs tab, List list)
        {
            list.add(new ItemStack(item, 1, 0));
        }
    }
    


  • Alors c'était juste le "this." avant le meta qui me manquait durant tout les tests …
    Merci je vais essayer ça

    EDIT : Ah non, j'aurai jamais pensé pouvoir utiliser ce paramètre dans le constructeur principal directement.
    Merci ça fonctionne. 🙂 Il me reste bien des choses à apprendre ! …