private void renderItem(TileAltar tile, double x, double y, double z, ItemStack stack) {
    if (stack != null && stack.getItem() != null) {
      GlStateManager.pushMatrix();
      GlStateManager.disableLighting();
      GlStateManager.disableCull();
      float scale = 1f;
      float yTranslate = getItemTranslateFactor(stack);
      float angle = TickHandlerClient.ticksInGame % 720f;

      EntityItem ghostEntityItem = new EntityItem(tile.getWorld());
      ghostEntityItem.hoverStart = 0.0f;
      ghostEntityItem.setEntityItemStack(stack);

      GlStateManager.translate(x + 0.5f, y + 0.65f + yTranslate, z + 0.5f);
      GlStateManager.rotate(angle, 0, 1f, 0);
      GlStateManager.scale(scale, scale, scale);
      GlStateManager.translate(0f, 0.2f, 0f);

      renderEntityItem.doRender(ghostEntityItem, 0, 0, 0, 0, 0);

      GlStateManager.enableLighting();
      GlStateManager.enableCull();
      GlStateManager.popMatrix();
    }
  }
  @Override
  public void renderTileEntityAt(
      TileAltar tile, double x, double y, double z, float partialTicks, int destroyStage) {
    if (tile == null) return;
    GlStateManager.pushMatrix();

    GlStateManager.enableBlend();
    GlStateManager.blendFunc(0x302, 0x303);

    GlStateManager.translate(x + 0.5f, y + 1.65f, z + 0.5f);
    GlStateManager.rotate(180f, 1f, 0f, 0f);
    GlStateManager.scale(1.1, 1.1, 1.1);

    GL11.glColor4f(1f, 1f, 1f, 1f);

    RenderUtils.bindTexture(tile.isMaster() ? ALTAR_MASTER : ALTAR_BASE);
    model.renderBasic(RenderUtils.magicNum);

    GL11.glColor4f(1f, 1f, 1f, 1f);

    GlStateManager.disableBlend();
    GlStateManager.popMatrix();
    renderItem(tile, x, y, z, tile.getStackInSlot(0));
  }