private void formWindowOpened(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowOpened
        
        //Set basic frame properties
        this.getContentPane().setBackground(new Color(152, 174, 196));
        this.setLocationRelativeTo(null);
        
        //Load window icons
        Image moddleIcon = Resources.getImageResource("icon_mb.png").getImage();
        this.setIconImage(moddleIcon);
        progressDialog.setIconImage(moddleIcon);
        loginDialog.setIconImage(moddleIcon);
        popupDialog.setIconImage(moddleIcon);
        instanceDialog.setIconImage(moddleIcon);
        consoleDialog.setIconImage(moddleIcon);
        updateDialog.setIconImage(moddleIcon);
        
        //Load dialog images
        popupDialogImageLabel.setIcon(Resources.getImageResource("alert.png"));
        updateDialogImageLabel.setIcon(Resources.getImageResource("alert_small.png"));
        
        //Load news images
        NewsBannerLabel.setText("");
        NewsBannerLabel.setIcon(Resources.getImageResource("news.png"));
        FollowUsLabel.setText("");
        FollowUsLabel.setIcon(Resources.getImageResource("followus.png"));
        
        //Set up custom JList rendering
        ModpackList.setCellRenderer(new DefaultListCellRenderer() {
            @Override
            public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
                JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
                if (new File("./packs/" + value.toString() + "/pack.png").isFile()) {
                    label.setIcon(new ImageIcon("./packs/" + value.toString() + "/pack.png"));
                } else {
                    label.setIcon(Resources.getImageResource("noicon.png"));
                }
                return label;
            }
        });
        
        //Assign global dialog objects
        GlobalDialogs.popupDialog = popupDialog;
        GlobalDialogs.popupDialogCaptionLabel = popupDialogCaptionLabel;
        GlobalDialogs.progressDialog = progressDialog;
        GlobalDialogs.progressDialogStatusBar = progressDialogStatusBar;
        GlobalDialogs.progressDialogStatusLabel = progressDialogStatusLabel;
        GlobalDialogs.consoleDialog = consoleDialog;
        GlobalDialogs.consoleDialogLogPane = consoleDialogLogPane;
        GlobalDialogs.updateDialog = updateDialog;
        GlobalDialogs.updateDialogDescriptionPane = updateDialogDescriptionPane;
        GlobalDialogs.updateDialogCaptionLabel = updateDialogCaptionLabel;
        
        //Redirect stdout and begin logging
        redirectOutputStreams();
        Logger.begin();
        
        //Load data directory
        Logger.info("MainForm.formWindowOpened", "Loading self-extracting data...");
        loadRequiredFilesIfNecessary();
        
        //Load modpacks
        Logger.info("MainForm.formWindowOpened", "Loading modpacks...");
        loadModpackList();

        //Load auth from file
        Logger.info("MainForm.formWindowOpened", "Restoring last login...");
        Auth.loadFromFile();
        if (Auth.isLoggedIn) {
            if (Auth.performLogin(null, null)) {
                CurrentUserLabel.setText(Auth.Username);
                LoginButton.setText("Log Out");
                enablePlayControls();
            } else {
                CurrentUserLabel.setText("-- Not Logged In --");
                LoginButton.setText("Log In");
                disablePlayControls();
            }
        } else {
            CurrentUserLabel.setText("-- Not Logged In --");
            LoginButton.setText("Log In");
            disablePlayControls();
        }
        LoginButton.setEnabled(true);

        //Load GUI
        if (Auth.isLoggedIn) {
            loadUser(Auth.AccountName);
            loadUserPrefs(Auth.AccountName);
        } else {
            loadUser(null);
            loadUserPrefs(null);
        }

        //Set console visibility
        consoleDialog.setVisible(ShowConsoleCheckbox.isSelected());
        toFront();

        //Download and display news
        Logger.info("MainForm.formWindowOpened", "Loading news...");
        fetchNews();
        loadPaneContentFromDirectory("./data/news/news_content", newsPane);
        if (ShowNewsCheckbox.isSelected()) {
            MainTabPane.setSelectedIndex(1);
        }

        //Check for updates
        SimpleSwingWorker worker = new SimpleSwingWorker() {
            @Override
            protected void task() {
                Updater.checkForUpdates(false);
            }
        };
        worker.execute();
        
        Logger.info("MainForm.formWindowOpened", "Finished loading.");
    }//GEN-LAST:event_formWindowOpened