1.7.2 Extend un Block vers un BlockRotatePillar ?



  • Yop,
    Depuis quelques semaines je commence à chopper le coup, mais n'étant pas un bon codeur à la base, il y a un truc qui me fait bloquer désormais concernant le BlockRotatePillar, c'est un peu particulier.

    En fait j'ai codé quatre Log (buche) sur la même class pour utiliser des metadata et éviter de faire 400 fichiers et utiliser 4 ID différentes.
    Le problème c'est que du coup mon getIcon est déjà mangé par le multi-texture. Or quand j'extend mon bloc vers un BlockRotatePillar, Eclipse me demande de créer une methods propre à ce dernier :
    Et ce truc, c'est un "getSideIcon"… Alors j'ai exploré la class incompréhensible du BlockRotatePillar, mais en fait c'est vraiment incompréhensible... Le pire c'est que du coup il faut aussi que je les fasse dépendre du Metadata !

    Je sais pas comment faire pour faire en sorte de créer un RotatePillar, j'aimerai que mes buches soient comme
    celles de Minecraft (orientable et avec des metadata) voici la class en question :

    package wwrp.Blocks.Tree;
    
    import java.util.List;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import wwrp.Common.Modwwrp;
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockRotatedPillar;
    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 BlockwwrpTree extends Block
    {
        public static String[] type = new String[] {"ashLog", "rosewoodLog", "willowLog", "whiteElmLog"};
    
        private IIcon[] Icon1 = new IIcon[2];
        private IIcon[] Icon2 = new IIcon[2];
        private IIcon[] Icon3 = new IIcon[2];
        private IIcon[] Icon4 = new IIcon[2];
    
        public BlockwwrpTree()
        {
            super(Material.wood);
            setHarvestLevel("axe",0);
            this.setHardness(3.0F);
            this.setStepSound(Block.soundTypeWood);
            this.setCreativeTab(Modwwrp.wwrpTab);
        }
    
        public void registerBlockIcons(IIconRegister iconregister)
        {
            Icon1[0] = iconregister.registerIcon("Modwwrp:"+"log_ash_top");
            Icon1[1] = iconregister.registerIcon("Modwwrp:"+"log_ash_side");
    
            Icon2[0] = iconregister.registerIcon("Modwwrp:"+"log_rosewood_top");
            Icon2[1] = iconregister.registerIcon("Modwwrp:"+"log_rosewood_side");
    
            Icon3[0] = iconregister.registerIcon("Modwwrp:"+"log_willow_top");
            Icon3[1] = iconregister.registerIcon("Modwwrp:"+"log_willow_side");
    
            Icon4[0] = iconregister.registerIcon("Modwwrp:"+"log_whiteElm_top");
            Icon4[1] = iconregister.registerIcon("Modwwrp:"+"log_whiteElm_side");
        }
    
        @SideOnly(Side.CLIENT)
        public void getSubBlocks(Item item, CreativeTabs creativeTabs, List list)
        {
            for(int metadata = 0; metadata < type.length; metadata++)
            {
                list.add(new ItemStack(item, 1, metadata));
            }
        }
    
        @SideOnly(Side.CLIENT)
        public IIcon getIcon(int side, int metadata)
        {
            switch(metadata)
            {
                case 0:
                    return side < 2 ? Icon1[0] : Icon1[1];
                case 1:
                    return side < 2 ? Icon2[0] : Icon2[1];
                case 2:
                    return side < 2 ? Icon3[0] : Icon3[1];
                case 3:
                    return side < 2 ? Icon4[0] : Icon4[1];
                default:
                    return blockIcon;
            }
        }
    }
    

    Est-ce que quelqu'un pense pouvoir m'aider ?
    Je vous dis merci d'avance !
    Noxon



  • je te conseille de faire une "extends" de la classe "blockOldLogs" et de aller voir la classe "blockNewLogs"



  • J'ai réussi à traduire une partie du registerIcon dans la class BlockNewLog

    
    @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister iconregister)
    {
    this.field_150167_a = new IIcon[type.length];
    this.field_150166_b = new IIcon[type.length];
    
    for (int i = 0; i < this.field_150167_a.length; ++i)
    {
    this.field_150167_a* = iconregister.registerIcon(this.getTextureName() + "_" + type*);
    this.field_150166_b* = iconregister.registerIcon(this.getTextureName() + "_" + type* + "_top");
    }
    }
    
    

    Mais aucune idée de ce à quoi correspond ces fields.
    Je trouve ça compliqué de se référer aux sources, rien n'est traduit. 😞


  • Modérateurs

    field_150167_a -> Texture principale
    field_150166_b -> Texture du haut/bas



  • je croit que il y a avec MCP ou forge, un fichier qui te donne la traduction de tous les field.


  • Moddeurs confirmés Modérateurs

    oui dans le dossier mcp tu as un dossier conf et tu as tout dedans


  • Modérateurs

    Il reste pas mal de field non traduit, mais avec le temps, tu les reconnais facilement.



  • @'Diangle':

    je croit que il y a avec MCP ou forge, un fichier qui te donne la traduction de tous les field.

    J'utilise pas MCP, seulement Forge. 😕

    Merci Loup, n'ayant jamais codé, j'ai parfois des soucis avec ça ^^

    Et merci Diangle ton astuce a fonctionné à merveille 🙂

    Maintenant il me reste plus qu'à galérer sur le reste de l'arbre ! …
    Quoique, j'ose même pas essayer en fait, je vais m'en tenir là. 😊


  • Modérateurs

    Forge utilise MCP, donc si, tu utilises bien MCP 😉


  • Modérateurs

    @Noxon, si tu as des fields que tu ne comprends pas, n'hésites pas à m'envoyer un mp.


Log in to reply