-
Posts
1061 -
Joined
-
Last visited
Everything posted by NovaViper
-
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Then how am I suppose to change the sorting of the properties? -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Question, now that I have the method overriden, how do I arrange it to where it calls the methods like I want them called? -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Oh? So do I not override getCategory? And does this mean I do not need the ModConfigCategory class? Also, I try to override setCategoryPropertyOrder, there's a boolean that is private. How do I get it? -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I started on this but now I'm getting an error from all of the reflection methods. They say to put a try and catch method in package common.zeroquest.core.configuration; import java.io.File; import java.lang.reflect.Field; import java.util.Map; import java.util.TreeMap; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { Class c = Class.forName(Configuration.class.toString()); Field field1 = c.getDeclaredField("categories"); Field field2 = c.getDeclaredField("changed"); Object a = field1.get(this); Object b = field2.get(this); field1.setAccessible(true); field2.setAccessible(true); ModConfigCategory ret = (ModConfigCategory) field1.get(this); if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = (ModConfigCategory)field1.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); field1.set(parent.getQualifiedName(), parent); field2.setBoolean(b, true); } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = (ModConfigCategory) field1.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); field1.set(name, child); field2.setBoolean(b, true); } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); field1.set(category, ret); field2.setBoolean(b, true); } } return ret; } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I think that was the problem and question, eclipse is now saying about the field the category String in the method mismatching (cannot convert from Object to ModConfigCategory). How should I have the fields as to solve this? Here is my code package common.zeroquest.core.configuration; import java.io.File; import java.lang.reflect.Field; import java.util.Map; import java.util.TreeMap; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { Class c = Class.forName(Configuration.class.toString()); Field field1 = c.getDeclaredField("categories"); Field field2 = c.getDeclaredField("changed"); field1.setAccessible(true); field2.setAccessible(true); ModConfigCategory ret = field1.get(category); <<Error here if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = categories.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); categories.put(parent.getQualifiedName(), parent); changed = true; } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = categories.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); categories.put(name, child); changed = true; } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); categories.put(category, ret); changed = true; } } return ret; } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
*Facepalm* Thanks for that tip.. I didn't realize that before. -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
And my code package common.zeroquest.core.configuration; import java.io.File; import java.lang.reflect.Field; import java.util.Map; import java.util.TreeMap; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { Class c = Class.forName("net.minecraftforge.common.config.Configuration"); <<<Error : ClassNotFoundException Field fieldString = c.getDeclaredField("categories"); <<<Error: NoSuchFieldException Field fieldBoolean = c.getDeclaredField("changed"); <<<<Error:NoSuchFieldException public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { fieldString.setAccessible(true); fieldBoolean.setAccessible(true); ModConfigCategory ret = categories.get(category); if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = categories.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); categories.put(parent.getQualifiedName(), parent); changed = true; } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = categories.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); categories.put(name, child); changed = true; } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); categories.put(category, ret); changed = true; } } return ret; } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Description Resource Path Location Type Unhandled exception type NoSuchFieldException ModConfiguration.java /Minecraft/src/main/java/common/zeroquest/core/configuration line 13 Java Problem Unhandled exception type ClassNotFoundException ModConfiguration.java /Minecraft/src/main/java/common/zeroquest/core/configuration line 12 Java Problem I can't grab a description about it -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I thought it was needed, whenever I put the methods in the class, I get errors from eclipse saying ClassNotFoundExpection -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I'm still confused. How am I suppose to call if I'm using a separate class with the reflection methods inside? -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I'm a little confued at step 4, do I get the Configuration class name? I'm using the Reflection class I made like this ModConfiguration package common.zeroquest.core.configuration; import java.io.File; import java.lang.reflect.Field; import java.util.Map; import java.util.TreeMap; import common.zeroquest.reflection.ReflectionConfig; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { ModConfigCategory ret = ReflectionConfig.main(Configuration.class.toString()).get(category); if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = categories.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); categories.put(parent.getQualifiedName(), parent); changed = true; } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = categories.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); categories.put(name, child); changed = true; } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); categories.put(category, ret); changed = true; } } return ret; } } Reflection package common.zeroquest.reflection; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectionConfig { public static void main(String[] args) { try{ Class c = Class.forName("net.minecraftforge.common.config.Configuration"); //Method methodList[] = c.getDeclaredMethods(); Field field = c.getDeclaredField("categories"); field.setAccessible(true); field.get(args); System.out.println(field); }catch (Exception e){ System.out.println("ERROR:" + e.getMessage()); } } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
And this also package common.zeroquest.reflection; import java.lang.reflect.Field; import java.lang.reflect.Method; public class ReflectionAll { public static void main(String[] args) { try{ Class c = Class.forName("net.minecraftforge.common.config.Configuration"); //Method methodList[] = c.getDeclaredMethods(); Field[] fields = c.getDeclaredFields(); System.out.println(fields); << Error here }catch (Exception e){ System.out.println("ERROR:" + e.getMessage()); } } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Class c = Class.forName("net.minecraftforge.common.config.Configuration"); Field privateStringField = PrivateObject.class.getDeclaredField("privateString"); public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { ModConfigCategory ret = c.getMethods()..get(category); -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I'm not sure how to use a reflection, but I'm getting an error from eclipse from attempting to use it null org.eclipse.recommenders.calls.rcp Error Sun Jun 07 10:53:25 CDT 2015 Proposal matching failed for [METHOD_REF]{completion:clone(), declSign:[Ljava.lang.annotation.Annotation;, sign:()[Ljava.lang.annotation.Annotation;, declKey:, key:, name:clone, replace:[492,492], token:[492,492], relevance:35}. org.eclipse.recommenders.utils.Logs$LogTraceException at org.eclipse.recommenders.utils.Logs$LogTraceException.newTrace(Logs.java:377) at org.eclipse.recommenders.utils.Logs.log(Logs.java:130) at org.eclipse.recommenders.internal.calls.rcp.CallCompletionSessionProcessor.process(CallCompletionSessionProcessor.java:203) at org.eclipse.recommenders.completion.rcp.processable.IntelligentCompletionProposalComputer.fireProcessProposal(IntelligentCompletionProposalComputer.java:243) at org.eclipse.recommenders.completion.rcp.processable.IntelligentCompletionProposalComputer.computeCompletionProposals(IntelligentCompletionProposalComputer.java:143) at org.eclipse.jdt.internal.ui.text.java.CompletionProposalComputerDescriptor.computeCompletionProposals(CompletionProposalComputerDescriptor.java:333) at org.eclipse.jdt.internal.ui.text.java.CompletionProposalCategory.computeCompletionProposals(CompletionProposalCategory.java:337) at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.collectProposals(ContentAssistProcessor.java:325) at org.eclipse.jdt.internal.ui.text.java.ContentAssistProcessor.computeCompletionProposals(ContentAssistProcessor.java:282) at org.eclipse.jface.text.contentassist.ContentAssistant$5.run(ContentAssistant.java:1904) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.jface.text.contentassist.ContentAssistant.computeCompletionProposals(ContentAssistant.java:1902) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.computeProposals(CompletionProposalPopup.java:573) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.access$16(CompletionProposalPopup.java:570) at org.eclipse.jface.text.contentassist.CompletionProposalPopup$2.run(CompletionProposalPopup.java:505) at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70) at org.eclipse.jface.text.contentassist.CompletionProposalPopup.showProposals(CompletionProposalPopup.java:499) at org.eclipse.jface.text.contentassist.ContentAssistant$2.run(ContentAssistant.java:384) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:136) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4147) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3764) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135) at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134) at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:648) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603) at org.eclipse.equinox.launcher.Main.run(Main.java:1465) -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Oops, forgot to post my code ModConfiguration package common.zeroquest.core.configuration; import java.io.File; import java.util.Map; import java.util.TreeMap; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { private Map<String, ModConfigCategory> categories = new TreeMap<String, ModConfigCategory>(); private boolean changed = false; public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { ModConfigCategory ret = categories.get(category); if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = categories.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); categories.put(parent.getQualifiedName(), parent); changed = true; } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = categories.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); categories.put(name, child); changed = true; } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); categories.put(category, ret); changed = true; } } return ret; } } ModConfigCategory package common.zeroquest.core.configuration; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import com.google.common.collect.ImmutableList; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Property; public class ModConfigCategory extends ConfigCategory { public ModConfigCategory(String name) { super(name); } public ModConfigCategory(String name, ModConfigCategory parent) { super(name, parent); } @Override public List<Property> getOrderedValues() { return ImmutableList.copyOf(getValues().values()); } } ConfigHandler package common.zeroquest.core.handlers; import java.io.File; import java.util.ArrayList; import java.util.List; import net.minecraftforge.common.config.Property; import org.apache.logging.log4j.Logger; import common.zeroquest.ZeroQuest; import common.zeroquest.core.configuration.ModConfiguration; import common.zeroquest.lib.Constants; import common.zeroquest.lib.IDs; public class ConfigHandler { // Add more Categories for GuiFactory\\ public static ModConfiguration config; public static final String CATEGORY_LOAD = "load"; public static final String CATEGORY_FUNCTION = "function"; public static final String CATEGORY_MISC = "miscellaneous"; public static final String CATEGORY_DIMENSION = "dimensions"; public static final String CATEGORY_BIOME = "biomes"; public static void init(File file) { config = new ModConfiguration(file); loadConfig(); } public static void loadConfig() { config.addCustomCategoryComment(CATEGORY_FUNCTION, "Here you can manage all mod and entity functions"); config.addCustomCategoryComment(CATEGORY_LOAD, "Here you can manage what the mod loads into the game"); config.addCustomCategoryComment(CATEGORY_MISC, "Here you can manage the miscellaneous functions of the mod"); config.addCustomCategoryComment(CATEGORY_DIMENSION, "Here you can manage the mod's dimension factors"); config.addCustomCategoryComment(CATEGORY_BIOME, "Here you can manage the mod's biome factors"); //@formatter:off /*=================================Load Configurations==========================================*/ //@formatter:on Constants.DEF_DARKLOAD = config.get(CATEGORY_LOAD, "DarkElements", Constants.DEF_DARKLOAD).setLanguageKey(Constants.guiKey + "DarkElements").setRequiresMcRestart(true).getBoolean(Constants.DEF_DARKLOAD); Constants.DEF_STARTING_ITEMS = config.get(CATEGORY_LOAD, "StartingItems", Constants.DEF_STARTING_ITEMS).setLanguageKey(Constants.guiKey + "StartingItems").getBoolean(Constants.DEF_STARTING_ITEMS); Constants.DEF_MODCHECKER = config.get(CATEGORY_LOAD, "ModCheck", Constants.DEF_MODCHECKER).setLanguageKey(Constants.guiKey + "ModCheck").getBoolean(Constants.DEF_MODCHECKER); //@formatter:off /*=================================Function Configurations==========================================*/ //@formatter:on Constants.DEF_HEALING = config.get(CATEGORY_FUNCTION, "Healing", Constants.DEF_HEALING).setLanguageKey(Constants.guiKey + "Healing").getBoolean(Constants.DEF_HEALING); Constants.DEF_SNOWSTEP = config.get(CATEGORY_FUNCTION, "SnowStep", Constants.DEF_SNOWSTEP).setLanguageKey(Constants.guiKey + "SnowStep").getBoolean(Constants.DEF_SNOWSTEP); Constants.DEF_GRASSSTEP = config.get(CATEGORY_FUNCTION, "GrassStep", Constants.DEF_GRASSSTEP).setLanguageKey(Constants.guiKey + "GrassStep").getBoolean(Constants.DEF_GRASSSTEP); //@formatter:off /*=================================Miscellaneous Configurations==========================================*/ //@formatter:on Constants.DEF_HOWL = config.get(CATEGORY_MISC, "Howl", Constants.DEF_HOWL).setLanguageKey(Constants.guiKey + "Howl").getBoolean(Constants.DEF_HOWL); Constants.DEF_IS_HUNGER_ON = config.get(CATEGORY_MISC, "HungerDecay", Constants.DEF_IS_HUNGER_ON).setLanguageKey(Constants.guiKey + "HungerDecay").getBoolean(Constants.DEF_IS_HUNGER_ON); //@formatter:off /*=================================DimensionsConfigurations==========================================*/ //@formatter:on IDs.Nillax = config.get(CATEGORY_DIMENSION, "NillaxID", IDs.Nillax).setLanguageKey(Constants.guiKey + "NillaxID").setRequiresMcRestart(true).getInt(IDs.Nillax); if (Constants.DEF_DARKLOAD == true) { IDs.Darkax = config.get(CATEGORY_DIMENSION, "DarkaxID", IDs.Darkax).setLanguageKey(Constants.guiKey + "DarkaxID").setRequiresMcRestart(true).getInt(IDs.Darkax); } //@formatter:off /*=================================BiomesConfigurations==========================================*/ //@formatter:on IDs.bioZone = config.get(CATEGORY_BIOME, "BioZoneID", IDs.bioZone).setLanguageKey(Constants.guiKey + "BioZoneID").setRequiresMcRestart(true).getInt(IDs.bioZone); IDs.redSeed = config.get(CATEGORY_BIOME, "RedSeedID", IDs.redSeed).setLanguageKey(Constants.guiKey + "RedSeedID").setRequiresMcRestart(true).getInt(IDs.redSeed); IDs.blueTaiga = config.get(CATEGORY_BIOME, "BlueTaigaID", IDs.blueTaiga).setLanguageKey(Constants.guiKey + "BlueTaigaID").setRequiresMcRestart(true).getInt(IDs.blueTaiga); IDs.blueTaigaHills = config.get(CATEGORY_BIOME, "BlueTaigaHillsID", IDs.blueTaigaHills).setLanguageKey(Constants.guiKey + "BlueTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueTaigaHills); IDs.blueColdTaiga = config.get(CATEGORY_BIOME, "BlueColdTaigaID", IDs.blueColdTaiga).setLanguageKey(Constants.guiKey + "BlueColdTaigaID").setRequiresMcRestart(true).getInt(IDs.blueColdTaiga); IDs.blueColdTaigaHills = config.get(CATEGORY_BIOME, "BlueColdTaigaHillsID", IDs.blueColdTaigaHills).setLanguageKey(Constants.guiKey + "BlueColdTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueColdTaigaHills); IDs.blueMegaTaiga = config.get(CATEGORY_BIOME, "BlueMegaTaigaID", IDs.blueMegaTaiga).setLanguageKey(Constants.guiKey + "BlueMegaTaigaID").setRequiresMcRestart(true).getInt(IDs.blueMegaTaiga); IDs.blueMegaTaigaHills = config.get(CATEGORY_BIOME, "BlueMegaTaigaHillsID", IDs.blueMegaTaigaHills).setLanguageKey(Constants.guiKey + "BlueMegaTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueMegaTaigaHills); IDs.pinkZone = config.get(CATEGORY_BIOME, "PinkZoneID", IDs.pinkZone).setLanguageKey(Constants.guiKey + "PinkZoneID").setRequiresMcRestart(true).getInt(IDs.pinkZone); IDs.destroZone = config.get(CATEGORY_BIOME, "DestroZoneID", IDs.destroZone).setLanguageKey(Constants.guiKey + "DestroZoneID").setRequiresMcRestart(true).getInt(IDs.destroZone); IDs.destroZoneHills = config.get(CATEGORY_BIOME, "DestroZoneHillsID", IDs.destroZoneHills).setLanguageKey(Constants.guiKey + "DestroZoneHillsID").setRequiresMcRestart(true).getInt(IDs.destroZoneHills); IDs.walRockland = config.get(CATEGORY_BIOME, "WalRocklandID", IDs.walRockland).setLanguageKey(Constants.guiKey + "WalRocklandID").setRequiresMcRestart(true).getInt(IDs.walRockland); if (Constants.DEF_DARKLOAD == true) { IDs.darkWasteland = config.get(CATEGORY_BIOME, "DarkaxBiomeID", IDs.darkWasteland).setLanguageKey(Constants.guiKey + "DarkaxBiomeID").setRequiresMcRestart(true).getInt(IDs.darkWasteland); } IDs.nileSavanna = config.get(CATEGORY_BIOME, "NileSavannaID", IDs.nileSavanna).setLanguageKey(Constants.guiKey + "NileSavannaID").setRequiresMcRestart(true).getInt(IDs.nileSavanna); IDs.nileSavannaPlateau = config.get(CATEGORY_BIOME, "NileSavannaPlateauID", IDs.nileSavannaPlateau).setLanguageKey(Constants.guiKey + "NileSavannaPlateauID").setRequiresMcRestart(true).getInt(IDs.nileSavannaPlateau); IDs.nileJungle = config.get(CATEGORY_BIOME, "NileJungleID", IDs.nileJungle).setLanguageKey(Constants.guiKey + "NileJungleID").setRequiresMcRestart(true).getInt(IDs.nileJungle); IDs.nileJungleHills = config.get(CATEGORY_BIOME, "NileJungleHillsID", IDs.nileJungleHills).setLanguageKey(Constants.guiKey + "NileJungleHillsID").setRequiresMcRestart(true).getInt(IDs.nileJungleHills); IDs.nileJungleEdge = config.get(CATEGORY_BIOME, "NileJungleEdgeID", IDs.nileJungleEdge).setLanguageKey(Constants.guiKey + "NileJungleEdgeID").setRequiresMcRestart(true).getInt(IDs.nileJungleEdge); IDs.nileSwampland = config.get(CATEGORY_BIOME, "NileSwamplandID", IDs.nileSwampland).setLanguageKey(Constants.guiKey + "NileSwamplandID").setRequiresMcRestart(true).getInt(IDs.nileSwampland); IDs.nileMesa = config.get(CATEGORY_BIOME, "NileMesaID", IDs.nileMesa).setLanguageKey(Constants.guiKey + "NileMesaID").setRequiresMcRestart(true).getInt(IDs.nileMesa); IDs.nileMesaPlateau_F = config.get(CATEGORY_BIOME, "NileMesaPlateauFID", IDs.nileMesaPlateau_F).setLanguageKey(Constants.guiKey + "NileMesaPlateauFID").setRequiresMcRestart(true).getInt(IDs.nileMesaPlateau_F); IDs.nileMesaPlateau = config.get(CATEGORY_BIOME, "NileMesaPlateauID", IDs.nileMesaPlateau).setLanguageKey(Constants.guiKey + "NileMesaPlateauID").setRequiresMcRestart(true).getInt(IDs.nileMesaPlateau); IDs.nileMountains = config.get(CATEGORY_BIOME, "NileMountainsID", IDs.nileMountains).setLanguageKey(Constants.guiKey + "NileMountainsID").setRequiresMcRestart(true).getInt(IDs.nileMountains); IDs.nileMountainsEdge = config.get(CATEGORY_BIOME, "NileMountainsEdgeID", IDs.nileMountainsEdge).setLanguageKey(Constants.guiKey + "NileMountainsEdgeID").setRequiresMcRestart(true).getInt(IDs.nileMountainsEdge); IDs.nileMountainsPlus = config.get(CATEGORY_BIOME, "NileMountainsPlusID", IDs.nileMountainsPlus).setLanguageKey(Constants.guiKey + "NileMountainsPlusID").setRequiresMcRestart(true).getInt(IDs.nileMountainsPlus); if (config.hasChanged()) { config.save(); } } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Now it's not blank but It's still sorting -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Welp, thanks for trying to help guys. I'll just delete with having the configuration being in a weird order -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I looked at the code but I don't know why it's not loading the configuration -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I'm really unsure then. -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
I think -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Oooh, some methods in Configuration are still using the default getCategory -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Now it's all blank. Here is my code. ModConfiguration package common.zeroquest.core.configuration; import java.io.File; import java.util.Map; import java.util.TreeMap; import net.minecraftforge.common.config.Configuration; public class ModConfiguration extends Configuration { private Map<String, ModConfigCategory> categories = new TreeMap<String, ModConfigCategory>(); private boolean changed = false; public ModConfiguration() {} /** * Create a configuration file for the file given in parameter. */ public ModConfiguration(File file) { super(file); } @Override public ModConfigCategory getCategory(String category) { ModConfigCategory ret = categories.get(category); if (ret == null) { if (category.contains(CATEGORY_SPLITTER)) { String[] hierarchy = category.split("\\" + CATEGORY_SPLITTER); ModConfigCategory parent = categories.get(hierarchy[0]); if (parent == null) { parent = new ModConfigCategory(hierarchy[0]); categories.put(parent.getQualifiedName(), parent); changed = true; } for (int i = 1; i < hierarchy.length; i++) { String name = ModConfigCategory.getQualifiedName(hierarchy[i], parent); ModConfigCategory child = categories.get(name); if (child == null) { child = new ModConfigCategory(hierarchy[i], parent); categories.put(name, child); changed = true; } ret = child; parent = child; } } else { ret = new ModConfigCategory(category); categories.put(category, ret); changed = true; } } return ret; } } ModConfigCategory package common.zeroquest.core.configuration; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.TreeMap; import com.google.common.collect.ImmutableList; import net.minecraftforge.common.config.ConfigCategory; import net.minecraftforge.common.config.Property; public class ModConfigCategory extends ConfigCategory { private Map<String, Property> properties = new TreeMap<String, Property>(); public ModConfigCategory(String name) { super(name); } public ModConfigCategory(String name, ModConfigCategory parent) { super(name, parent); } @Override public List<Property> getOrderedValues() { return ImmutableList.copyOf(properties.values()); } } ConfigHandler package common.zeroquest.core.handlers; import java.io.File; import java.util.ArrayList; import java.util.List; import net.minecraftforge.common.config.Property; import org.apache.logging.log4j.Logger; import common.zeroquest.ZeroQuest; import common.zeroquest.core.configuration.ModConfiguration; import common.zeroquest.lib.Constants; import common.zeroquest.lib.IDs; public class ConfigHandler { // Add more Categories for GuiFactory\\ public static ModConfiguration config; public static final String CATEGORY_LOAD = "load"; public static final String CATEGORY_FUNCTION = "function"; public static final String CATEGORY_MISC = "miscellaneous"; public static final String CATEGORY_DIMENSION = "dimensions"; public static final String CATEGORY_BIOME = "biomes"; public static void init(File file) { config = new ModConfiguration(file); loadConfig(); } public static void loadConfig() { config.addCustomCategoryComment(CATEGORY_FUNCTION, "Here you can manage all mod and entity functions"); config.addCustomCategoryComment(CATEGORY_LOAD, "Here you can manage what the mod loads into the game"); config.addCustomCategoryComment(CATEGORY_MISC, "Here you can manage the miscellaneous functions of the mod"); config.addCustomCategoryComment(CATEGORY_DIMENSION, "Here you can manage the mod's dimension factors"); config.addCustomCategoryComment(CATEGORY_BIOME, "Here you can manage the mod's biome factors"); //@formatter:off /*=================================Load Configurations==========================================*/ //@formatter:on Constants.DEF_DARKLOAD = config.get(CATEGORY_LOAD, "DarkElements", Constants.DEF_DARKLOAD).setLanguageKey(Constants.guiKey + "DarkElements").setRequiresMcRestart(true).getBoolean(Constants.DEF_DARKLOAD); Constants.DEF_STARTING_ITEMS = config.get(CATEGORY_LOAD, "StartingItems", Constants.DEF_STARTING_ITEMS).setLanguageKey(Constants.guiKey + "StartingItems").getBoolean(Constants.DEF_STARTING_ITEMS); Constants.DEF_MODCHECKER = config.get(CATEGORY_LOAD, "ModCheck", Constants.DEF_MODCHECKER).setLanguageKey(Constants.guiKey + "ModCheck").getBoolean(Constants.DEF_MODCHECKER); //@formatter:off /*=================================Function Configurations==========================================*/ //@formatter:on Constants.DEF_HEALING = config.get(CATEGORY_FUNCTION, "Healing", Constants.DEF_HEALING).setLanguageKey(Constants.guiKey + "Healing").getBoolean(Constants.DEF_HEALING); Constants.DEF_SNOWSTEP = config.get(CATEGORY_FUNCTION, "SnowStep", Constants.DEF_SNOWSTEP).setLanguageKey(Constants.guiKey + "SnowStep").getBoolean(Constants.DEF_SNOWSTEP); Constants.DEF_GRASSSTEP = config.get(CATEGORY_FUNCTION, "GrassStep", Constants.DEF_GRASSSTEP).setLanguageKey(Constants.guiKey + "GrassStep").getBoolean(Constants.DEF_GRASSSTEP); //@formatter:off /*=================================Miscellaneous Configurations==========================================*/ //@formatter:on Constants.DEF_HOWL = config.get(CATEGORY_MISC, "Howl", Constants.DEF_HOWL).setLanguageKey(Constants.guiKey + "Howl").getBoolean(Constants.DEF_HOWL); Constants.DEF_IS_HUNGER_ON = config.get(CATEGORY_MISC, "HungerDecay", Constants.DEF_IS_HUNGER_ON).setLanguageKey(Constants.guiKey + "HungerDecay").getBoolean(Constants.DEF_IS_HUNGER_ON); //@formatter:off /*=================================DimensionsConfigurations==========================================*/ //@formatter:on IDs.Nillax = config.get(CATEGORY_DIMENSION, "NillaxID", IDs.Nillax).setLanguageKey(Constants.guiKey + "NillaxID").setRequiresMcRestart(true).getInt(IDs.Nillax); if (Constants.DEF_DARKLOAD == true) { IDs.Darkax = config.get(CATEGORY_DIMENSION, "DarkaxID", IDs.Darkax).setLanguageKey(Constants.guiKey + "DarkaxID").setRequiresMcRestart(true).getInt(IDs.Darkax); } //@formatter:off /*=================================BiomesConfigurations==========================================*/ //@formatter:on IDs.bioZone = config.get(CATEGORY_BIOME, "BioZoneID", IDs.bioZone).setLanguageKey(Constants.guiKey + "BioZoneID").setRequiresMcRestart(true).getInt(IDs.bioZone); IDs.redSeed = config.get(CATEGORY_BIOME, "RedSeedID", IDs.redSeed).setLanguageKey(Constants.guiKey + "RedSeedID").setRequiresMcRestart(true).getInt(IDs.redSeed); IDs.blueTaiga = config.get(CATEGORY_BIOME, "BlueTaigaID", IDs.blueTaiga).setLanguageKey(Constants.guiKey + "BlueTaigaID").setRequiresMcRestart(true).getInt(IDs.blueTaiga); IDs.blueTaigaHills = config.get(CATEGORY_BIOME, "BlueTaigaHillsID", IDs.blueTaigaHills).setLanguageKey(Constants.guiKey + "BlueTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueTaigaHills); IDs.blueColdTaiga = config.get(CATEGORY_BIOME, "BlueColdTaigaID", IDs.blueColdTaiga).setLanguageKey(Constants.guiKey + "BlueColdTaigaID").setRequiresMcRestart(true).getInt(IDs.blueColdTaiga); IDs.blueColdTaigaHills = config.get(CATEGORY_BIOME, "BlueColdTaigaHillsID", IDs.blueColdTaigaHills).setLanguageKey(Constants.guiKey + "BlueColdTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueColdTaigaHills); IDs.blueMegaTaiga = config.get(CATEGORY_BIOME, "BlueMegaTaigaID", IDs.blueMegaTaiga).setLanguageKey(Constants.guiKey + "BlueMegaTaigaID").setRequiresMcRestart(true).getInt(IDs.blueMegaTaiga); IDs.blueMegaTaigaHills = config.get(CATEGORY_BIOME, "BlueMegaTaigaHillsID", IDs.blueMegaTaigaHills).setLanguageKey(Constants.guiKey + "BlueMegaTaigaHillsID").setRequiresMcRestart(true).getInt(IDs.blueMegaTaigaHills); IDs.pinkZone = config.get(CATEGORY_BIOME, "PinkZoneID", IDs.pinkZone).setLanguageKey(Constants.guiKey + "PinkZoneID").setRequiresMcRestart(true).getInt(IDs.pinkZone); IDs.destroZone = config.get(CATEGORY_BIOME, "DestroZoneID", IDs.destroZone).setLanguageKey(Constants.guiKey + "DestroZoneID").setRequiresMcRestart(true).getInt(IDs.destroZone); IDs.destroZoneHills = config.get(CATEGORY_BIOME, "DestroZoneHillsID", IDs.destroZoneHills).setLanguageKey(Constants.guiKey + "DestroZoneHillsID").setRequiresMcRestart(true).getInt(IDs.destroZoneHills); IDs.walRockland = config.get(CATEGORY_BIOME, "WalRocklandID", IDs.walRockland).setLanguageKey(Constants.guiKey + "WalRocklandID").setRequiresMcRestart(true).getInt(IDs.walRockland); if (Constants.DEF_DARKLOAD == true) { IDs.darkWasteland = config.get(CATEGORY_BIOME, "DarkaxBiomeID", IDs.darkWasteland).setLanguageKey(Constants.guiKey + "DarkaxBiomeID").setRequiresMcRestart(true).getInt(IDs.darkWasteland); } IDs.nileSavanna = config.get(CATEGORY_BIOME, "NileSavannaID", IDs.nileSavanna).setLanguageKey(Constants.guiKey + "NileSavannaID").setRequiresMcRestart(true).getInt(IDs.nileSavanna); IDs.nileSavannaPlateau = config.get(CATEGORY_BIOME, "NileSavannaPlateauID", IDs.nileSavannaPlateau).setLanguageKey(Constants.guiKey + "NileSavannaPlateauID").setRequiresMcRestart(true).getInt(IDs.nileSavannaPlateau); IDs.nileJungle = config.get(CATEGORY_BIOME, "NileJungleID", IDs.nileJungle).setLanguageKey(Constants.guiKey + "NileJungleID").setRequiresMcRestart(true).getInt(IDs.nileJungle); IDs.nileJungleHills = config.get(CATEGORY_BIOME, "NileJungleHillsID", IDs.nileJungleHills).setLanguageKey(Constants.guiKey + "NileJungleHillsID").setRequiresMcRestart(true).getInt(IDs.nileJungleHills); IDs.nileJungleEdge = config.get(CATEGORY_BIOME, "NileJungleEdgeID", IDs.nileJungleEdge).setLanguageKey(Constants.guiKey + "NileJungleEdgeID").setRequiresMcRestart(true).getInt(IDs.nileJungleEdge); IDs.nileSwampland = config.get(CATEGORY_BIOME, "NileSwamplandID", IDs.nileSwampland).setLanguageKey(Constants.guiKey + "NileSwamplandID").setRequiresMcRestart(true).getInt(IDs.nileSwampland); IDs.nileMesa = config.get(CATEGORY_BIOME, "NileMesaID", IDs.nileMesa).setLanguageKey(Constants.guiKey + "NileMesaID").setRequiresMcRestart(true).getInt(IDs.nileMesa); IDs.nileMesaPlateau_F = config.get(CATEGORY_BIOME, "NileMesaPlateauFID", IDs.nileMesaPlateau_F).setLanguageKey(Constants.guiKey + "NileMesaPlateauFID").setRequiresMcRestart(true).getInt(IDs.nileMesaPlateau_F); IDs.nileMesaPlateau = config.get(CATEGORY_BIOME, "NileMesaPlateauID", IDs.nileMesaPlateau).setLanguageKey(Constants.guiKey + "NileMesaPlateauID").setRequiresMcRestart(true).getInt(IDs.nileMesaPlateau); IDs.nileMountains = config.get(CATEGORY_BIOME, "NileMountainsID", IDs.nileMountains).setLanguageKey(Constants.guiKey + "NileMountainsID").setRequiresMcRestart(true).getInt(IDs.nileMountains); IDs.nileMountainsEdge = config.get(CATEGORY_BIOME, "NileMountainsEdgeID", IDs.nileMountainsEdge).setLanguageKey(Constants.guiKey + "NileMountainsEdgeID").setRequiresMcRestart(true).getInt(IDs.nileMountainsEdge); IDs.nileMountainsPlus = config.get(CATEGORY_BIOME, "NileMountainsPlusID", IDs.nileMountainsPlus).setLanguageKey(Constants.guiKey + "NileMountainsPlusID").setRequiresMcRestart(true).getInt(IDs.nileMountainsPlus); if (config.hasChanged()) { config.save(); } } } -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
That didn't work either -
[1.8]Making configurations for Biome and Dimension IDs
NovaViper replied to NovaViper's topic in Modder Support
Hey, I tried putting numbers on the names but it organizer that organizes the configurations are ignoring them -
I fixed it, I had to add more environmental variables to PATH, the ones that lead to git.exe. And thanks guys for the help!