Не поворачивается текстура на блоке [1.6.4]

Собственно, разносторонняя текстура то есть, только вот лицевая сторона блока все время смотрит в одну сторону. Вот код.
Код:
public class BlockFurnaceRed extends Block {
    private Icon front, side, top, bottom;
    
    public BlockFurnaceRed(int par1)
    {
        super(par1, Material.rock);
        this.setCreativeTab(TabList.tabDecorativeBlocks);
    }
    
    public void registerIcons(IconRegister tex)
    {
        front = tex.registerIcon(MainInfo.MODID + ":blockFurnaceRed");
        bottom = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
        side = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
        top = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
    }
    
    @Override
    public Icon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.bottom : (meta == 2 && side == 2 ? this.front : (meta == 3 && side == 5 ? this.front : (meta == 0 && side == 3 ? this.front : (meta == 1 && side == 4 ? this.front : this.side)))));
    }
}
 
Посмотри как у печки сделано. Там всё более менее понятно.

А что касается условий для фронта, не проще ли так?
Код:
(meta == 2 && side == 2)||(meta == 3 && side == 5)||(meta == 0 && side == 3)||(meta == 1 && side == 4) ? this.front
[merge_posts_bbcode]Добавлено: 27.08.2015 10:11:24[/merge_posts_bbcode]

Видимо, всё дело в методах onBlockAdded и func_149930_e (присмотрись к ним :))
Названия брал с 1.7.10, поэтому могу и ошибаться.
 
Рылся в классе обычной печки, вот так теперь выглядит мой класс. Проблема новая - исчезла лицевая текстура. Можете подсказать, где ошибка?
Код:
public class BlockFurnaceRed extends Block {
    public BlockFurnaceRed(int par1)
    {
        super(par1, Material.rock);
        this.setCreativeTab(TabList.tabDecorativeBlocks);
    }
    
    @SideOnly(Side.CLIENT)
    private Icon furnaceIconTop;
    @SideOnly(Side.CLIENT)
    private Icon furnaceIconFront;
    
    public void onBlockAdded(World par1World, int par2, int par3, int par4)
    {
        super.onBlockAdded(par1World, par2, par3, par4);
        this.setDefaultDirection(par1World, par2, par3, par4);
    }
    
    private void setDefaultDirection(World par1World, int par2, int par3, int par4)
    {
        if (!par1World.isRemote)
        {
            int l = par1World.getBlockId(par2, par3, par4 - 1);
            int i1 = par1World.getBlockId(par2, par3, par4 + 1);
            int j1 = par1World.getBlockId(par2 - 1, par3, par4);
            int k1 = par1World.getBlockId(par2 + 1, par3, par4);
            byte b0 = 3;

            if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
            {
                b0 = 3;
            }

            if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
            {
                b0 = 2;
            }

            if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
            {
                b0 = 5;
            }

            if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
            {
                b0 = 4;
            }

            par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2);
        }
    }
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.blockIcon = par1IconRegister.registerIcon(MainInfo.MODID + ":blockBrickRed");
        this.furnaceIconFront = par1IconRegister.registerIcon(MainInfo.MODID + ":blockFurnaceRed");
        this.furnaceIconTop = par1IconRegister.registerIcon(MainInfo.MODID + ":blockBrickRed");
    }
    
    public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
    {
        int l = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

        if (l == 0)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2);
        }

        if (l == 1)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2);
        }

        if (l == 2)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2);
        }

        if (l == 3)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2);
        }

        if (par6ItemStack.hasDisplayName())
        {
            ((TileEntityFurnace)par1World.getBlockTileEntity(par2, par3, par4)).setGuiDisplayName(par6ItemStack.getDisplayName());
        }
    }
}
 
Мда, невнимательный я) Теперь все лицевая текстура есть и правильно ставиться, но в инвентаре лицевой текстуры не видно. Снова кидаю код)
Код:
public class BlockFurnaceRed extends Block {
    public BlockFurnaceRed(int par1)
    {
        super(par1, Material.rock);
        this.setCreativeTab(TabList.tabDecorativeBlocks);
    }
    
