[1.7.10] Проблема с текстурами

Как к предметам с метадатой нормально прикрепить текстуры? Вот это не работает:
Код:
@SideOnly(Side.CLIENT)
    public IIcon getIcon(ItemStack itemstack, int metadata) {
        if (metadata >= 0 && metadata < this.metadata.length) {
            return icon_array[metadata];
        }
        return super.getIcon(itemstack, metadata);
    }
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IIconRegister ir) {
        super.registerIcons(ir);
        icon_array = new IIcon[metadata.length];
        for (int i = 0; i < metadata.length; ++i) {
            icon_array[i] = ir.registerIcon(this.getIconString() + "/" + metadata[i]);
        }
    }
 
Ну есть и более доступные и понятные туториалы. В моём случае нужно было просто кое-что упростить в регистрации текстур.
 
Вот такая ещё задача: создаю печь, вроде всё нормально. Но в инвентаре текстура повёрнута задом. Это как-то связано с onBlockPlacedBy. Но почему-то в ванильной печке текстура в инвентаре отображается правильно, а у меня нет.
Пробовал такие варианты:
Код:
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
    if(side == 0 || side == 1) {
        return topIcon;
    } if(side != meta) {
        return blockIcon;
    } else return frontIcon;
}


Код:
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
    return side == 1 ? this.topIcon : (side == 0 ? this.topIcon : (side != meta ? this.blockIcon : this.frontIcon));
}
 
Проблема решена. Сделал дополнительную проверку на метаданные:
Код:
public IIcon getIcon(int side, int meta) {
    if(meta == 0 && side == 3) {
        return frontIcon;
    } else if(side == 1) {
        return topIcon;
    } else if(side != meta) {
        return blockIcon;
    } else return frontIcon;
}
 
Назад
Сверху