[1.7.10] Поворот модели

372
0
У меня блок с моделью у которая размер в 2 блока (y+1) и толщина в 2 пикселя (0.125F), нужно было сделать поворот модели, да так еще что бы главный блок с неординарным размером setBlockBounds(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F); тоже поворачивался. Получилось фигня полная, все поворачивается без проблем, но только первый раз , если поставить второй раз блок в другую (не противоположную) сторону все гл. блоки берут туже сторону света. Как решить без понятия.

Вот что в гл. блоке
Код:
    public boolean case0activated = false;
    public boolean case1activated = false;
    public boolean case2activated = false;
    public boolean case3activated = false;

public int i = -1;

    @Override
    public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack)
    {
        final int i2 = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
        world.setBlockMetadataWithNotify(x, y, z, i, 2);
        i = i2;
        
        TileEntityWindow1 tile = (TileEntityWindow1) world.getTileEntity(x, y, z);
        tile.direction = i2 * 90;
        
            switch(i2) 
        {
        case 0:
            world.setBlock(x, y+1, z, ObjectsList.window1part);
            this.setBlockBounds(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
            break;
        case 1:
            world.setBlock(x, y+1, z, ObjectsList.window1part2);
            this.setBlockBounds(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F);
            break;
        case 2:
            world.setBlock(x, y+1, z, ObjectsList.window1part);
            this.setBlockBounds(0.0F, 0.0F, 0.4375F, 1.0F, 1.0F, 0.5625F);
            break;
        case 3:
            world.setBlock(x, y+1, z, ObjectsList.window1part2);
            this.setBlockBounds(0.4375F, 0.0F, 0.0F, 0.5625F, 1.0F, 1.0F);
            break;
        }
    }

Вот Тайл
Код:
    public float direction; 
    
    public void readFromNBT(NBTTagCompound nbt)
    {
        super.readFromNBT(nbt);
        direction = nbt.getFloat("direction");
    }

    public void writeToNBT(NBTTagCompound nbt)
    {
        super.writeToNBT(nbt);
        nbt.setFloat("direction", direction);
    }
    
    public Packet getDescriptionPacket() {
        NBTTagCompound nbt = new NBTTagCompound();
        writeToNBT(nbt);
        return new S35PacketUpdateTileEntity(xCoord, yCoord, zCoord, 0, nbt);
    }

    public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity packet) {
        readFromNBT(packet.func_148857_g());
    }

Вот рендер:
Код:
    @Override
    public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f)
    {     
        GL11.glPushMatrix();
            GL11.glTranslatef((float)x + 0.5f, (float)y + 1.5f, (float)z + 0.5f);
        
            GL11.glRotatef(180f, 0f, 0f, 1f);
            
            TileEntityWindow1 tile = (TileEntityWindow1) te;
            GL11.glRotatef(tile.direction, 0.0f, 1.0f, 0.0f);
            
            this.bindTexture(texture);
        
            GL11.glPushMatrix();
                model.render(0.0625f);
            GL11.glPopMatrix();
            
        GL11.glPopMatrix();
    }

Помогите, пж
 
Ты хочешь поворачивать коллизию вместе с шейпом?Тоже интересно как
 
XuPuPG написал(а):
Ты хочешь поворачивать коллизию вместе с шейпом?Тоже интересно как

Можно нормальным языком?)) 

А как можно по другому сделать толщину для этого блока?
[merge_posts_bbcode]Добавлено: 27.09.2015 16:10:31[/merge_posts_bbcode]

Как можно поворачивать этот Bounds для каждого блока отдельно?

[merge_posts_bbcode]Добавлено: 27.09.2015 16:15:10[/merge_posts_bbcode]

Я ТУПОЙ((((
 
Код:
    public void setBlockBoundsBasedOnState(IBlockAccess var1, int int2, int int3, int int4) {
        int angel = getDirection(var1.getBlockMetadata(int2, int3, int4));

        if (angel != 2 && angel != 0)
        {
            this.setBlockBounds(0.4375F, 0.0F, 0.0F, 0.5625F, 2.0F, 1.0F);
            
        }
        else
        {
            this.setBlockBounds(0.0F, 0.0F, 0.4375F, 1.0F, 2.0F, 0.5625F);
        }
    }
 
Назад
Сверху