    @SideOnly(Side.CLIENT)
    private Icon furnaceIconTop;
    @SideOnly(Side.CLIENT)
    private Icon furnaceIconFront;
    
    public void onBlockAdded(World par1World, int par2, int par3, int par4)
    {
        super.onBlockAdded(par1World, par2, par3, par4);
        this.setDefaultDirection(par1World, par2, par3, par4);
    }
    
    private void setDefaultDirection(World par1World, int par2, int par3, int par4)
    {
        if (!par1World.isRemote)
        {
            int l = par1World.getBlockId(par2, par3, par4 - 1);
            int i1 = par1World.getBlockId(par2, par3, par4 + 1);
            int j1 = par1World.getBlockId(par2 - 1, par3, par4);
            int k1 = par1World.getBlockId(par2 + 1, par3, par4);
            byte b0 = 3;

            if (Block.opaqueCubeLookup[l] && !Block.opaqueCubeLookup[i1])
            {
                b0 = 3;
            }

            if (Block.opaqueCubeLookup[i1] && !Block.opaqueCubeLookup[l])
            {
                b0 = 2;
            }

            if (Block.opaqueCubeLookup[j1] && !Block.opaqueCubeLookup[k1])
            {
                b0 = 5;
            }

            if (Block.opaqueCubeLookup[k1] && !Block.opaqueCubeLookup[j1])
            {
                b0 = 4;
            }

            par1World.setBlockMetadataWithNotify(par2, par3, par4, b0, 2);
        }
    }
    
    @SideOnly(Side.CLIENT)
    public Icon getIcon(int par1, int par2)
    {
        return par1 == 1 ? this.furnaceIconTop : (par1 == 0 ? this.furnaceIconTop : (par1 != par2 ? this.blockIcon : this.furnaceIconFront));
    }
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister par1IconRegister)
    {
        this.blockIcon = par1IconRegister.registerIcon(MainInfo.MODID + ":blockBrickRed");
        this.furnaceIconFront = par1IconRegister.registerIcon(MainInfo.MODID + ":blockFurnaceRed");
        this.furnaceIconTop = par1IconRegister.registerIcon(MainInfo.MODID + ":blockBrickRed");
    }
    
    public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
    {
        int l = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;

        if (l == 0)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 2, 2);
        }

        if (l == 1)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 5, 2);
        }

        if (l == 2)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 3, 2);
        }

        if (l == 3)
        {
            par1World.setBlockMetadataWithNotify(par2, par3, par4, 4, 2);
        }

        if (par6ItemStack.hasDisplayName())
        {
            ((TileEntityFurnace)par1World.getBlockTileEntity(par2, par3, par4)).setGuiDisplayName(par6ItemStack.getDisplayName());
        }
    }
}
 
Печка обычная же нормально в инвентаре выглядит, в чем тогда здесь проблема, если код тот же?
 
Короче, порылся на форуме и в коде и сделал вот так. Иконка/текстура/повороты есть, можете закрывать тему.
Код:
public class BlockFurnaceRed extends Block {
    public BlockFurnaceRed(int par1)
    {
        super(par1, Material.rock);
        this.setCreativeTab(TabList.tabDecorativeBlocks);
    }
    
    private Icon front, side, top, bottom;
    
    public void registerIcons(IconRegister tex)
    {
        front = tex.registerIcon(MainInfo.MODID + ":blockFurnaceRed");
        bottom = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
        side = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
        top = tex.registerIcon(MainInfo.MODID + ":blockBrickRed");
    }
    
    @Override
    public Icon getIcon(int side, int meta)
    {
        return side == 1 ? this.top : (side == 0 ? this.bottom : (meta == 2 && side == 2 ? this.front : (meta == 3 && side == 5 ? this.front : (meta == 0 && side == 3 ? this.front : (meta == 1 && side == 4 ? this.front : this.side)))));
    }
    
    @Override
    public void onBlockPlacedBy(World par1World, int par2int, int par3int, int par4int, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack)
    {
        int i = MathHelper.floor_double((double)(par5EntityLivingBase.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
        par1World.setBlockMetadataWithNotify(par2int, par3int, par4int, i, 2);
    }
}
 
Назад
Сверху