@SuppressWarnings("unchecked")
	public void initializeConfigValues()
	{
		Ore_Gin_Properties = new HashMap<Integer,OreGinProperties>();
		Cloaker_Properties = new HashMap<Integer,CloakerProperties>();
		
		//Load general config
		MachineFactoryPlugin.CITADEL_ENABLED = getConfig().getBoolean("general.citadel_enabled");
		MachineFactoryPlugin.OREGIN_ENABLED = getConfig().getBoolean("general.oregin_enabled");
		MachineFactoryPlugin.SMELTER_ENABLED = getConfig().getBoolean("general.smelter_enabled");
		MachineFactoryPlugin.CLOAKER_ENABLED = getConfig().getBoolean("general.cloaker_enabled");
		MachineFactoryPlugin.SAVE_CYCLE = getConfig().getInt("general.save_cycle");
		
		//Load general config values
		MachineFactoryPlugin.OREGIN_UPDATE_CYCLE = getConfig().getInt("oregin_general.update_cycle");
		MachineFactoryPlugin.CLOAKER_UPDATE_CYCLE = getConfig().getInt("cloaker_general.update_cycle");
		MachineFactoryPlugin.MAXIMUM_BLOCK_BREAKS_PER_CYCLE = getConfig().getInt("oregin_general.maximum_block_breaks_per_cycle");
		MachineFactoryPlugin.OREGIN_UPGRADE_WAND = Material.valueOf(getConfig().getString("oregin_general.oregin_upgrade_wand"));
		MachineFactoryPlugin.OREGIN_ACTIVATION_WAND = Material.valueOf(getConfig().getString("oregin_general.oregin_activation_wand"));
		MachineFactoryPlugin.OREGIN_REPAIR_WAND = Material.valueOf(getConfig().getString("oregin_general.oregin_repair_wand"));
		MachineFactoryPlugin.LIGHT_ON = Material.valueOf(getConfig().getString("oregin_general.oregin_light_on"));
		MachineFactoryPlugin.LIGHT_OFF = Material.valueOf(getConfig().getString("oregin_general.oregin_light_off"));
		MachineFactoryPlugin.MAX_OREGIN_TIERS = getConfig().getInt("oregin_general.max_tiers");
		MachineFactoryPlugin.MAX_CLOAKER_TIERS = getConfig().getInt("cloaker_general.max_tiers");
		MachineFactoryPlugin.REDSTONE_ACTIVATION_ENABLED = getConfig().getBoolean("oregin_general.redstone_activation_enabled");
		MachineFactoryPlugin.LAVA_MINING_ENABLED = getConfig().getBoolean("oregin_general.lava_mining_enabled");
		MachineFactoryPlugin.WATER_MINING_ENABLED = getConfig().getBoolean("oregin_general.water_mining_enabled");
		MachineFactoryPlugin.JUNK_DESTRUCTION_ENABLED = getConfig().getBoolean("oregin_general.junk_destruction_enabled");
		MachineFactoryPlugin.CLOAKER_ACTIVATED = Material.valueOf(getConfig().getString("cloaker_general.cloaker_activated"));
		MachineFactoryPlugin.CLOAKER_DEACTIVATED = Material.valueOf(getConfig().getString("cloaker_general.cloaker_deactivated"));
		MachineFactoryPlugin.CLOAKER_UPGRADE_WAND = Material.valueOf(getConfig().getString("cloaker_general.cloaker_upgrade_wand"));
		MachineFactoryPlugin.CLOAKER_ACTIVATION_WAND = Material.valueOf(getConfig().getString("cloaker_general.cloaker_activation_wand"));
		MachineFactoryPlugin.CLOAKER_CHUNK_RANGE = getServer().getViewDistance();
		
		//Load valuables
		List<String> valuablesMaterialStrings = (List<String>) getConfig().getList("oregin_general.valuables");
		VALUABLES = new ArrayList<Material>();
		for (String string : valuablesMaterialStrings)
		{
			if (Material.valueOf(string) != null)
			{
				VALUABLES.add(Material.valueOf(string));
			}			
		}
		
		//Load junk
		List<String> junkMaterialStrings = (List<String>) getConfig().getList("oregin_general.junk");
		JUNK = new ArrayList<Material>();
		for (String string : junkMaterialStrings)
		{
			if (Material.valueOf(string) != null)
			{
				JUNK.add(Material.valueOf(string));
			}			
		}
		
		//Load indestructible
		List<String> indestructibleMaterialStrings = (List<String>) getConfig().getList("oregin_general.indestructible");
		INDESTRUCTIBLE = new ArrayList<Material>();
		for (String string : indestructibleMaterialStrings)
		{
			if (Material.valueOf(string) != null)
			{
				INDESTRUCTIBLE.add(Material.valueOf(string));
			}			
		}
		

		//Load OreGin tier properties
		for (int i = 1; i <= MachineFactoryPlugin.MAX_OREGIN_TIERS; i++)
		{
			int max_mining_distance = getConfig().getInt(getOreGinPropertiesPathStart(i) + "max_mining_distance"); 
			int max_block_breaks= getConfig().getInt(getOreGinPropertiesPathStart(i) + "max_block_breaks"); 
			int mining_delay= getConfig().getInt(getOreGinPropertiesPathStart(i) + "mining_delay"); 
			boolean retrieve_valuables = getConfig().getBoolean(getOreGinPropertiesPathStart(i) + "retrieve_valuables");
			Material fuel_type = Material.valueOf(getConfig().getString(getOreGinPropertiesPathStart(i) + "fuel_type"));
			int fuel_amount= getConfig().getInt(getOreGinPropertiesPathStart(i) + "fuel_amount");
			Material upgrade_material = Material.valueOf(getConfig().getString(getOreGinPropertiesPathStart(i) + "upgrade_material")); 
			int upgrade_amount = getConfig().getInt(getOreGinPropertiesPathStart(i) + "upgrade_amount");
			Material repair_material = Material.valueOf(getConfig().getString(getOreGinPropertiesPathStart(i) + "repair_material")); 
			int repair_amount = getConfig().getInt(getOreGinPropertiesPathStart(i) + "repair_amount");
			int shaft_width = getConfig().getInt(getOreGinPropertiesPathStart(i) + "shaft_width");
			int shaft_height = getConfig().getInt(getOreGinPropertiesPathStart(i) + "shaft_height");
			
			Ore_Gin_Properties.put(i, new OreGinProperties(max_mining_distance, max_block_breaks,
									mining_delay, retrieve_valuables, fuel_amount, fuel_type, shaft_width, shaft_height,
									upgrade_material, upgrade_amount, repair_material, repair_amount));
		}
		
		//Load Cloaker tier properties
		for (int i = 1; i <= MachineFactoryPlugin.MAX_CLOAKER_TIERS; i++)
		{
			Material upgrade_type = Material.valueOf(getConfig().getString(getCloakerPropertiesPathStart(i) + "upgrade_type"));
			int upgrade_amount = getConfig().getInt(getCloakerPropertiesPathStart(i) + "upgrade_amount");
			int fuel_time_duration = getConfig().getInt(getCloakerPropertiesPathStart(i) + "fuel_time_duration");
			Material fuel_type = Material.valueOf(getConfig().getString(getCloakerPropertiesPathStart(i) + "fuel_type"));
			int fuel_amount = getConfig().getInt(getCloakerPropertiesPathStart(i) + "fuel_amount");
			int cloak_width = getConfig().getInt(getCloakerPropertiesPathStart(i) + "cloak_width");
			int cloak_height = getConfig().getInt(getCloakerPropertiesPathStart(i) + "cloak_height");
			int cloak_depth = getConfig().getInt(getCloakerPropertiesPathStart(i) + "cloak_depth");
			int visibility_range = getConfig().getInt(getCloakerPropertiesPathStart(i) + "visibility_range");
			
			Cloaker_Properties.put(i, new CloakerProperties(upgrade_type, upgrade_amount,
					fuel_time_duration, fuel_type, fuel_amount, cloak_width, cloak_height, 
					cloak_depth, visibility_range));
		}
		
		
		
		MachineFactoryPlugin.sendConsoleMessage("Config values successfully loaded!");
		saveConfig();
	}