public WorldInitPanel(Player gamemaster, Vector<World> worlds) {
		this.worlds = worlds;
		
		// - initialize miglayout manager
		this.setBorder(BorderFactory.createEmptyBorder());
		this.setLayout(new MigLayout("width 400!", "[]10[]10[]"));
		this.setOpaque(false);
		
		// - introduction
		JLabel introduction = new JLabel();
		introduction.setText(WORLD_INIT_PANEL_INTRODUCTION.replace("{gm}", gamemaster.getFirstName()));
		introduction.setFont(FONT);
		introduction.setForeground(FONT_COLOR_DEFAULT);
		this.add(introduction, "span, width 300!");
		
		// - world selector
		JLabel selectorLabel = new JLabel();
		selectorLabel.setText(WORLD_INIT_PANEL_SELECTION);
		selectorLabel.setFont(FONT);
		selectorLabel.setForeground(FONT_COLOR_DEFAULT);
		this.add(selectorLabel, "gaptop 30");

		this.worldComboBox = new JComboBox();
		this.worldComboBox.setFont(FONT);
		for (World world : this.worlds) {
			this.worldComboBox.addItem(world.getName());
		}
		this.add(this.worldComboBox);
		
		this.worldImportButton = new MButton(WORLD_IMPORT_BUTTON_TEXT);
		this.worldImportButton.setPreferredSize(new Dimension(25,25));
		this.worldImportButton.addActionListener(new ActionListener() {
			@Override
			public void actionPerformed(ActionEvent e) {
				JFileChooser fc = new JFileChooser();
				fc.showOpenDialog(WorldInitPanel.this);
				if (fc.getSelectedFile() != null) {
					File file = fc.getSelectedFile();
					try {
						MinervaGUI.getEngine().importWorld(file);
						
						WorldInitPanel.this.worlds = MinervaGUI.getEngine().getWorldList(true);
						WorldInitPanel.this.worldComboBox.removeAllItems();
						for (World world : WorldInitPanel.this.worlds) {
							WorldInitPanel.this.worldComboBox.addItem(world.getName());
						}
						
						
						MMessageBox.show(WORLD_IMPORT_SUCCESSFUL);
					} catch (WorldFileNotFoundException e1) {
						MMessageBox.error(e1);
					} catch (WorldNotStorable e1) {
						MMessageBox.error(e1);
					} catch (WorldFileExtensionException e1) {
						MMessageBox.error(e1);
					} catch (WorldFileParseException e1) {
						MMessageBox.error(e1);
					} catch (DataAccessException e1) {
						MMessageBox.error(e1);
					}
				}
			}
		});
		this.add(this.worldImportButton, "wrap");
		
		
		// - world info
		JPanel worldInfo = new JPanel();
		worldInfo.setLayout(new MigLayout("fillx, insets 15", "[]10[][]"));

		//this.currentWorldThumbnail.setText("thumb");
		//worldInfo.add(this.currentWorldThumbnail, "span 1 5, gapright 10");

		this.currentWorldName.setFont(new Font(FONT.getFamily(), Font.BOLD, FONT.getSize()));
		this.currentWorldName.setForeground(Color.WHITE);
		worldInfo.add(this.currentWorldName, "width 200!, wrap");

		this.currentWorldDescription.setFont(FONT);
		worldInfo.add(this.currentWorldDescription, "wrap 15");

		this.currentWorldVersion.setFont(FONT);
		worldInfo.add(this.currentWorldVersion, "wrap 20");

		this.currentWorldAuthor.setFont(FONT);
		worldInfo.add(this.currentWorldAuthor, "wrap 10");

		worldInfo.setBackground(new Color(14, 15, 17));
		worldInfo.setBorder(BorderFactory.createLineBorder(new Color(35, 36, 40)));
		this.add(worldInfo, "gaptop 30, width 300!, span 3");

		this.addListeners();

		this.fillWorldInfo();
		MinervaGUI.getInstance().pack();
	}