Поворот

Версия Minecraft
1.7.10
1,471
19
190
Нужно сделать что бы в зависимости от угла (0,45,90,135,180,225,270,315) менялась верхняя текстура
 
Скорее
не
Код:
return side == 1 ? rcc.AsphaltLine.getIcon(0, 0) : super.getIcon(side, meta);
а
Код:
return side == 1 ? top : super.getIcon(side, meta);
Но я не знаю как ты именно хочешь.
Но я скидывал по-лучше пример:
timaxa007 написал(а):
Код:
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if (side == 0) return bottom;
else if (side == 1) return top;
else return side;
}
if (side == 0) return bottom; - низ,
else if (side == 1) return top; - верх,
else return side; - в остальных случаях, т.е. все четыре оставшихся сторон блока.
 
timaxa007 написал(а):
Скорее
не
Код:
return side == 1 ? rcc.AsphaltLine.getIcon(0, 0) : super.getIcon(side, meta);
а
Код:
return side == 1 ? top : super.getIcon(side, meta);
Но я не знаю как ты именно хочешь.
Но я скидывал по-лучше пример:
timaxa007 написал(а):
Код:
@SideOnly(Side.CLIENT)
public IIcon getIcon(int side, int meta) {
if (side == 0) return bottom;
else if (side == 1) return top;
else return side;
}
if (side == 0) return bottom; - низ,
else if (side == 1) return top; - верх,
else return side; - в остальных случаях, т.е. все четыре оставшихся сторон блока.

А как возвращать эту текстуру

Код:
public void onBlockPlacedBy(World world, int x, int y, int z,EntityLivingBase player, ItemStack item)
 {
 int l = MathHelper.floor_double((double)((player.rotationYaw + 180.0F) * 8F / 360.0F) + 0.5D) & 7;
 world.setBlockMetadataWithNotify(x, y, z, l, 2);
 }
 
Учитывая, что у тебя 8 поворотов, то думаю не как. Можно на 4 стороны, нужно смотреть пример от двери. Только там flip используется, а тебе нужно будет поворачивать, типа по 90 градусов и сделать две текстуры: на одной будет прямая линия, на другой диагональная.
 
timaxa007 написал(а):
Учитывая, что у тебя 8 поворотов, то думаю не как. Можно на 4 стороны, нужно смотреть пример от двери. Только там flip используется, а тебе нужно будет поворачивать, типа по 90 градусов и сделать две текстуры: на одной будет прямая линия, на другой диагональная.

Ладно, а как установить 8 текстур, можно без этого метода.
 
Переменная top превратить его в массив и в регистрации указать, что массив будет длиной 8 и во все 8 дать значении каждой текстуры. А в методе getIcon по метадате возращять верхушке определённый объект из массива top.
 
timaxa007 написал(а):
Переменная top превратить его в массив и в регистрации указать, что массив будет длиной 8 и во все 8 дать значении каждой текстуры. А в методе getIcon по метадате возращять верхушке определённый объект из массива top.

А какой тип использовать, т.е. String, int или что?
 
timaxa007 написал(а):
Для top всё то-же, но как массив. IIcon[] top = new IIcon[8];

Код:
IIcon[] top = new IIcon[7];{
 top[0] = (IIcon) new ResourceLocation(rcc.MOD_ID,"textures/block/asphaltL_0");
 top[1] = (IIcon) new ResourceLocation(rcc.MOD_ID,"textures/block/asphaltL_1"); 
 top[2] = (IIcon) new ResourceLocation(rcc.MOD_ID,"textures/block/asphaltL_2"); 
 top[3] = (IIcon) new ResourceLocation(rcc.MOD_ID,"textures/block/asphaltL_3"); 
 }
 
timaxa007 написал(а):
Код:
@SideOnly(Side.CLIENT)
private IIcon[] top = new IIcon[8];

@SideOnly(Side.CLIENT)
public void registerBlockIcons(IIconRegister ir) {
 for (int i = 0; i < top.length; ++i)
 top[i] = ir.registerIcon(rcc.MOD_ID +":asphaltL_" + i);
}

А разве не 
private IIcon[] top = new IIcon[7];
 
Назад
Сверху