aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/bloodasp/galacticgreg/auxiliary/ConfigManager.java
blob: 9f337f945e6c9cd37f58de68f8c74d4bb5e03744 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
package bloodasp.galacticgreg.auxiliary;

import java.io.File;

import bloodasp.galacticgreg.GalacticGreg;
import net.minecraftforge.common.config.Configuration;

/**
 * config class to read/setup config files and folders
 * @author Namikon
 */
public abstract class ConfigManager {
	private File _mainconfigDir = null;
	private File _blocksconfigDir = null;
	private String _mModCollection = "";
	private String _mModID = "";
	
	protected Configuration _mainConfig = null;

	protected File _mConfigBaseDirectory;
	 public boolean DoDebugMessages = false;

	 protected abstract void PreInit();
	 protected abstract void Init();
	 protected abstract void PostInit();
	 
	 
	 public ConfigManager(File pConfigBaseDirectory, String pModCollectionDirectory, String pModID)
	 {
		 _mModCollection = pModCollectionDirectory;
		 _mModID = pModID;
		 _mConfigBaseDirectory = pConfigBaseDirectory;
	 }
	 
	 /**
	  * Load/init the config file
	 * @return true/false if the load/init was successful or not
	 */
	public boolean LoadConfig()
	 {
		 try
		 {
			 InitConfigDirs();
			 if (_mainConfig == null)
				 return false;
			 
			 PreInit();
			 _mainConfig.load();
			 Init();
			 _mainConfig.save();
			 PostInit();
			 
			 return true;
		 }
		 catch (Exception e)
		 {
			 GalacticGreg.Logger.error("Unable to init config file");
			 e.printStackTrace();
			 return false;
		 }
	 }
	 
	 /**
	 * Search for required config-directory / file and create them if they can't be found 
	 */
	private void InitConfigDirs()
	 {
		GalacticGreg.Logger.debug("Checking/creating config folders");
		 
		 _mainconfigDir = new File(String.format("%s%s%s", _mConfigBaseDirectory, File.separator, _mModCollection));
	 
	    if(!_mainconfigDir.exists()) {
	    	GalacticGreg.Logger.info("Config folder not found. Creating...");
	    	_mainconfigDir.mkdir();
	    }
	    
	    File tRealConfigFile = new File(String.format("%s%s%s%s", _mainconfigDir, File.separator, _mModID, ".cfg"));
    
	    _mainConfig = new Configuration(tRealConfigFile);
	 }
}