Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package hostileworlds;
- import java.io.File;
- import java.lang.reflect.Field;
- import java.util.HashMap;
- import java.util.Iterator;
- import java.util.Map;
- import java.util.logging.Level;
- import net.minecraft.src.c_CoroAIUtil;
- import net.minecraftforge.common.Configuration;
- import cpw.mods.fml.common.FMLLog;
- import cpw.mods.fml.common.event.FMLPreInitializationEvent;
- public class ModConfig {
- public static HashMap<String, String> valsString = new HashMap<String, String>();
- public static HashMap<String, Integer> valsInteger = new HashMap<String, Integer>();
- public static HashMap<String, Boolean> valsBoolean = new HashMap<String, Boolean>();
- public Configuration preInitConfig;
- public static File saveFilePath;
- public ModConfig() {
- }
- /* Main Usage Methods Start */
- /* Main Init */
- public void init(FMLPreInitializationEvent event) {
- saveFilePath = event.getSuggestedConfigurationFile();
- initData();
- rewriteConfigFile();
- }
- /* Update Config Field Entirely */
- public void updateField(String name, Object obj) {
- inputField(name, obj);
- try { c_CoroAIUtil.setPrivateValue(ModConfigFields.class, this, name, obj); } catch (Exception ex) { ex.printStackTrace(); }
- //writeHashMapsToFile();
- rewriteConfigFile();
- }
- /* Main Usage Methods End */
- private void initData() {
- ModConfig.valsString.clear();
- ModConfig.valsInteger.clear();
- ModConfig.valsBoolean.clear();
- updateHashMaps();
- }
- private void updateHashMaps() {
- Field[] fields = ModConfigFields.class.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- String name = field.getName();
- processField(name);
- }
- }
- /*public void writeHashMapsToFile() {
- Iterator it = valsString.entrySet().iterator();
- while (it.hasNext()) {
- Map.Entry pairs = (Map.Entry)it.next();
- String name = (String)pairs.getKey();
- Object val = pairs.getValue();
- }
- }*/
- private void processField(String fieldName) {
- try {
- Object obj = getField(fieldName);
- if (obj instanceof String) {
- ModConfig.valsString.put(fieldName, (String)obj);
- } else if (obj instanceof Integer) {
- ModConfig.valsInteger.put(fieldName, (Integer)obj);
- } else if (obj instanceof Boolean) {
- ModConfig.valsBoolean.put(fieldName, (Boolean)obj);
- } else {
- //dbg("unhandled datatype, update initField");
- }
- } catch (Exception ex) { ex.printStackTrace(); }
- }
- private Object getField(String name) {
- try { return c_CoroAIUtil.getPrivateValue(ModConfigFields.class, this, name);
- } catch (Exception ex) { ex.printStackTrace(); }
- return null;
- }
- private void inputField(String fieldName, Object obj) {
- if (obj instanceof String) {
- ModConfig.valsString.put(fieldName, (String)obj);
- } else if (obj instanceof Integer) {
- ModConfig.valsInteger.put(fieldName, (Integer)obj);
- } else if (obj instanceof Boolean) {
- ModConfig.valsBoolean.put(fieldName, (Boolean)obj);
- } else {
- }
- }
- private void rewriteConfigFile() {
- if (saveFilePath.exists()) saveFilePath.delete();
- preInitConfig = new Configuration(saveFilePath);
- preInitConfig.load();
- Field[] fields = ModConfigFields.class.getDeclaredFields();
- for (int i = 0; i < fields.length; i++) {
- Field field = fields[i];
- String name = field.getName();
- addToConfig(name);
- }
- preInitConfig.save();
- }
- /* */
- private void addToConfig(String name) {
- Object obj = getField(name);
- if (obj instanceof String) {
- obj = preInitConfig.get(Configuration.CATEGORY_GENERAL, name, (String)obj).getString();
- } else if (obj instanceof Integer) {
- obj = preInitConfig.get(Configuration.CATEGORY_GENERAL, name, (Integer)obj).getInt((Integer)obj);
- } else if (obj instanceof Boolean) {
- obj = preInitConfig.get(Configuration.CATEGORY_GENERAL, name, (Boolean)obj).getBoolean((Boolean)obj);
- } else {
- //dbg("unhandled datatype, update initField");
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement