Собственная текстура на каждую сторону блока.

Ладно, давай разбираться вместе.
У нас есть массив иконок из 6 элементов(да, у блока 6 сторон, внезапно).
В методе registerBlockIcons мы проходим циклом по этому массиву и регистрируем его каждый элемент(текстуру, иконку) с помощью метод registerIcons.
Но если у нас есть одинаковые стороны, зачем нам делать одно и тоже? Только карту текстур забиваем.
И да, тогда нет смысла держать массив из 6 элементов. Давай представим, что у нас боковые четыре стороны одинаковые, а верх и низ - разные.
Тогда код будет выглядеть так.

Код:
IIcon[] icons;

public void registerBlockIcons(IIconRegister ir){
    icons = new IIcon[3];
    icons[0] = ir.registerIcons("up"); // Текстура для верхней стороны
    icons[1] = ir.registerIcons("side"); // Текстура для боковых сторон
    icons[2] = ir.registerIcons("down"); // Текстура для нижней стороны
}

Угу, зарегистрировали все нужные текстуры.
Теперь нам нужно в зависимости от стороны блока накладывать ему нужную текстуру.
В этом нам поможет метод getIcon, у которого в аргументах есть сторона блока и метадата(нам она сейчас не нужна).

Код:
public IIcon getIcon(int side, int meta) {
    return side == 0 ? icons[0] : (side == 1 ? icons[2] : icons[1]);
}

Здесь мы проверили, что если сторона 0(вверх) - то мы вернули верхнюю текстуру и так далее.
Вот и все.
 
Спасибо Agravaine!
Единственное, немного подправлю твой код::)
Код:
IIcon[] icons;

public void registerBlockIcons(IIconRegister ir){
    icons = new IIcon[3];
    icons[0] = ir.registerIcon("DOWN"); // Текстура для НИЖНЕЙ стороны
    icons[1] = ir.registerIcon("side"); // Текстура для боковых сторон
    icons[2] = ir.registerIcon("UP"); // Текстура для ВЕРХНЕЙ стороны
}

ir.registerIcon - без "S" на конце и сторонность немного не так идет. Ну, не суть. Главное принцип понятен.
Все работает, огромное спасибо! :D
Скажешь WebMoney - отблагодарю.

P.S. На "закуску", как понимаю, сделать анимированную иконку на подобии 1.6.4 версии в 1.7.10 не получится? Теперь надо прописывать каждую текстуру и писать код на смену картинок?
 
Спасибо, разобрался.
Напишу для тех, кто не знает. Может пригодится.
1. В Фотошопе рисуем текстуру в виде полоски. Например, если мы хотим в анимацию вставить 2 кадра, то размер картинки должен быть 16х32 и вставляем две текстуры друг под другом.
2. Дальше называем ее, например: anime.png
3. Загружаем, как обычную текстуру в свой код
4. Далее создаем текстовый файл с названием нашей текстуры, но на конце добавляем .mcmeta. Должно получиться так: anime.png.mcmeta
Далее в этом файле пишем текст:
Код:
{
    "animation": {
        "frametime": 2.5 //частота обновления картинки
    }
}

После этого файл также кидаем в туже папку, что и наша картинка anime.png
Все, готово!
Описал коряво, но, думаю, понятно. ;)
 
Назад
Сверху