Тот самый поворот блока

Версия Minecraft
1.7.10

Led

291
3
0
Обращаюсь к Вам с проблемой, спустившейся на меня снова. Все эти печки, поиски, все просмотрено. Понял что ответ в бревне, но реализовать никак не получается, получается дичь.

ТЗ:
Есть блок, у которого текстуры всех сторон, кроме верхней одинаковы. На верхней стороне полоска. (См. фото блока ниже)
Нужно, что бы при установке блока эта самая линия была параллельно оси взгляда игрока.
То есть нужно как то крутить текстуру верхней стороны или использовать аналогичную повернутую текстуру.

gQ5z0Z7MwTg.jpg
Понимаю, что бревно очень подобно, но не могу переделать, получается туфта.
Заранее Всем спасибо за помощь!
 
Решение
Решил проблему так, подглядев у наковальни
Код:
public class Asphalt_White_Line extends Block {
    public IIcon side;
    public IIcon top1;
    public IIcon top2;

 public Asphalt_White_Line(String name) {
 super(Material.rock);

        setBlockName(name);
 this.setBlockName("Asphalt_White_Line");
 this.setCreativeTab(CreativeTabs.tabBlock);
 this.setHardness(3F);
 this.setResistance(6F);
 this.setHarvestLevel("pickaxe", 2);
 this.setLightLevel(0F);/*
 this.setBlockTextureName("lwm3:Asphalt_White_Line");*/
 }
 @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta)
    {
 IIcon b = null;
 
 if (side == 1) {
 if (meta == 0) {
 b = this.top1;
 }
 if (meta == 1) {
 b = this.top2;
 }
 if (meta ==...

timaxa007

Модератор
5,831
409
672
Подобный вопрос был http://forum.mcmodding.ru/%d0%a2%d0%b5%d0%bc%d0%b0-%d0%9f%d0%be%d0%b2%d0%be%d1%80%d0%be%d1%82-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d1%83%d1%80%d1%8b-%d1%81%d0%b2%d0%b5%d1%80%d1%85%d1%83-%d0%bd%d0%b0-%d0%b1%d0%bb%d0%be%d0%ba%d0%b5
 

Led

291
3
0
timaxa007 написал(а):
Подобный вопрос был http://forum.mcmodding.ru/%d0%a2%d0%b5%d0%bc%d0%b0-%d0%9f%d0%be%d0%b2%d0%be%d1%80%d0%be%d1%82-%d1%82%d0%b5%d0%ba%d1%81%d1%82%d1%83%d1%80%d1%8b-%d1%81%d0%b2%d0%b5%d1%80%d1%85%d1%83-%d0%bd%d0%b0-%d0%b1%d0%bb%d0%be%d0%ba%d0%b5

Спасибо Вам большое, как и пол года назад, Вы откликнулись на мою просьбу.
Но я уже два часа бьюсь, не понимаю вообще как реализовать вот это.

Заранее благодарен
 

timaxa007

Модератор
5,831
409
672
Там, типа давать блоку определённую метадату и в методе getIcon(int side, int meta) от условия какое имеет значение метадата в аргументе возвращать объект IIcon'а.
 

Led

291
3
0
timaxa007 написал(а):
Там, типа давать блоку определённую метадату и в методе getIcon(int side, int meta) от условия какое имеет значение метадата в аргументе возвращать объект IIcon'а.

Как то так?
Код:
	@SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta)
    {
		if (side == 1) {
			if (meta == 0) {
				return this.top1;
			}
			if (meta == 1) {
				return this.top2;
			}
		}
		return this.bottom;
           
    }
          


в итоге получается вот такая шляпа, которая не желает работать
Код:
public class Asphalt_White_Line extends Block {
    public IIcon side;
    public IIcon bottom;
    public IIcon top1, top2;

 public Asphalt_White_Line(String name) {
 super(Material.rock);

        setBlockName(name);
 this.setBlockName("Asphalt_White_Line");
 this.setCreativeTab(CreativeTabs.tabBlock);
 this.setHardness(3F);
 this.setResistance(6F);
 this.setHarvestLevel("pickaxe", 2);
 this.setLightLevel(0F);/*
 this.setBlockTextureName("lwm3:Asphalt_White_Line");*/
 }
 @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta)
    {
 IIcon b = this.side;
 
 if (side == 1) {
 if (meta == 0) {
 b = this.top1;
 }
 if (meta == 1) {
 b = this.top2;
 }
 }
 return b;
           
    }
 
       
        @SideOnly(Side.CLIENT)
    public void registerBlockIcons(IIconRegister icon){
        this.side = icon.registerIcon("lwm3:Asphalt_White_Line_Dotted_0");
        this.bottom = icon.registerIcon("lwm3:A_0");
        this.top1 = icon.registerIcon("lwm3:Asphalt_White_Line_Single_90_1");
        this.top2 = icon.registerIcon("lwm3:Asphalt_White_Line_Single_1");
    }
 
    public void onBlockPlacedBy(World w, int x, int y, int z, EntityLivingBase ent, ItemStack item)
    {
        int l = MathHelper.floor_double((double)(ent.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
       
        if (l == 0) //SOUTH
        {
            w.setBlockMetadataWithNotify(x, y, z, 2, 2);
        }
 
        if (l == 1) // WEST
        {
            w.setBlockMetadataWithNotify(x, y, z, 6, 2);
        }
 
        if (l == 2) // NORTH
        {
            w.setBlockMetadataWithNotify(x, y, z, 3, 2);
        }
 
        if (l == 3) // EAST
        {
            w.setBlockMetadataWithNotify(x, y, z, 4, 2);
        }
    }
 
}

Прошу помочь по возможностям!
Заранее очень благодарен!
 

Led

291
3
0
Решил проблему так, подглядев у наковальни
Код:
public class Asphalt_White_Line extends Block {
    public IIcon side;
    public IIcon top1;
    public IIcon top2;

 public Asphalt_White_Line(String name) {
 super(Material.rock);

        setBlockName(name);
 this.setBlockName("Asphalt_White_Line");
 this.setCreativeTab(CreativeTabs.tabBlock);
 this.setHardness(3F);
 this.setResistance(6F);
 this.setHarvestLevel("pickaxe", 2);
 this.setLightLevel(0F);/*
 this.setBlockTextureName("lwm3:Asphalt_White_Line");*/
 }
 @SideOnly(Side.CLIENT)
    public IIcon getIcon(int side, int meta)
    {
 IIcon b = null;
 
 if (side == 1) {
 if (meta == 0) {
 b = this.top1;
 }
 if (meta == 1) {
 b = this.top2;
 }
 if (meta == 2) {
 b = this.top1;
 }
 if (meta == 3) {
 b = this.top2;
 }
 }
 else {
 b = this.side;
 }
 return b;
           
    }
 
       
        @SideOnly(Side.CLIENT)
        public void registerBlockIcons(IIconRegister icon){
         this.side = icon.registerIcon("lwm3:Asphalt_White_Line_Dotted_0");
         this.top1 = icon.registerIcon("lwm3:Asphalt_White_Line_Single_90_1");
         this.top2 = icon.registerIcon("lwm3:Asphalt_White_Line_Single_1");
        }
        
        
        @Override
        public void onBlockPlacedBy(World World, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_)
        {
            int l = MathHelper.floor_double((double)(p_149689_5_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
            int i1 = World.getBlockMetadata(p_149689_2_, p_149689_3_, p_149689_4_) >> 2;
            ++l;
            l %= 4;

            if (l == 0)
            {
             World.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 2 | i1 << 2, 2);
            }

            if (l == 1)
            {
             World.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 3 | i1 << 2, 2);
            }

            if (l == 2)
            {
             World.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 0 | i1 << 2, 2);
            }

            if (l == 3)
            {
             World.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, 1 | i1 << 2, 2);
            }
        }
}
 
Сверху