public Panel(){ //For GUI Initilisation.

		FileChooser = new JFileChooser();
		FileChooser.setAcceptAllFileFilterUsed(false);

		importBtn = new JButton("Import");
		importBtn.setToolTipText("Import an existing JSON File");
		add(importBtn);

		exportBtn = new JButton("Export");
		exportBtn.setToolTipText("Export your model to a JSON File.");
		add(exportBtn);

		previewBtn = new JButton("Raw Preview");
		previewBtn.setToolTipText("Shows a raw JSON file view of your current model, ready to export.");
		add(previewBtn);

		swapEditorBtn = new JButton("Swap Editor");
		swapEditorBtn.setToolTipText("Swap between Voxel Editing and UV Editing");
		add(swapEditorBtn);

		resetBtn = new JButton("Reset");
		resetBtn.setToolTipText("Resets all the Voxel and UV Data of the current Voxel.");
		add(resetBtn);

		swapVoxelBox = new JComboBox(listOptions);
		swapVoxelBox.setToolTipText("Selects the Voxel set to edit");
		add(swapVoxelBox);

		View3DBtn = new JButton("3D Preview");
		View3DBtn.setToolTipText("Open the 3D Viewer");
		add(View3DBtn);

		//Event Handling
		EventHandler h = new EventHandler();
		swapEditorBtn.addActionListener(h);
		resetBtn.addActionListener(h);
		previewBtn.addActionListener(h);
		exportBtn.addActionListener(h);
		importBtn.addActionListener(h);
		View3DBtn.addActionListener(h);

		swapVoxelBox.addItemListener(new ItemListener(){
			public void itemStateChanged(ItemEvent e){
				VoxEditing = Integer.parseInt(e.getItem().toString());
			}
		});

		addMouseListener(h);
		addMouseMotionListener(h);


		//Set up basic cube.

		XData.setBase(16, 0);
		YData.setBase(16, 0);
		ZData.setBase(16, 0);

		NorthData.setXBase(16, 0);
		SouthData.setXBase(16, 0);
		EastData.setXBase(16, 0);
		WestData.setXBase(16, 0);
		TopData.setXBase(16, 0);
		BottomData.setXBase(16, 0);
		NorthData.setYBase(16, 0);
		SouthData.setYBase(16, 0);
		EastData.setYBase(16, 0);
		WestData.setYBase(16, 0);
		TopData.setYBase(16, 0);
		BottomData.setYBase(16, 0);

		NorthData.setCulling(true, 0);
		SouthData.setCulling(true, 0);
		EastData.setCulling(true, 0);
		WestData.setCulling(true, 0);
		TopData.setCulling(true, 0);
		BottomData.setCulling(true, 0);

		//Textures
		Textures.setTextureAtIndex(new Texture("blocks/crafting_table_front", getClass().getResource("/res/crafting_table_front.png").getPath() ), 0);
		Textures.setFriendlyNameForIndex("TableFront", 0);
		Textures.setTextureAtIndex(new Texture("blocks/crafting_table_side", getClass().getResource("/res/crafting_table_side.png").getPath()), 1);
		Textures.setFriendlyNameForIndex("TableSide", 1);
		Textures.setTextureAtIndex(new Texture("blocks/crafting_table_top", getClass().getResource("/res/crafting_table_top.png").getPath()), 2);
		Textures.setFriendlyNameForIndex("TableTop", 2);
		Textures.setTextureAtIndex(new Texture("blocks/planks_oak", getClass().getResource("/res/planks_oak.png").getPath()), 3);
		Textures.setFriendlyNameForIndex("TableBottom", 3);

		//Basic cube finished setting up

		//Get settings
		Importer importer = new Importer();
		try {
			redValueTop = importer.getRedEditing();
			greenValueTop = importer.getGreenEditing();
			blueValueTop = importer.getBlueEditing();
			alphaValueTop = importer.getAlphaEditing();
			redValueBottom = importer.getRedBack();
			greenValueBottom = importer.getGreenBack();
			blueValueBottom = importer.getBlueBack();
			alphaValueBottom = importer.getAlphaBack();
			Framerate = importer.getFramerate();
		} catch (Exception e) {
			redValueTop = 0;
			greenValueTop = 255;
			blueValueTop = 0;
			alphaValueTop = 255;
			redValueBottom = 255;
			greenValueBottom = 255;
			blueValueBottom = 0;
			alphaValueBottom = 255;
			Framerate = "Unlimited";
			e.printStackTrace();
		}
	}