У меня блок с моделью у которая размер в 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();
}
Помогите, пж