superhize Posted March 31, 2020 Posted March 31, 2020 Hello, i'm trying to use JSON file for my mod configuration. Actualy i use TOML, but ConfigValue does not allow HashMap. Reveal hidden contents final ForgeConfigSpec.ConfigValue<HashMap<String, String>> repList; What i'm trying to do is: - Put default Question/Anwser into a hashmap (map.put("QUESTION", ANWSER");) - save default hashmap into the configuration - allow user(me) to edit the configuration to add other question without editing the code I do not know if i can do that with TOML or idk. All other things in my mode is done, i just need that, but i'm stuck. If anyone can help me, that would be great. Edit: sorry for english Quote
TheGreyGhost Posted April 1, 2020 Posted April 1, 2020 Hi I did something similar with another mod I was working on, you might find some inspiration in there. https://github.com/TheGreyGhost/dragonmounts2-1.12.2/tree/configurable-checkpoint2 See the classes: DragonVariantTag DragonVariants DragonVariantsReader Typical usage is a config file like : dragon1.json { "breedinternalname": "fire", "lifestage": { "size5adult": 5, // size of the adult in metres "healthbase": 50.0, // base health of the adult "armorbase": 10.0 // base armour of the adult }, "egg": { "size": 1.0, //the size (width and height) of the egg in metres "particlesname": "townaura" //what particle effect does the egg produce while incubating? as per the /particle command } } with code that looks like this: private static final DragonVariantTag EGG_SIZE_METRES = DragonVariantTag.addTag("size", 0.5, 0.05, 2.0, "the size (width and height) of the egg in metres").categories(Category.EGG); private static final DragonVariantTag EGG_INCUBATION_DAYS = DragonVariantTag.addTag("incubationduration", 1.0, 0.1, 10.0, "the number of days that the egg will incubate until it hatches").categories(Category.EGG); private static final DragonVariantTag EGG_WIGGLE = DragonVariantTag.addTag("wiggle", true, "should the egg wiggle when it gets near to hatching?").categories(Category.EGG); private static final DragonVariantTag EGG_GLOW = DragonVariantTag.addTag("glow", false, "should the egg glow when it gets near to hatching?").categories(Category.EGG); and final String TEST_FOLDER = "testdata/testdvr1"; DragonVariantsReader dragonVariantsReader = new DragonVariantsReader( Minecraft.getMinecraft().getResourceManager(), TEST_FOLDER); Map<String, DragonVariants> allVariants = dragonVariantsReader.readAllVariants(); DragonVariants dragonVariantsFire = allVariants.get("fire"); double eggSizeMetres = (double)dragonVariantsFire.getValueOrDefault(modifiedCategory, EGG_SIZE_METRES); I don't have a standalone test harness at the moment unfortunately, but the classes are reasonably self-contained and (hopefully) fairly intuitive to figure out. The code also includes functionality for "modifiers" and "ariantTagValidator" to check for config tag problems and/or initialise resources based on the tags, but those are optional. Cheers TGG 1 Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.