Résolu Problème avec mon fichier de config
-
Bonjour/Bonsoir me revoilà avec un soucis, mon fichier config ne s’enregistre pas si je le modifie, je dois supprimer le fichier pour qu’il se recreer à chaque fois que je modifie quelque chose dedans.
Et mes configs s’ennregistrent dans un ordre random, numéro 1,10,11,…,2,3… Je ne comprends pas pourquoi
J’ai aussi mes Niveaux Maximum qui se place à chaque fois avant mes niveaux Minimum pourquoi j’en sais rien.
Voilà j’espère que vous pourrez m’éclairer sur ces trois soucis .
Ma classe config:
package com.degraduck.minefus; public class Config { public static int niveauMinimumBouftou = 13; public static int niveauMaximumBouftou = 25; public static int chanceArchiBouftou = 250; public static int niveauMinimumBouftonBlanc = 11; public static int niveauMaximumBouftonBlanc = 15; public static int chanceArchiBouftonBlanc = 250; public static int niveauMinimumBouftonNoir = 11; public static int niveauMaximumBouftonNoir = 15; public static int chanceArchiBouftonNoir = 250; public static int niveauMinimumChefDeGuerre = 25; public static int niveauMaximumChefDeGuerre = 33; public static int chanceArchiChefDeGuerre = 250; public static int niveauMinimumArakne = 11; public static int niveauMaximumArakne = 15; public static int chanceArchiArakne = 250; public static int niveauMinimumPiou = 11; public static int niveauMaximumPiou = 15; public static int chanceArchiPiou = 250; public static int niveauMinimumTofu = 12; public static int niveauMaximumTofu = 16; public static int chanceArchiTofu = 250; public static int niveauMinimumTournesol = 18; public static int niveauMaximumTournesol = 26; public static int chanceArchiTournesol = 250; public static int niveauMinimumChampchamp = 13; public static int niveauMaximumChampchamp = 17; public static int chanceArchiChampchamp = 250; public static int niveauMinimumMoskito = 11; public static int niveauMaximumMoskito = 15; public static int chanceArchiMoskito = 250; public static int niveauMinimumCraquebille = 20; public static int niveauMaximumCraquebille = 28; public static int niveauMinimumLarveBleu = 11; public static int niveauMaximumLarveBleu = 15; public static int chanceArchiLarveBleu = 250; public static int niveauMinimumLarveVerte = 16; public static int niveauMaximumLarveVerte = 20; public static int chanceArchiLarveVerte = 250; public static int niveauMinimumLarveOrange = 21; public static int niveauMaximumLarveOrange = 25; public static int chanceArchiLarveOrange = 250; }
Ma classe principale:
@EventHandler public void preInit(FMLPreInitializationEvent event) { Configuration config = new Configuration(event.getSuggestedConfigurationFile()); try { config.load(); Config.niveauMinimumBouftou= config.get("1 - Bouftou", "Niveau Minimum", Config.niveauMinimumBouftou).getInt(); Config.niveauMaximumBouftou = config.get("1 - Bouftou", "Niveau Maximum", Config.niveauMaximumBouftou).getInt(); Config.chanceArchiBouftou = config.get("1 - Bouftou", "Taux Spawn Archimonstre", Config.chanceArchiBouftou).getInt(); Config.niveauMinimumBouftonBlanc= config.get("2 - Boufton Blanc", "Niveau Minimum", Config.niveauMinimumBouftonBlanc).getInt(); Config.niveauMaximumBouftonBlanc = config.get("2 - Boufton Blanc", "Niveau Maximum", Config.niveauMaximumBouftonBlanc).getInt(); Config.chanceArchiBouftonBlanc = config.get("2 - Boufton Blanc", "Taux Spawn Archimonstre", Config.chanceArchiBouftonBlanc).getInt(); Config.niveauMinimumBouftonNoir= config.get("3 - Boufton Noir", "Niveau Minimum", Config.niveauMinimumBouftonNoir).getInt(); Config.niveauMaximumBouftonNoir = config.get("3 - Boufton Noir", "Niveau Maximum", Config.niveauMaximumBouftonNoir).getInt(); Config.chanceArchiBouftonNoir = config.get("3 - Boufton Noir", "Taux Spawn Archimonstre", Config.chanceArchiBouftonNoir).getInt(); Config.niveauMinimumChefDeGuerre= config.get("4 - Chef De Guerre Bouftou", "Niveau Minimum", Config.niveauMinimumChefDeGuerre).getInt(); Config.niveauMaximumChefDeGuerre = config.get("4 - Chef De Guerre Bouftou", "Niveau Maximum", Config.niveauMaximumChefDeGuerre).getInt(); Config.chanceArchiChefDeGuerre = config.get("4 - Chef De Guerre Bouftou", "Taux Spawn Archimonstre", Config.chanceArchiChefDeGuerre).getInt(); Config.niveauMinimumArakne= config.get("5 - Arakne", "Niveau Minimum", Config.niveauMinimumArakne).getInt(); Config.niveauMaximumArakne = config.get("5 - Arakne", "Niveau Maximum", Config.niveauMaximumArakne).getInt(); Config.chanceArchiArakne = config.get("5 - Arakne", "Taux Spawn Archimonstre", Config.chanceArchiArakne).getInt(); Config.niveauMinimumPiou= config.get("6 - Piou", "Niveau Minimum", Config.niveauMinimumPiou).getInt(); Config.niveauMaximumPiou = config.get("6 - Piou", "Niveau Maximum", Config.niveauMaximumPiou).getInt(); Config.chanceArchiPiou = config.get("6 - Piou", "Taux Spawn Archimonstre", Config.chanceArchiPiou).getInt(); Config.niveauMinimumTofu= config.get("7 - Tofu", "Niveau Minimum", Config.niveauMinimumTofu).getInt(); Config.niveauMaximumTofu = config.get("7 - Tofu", "Niveau Maximum", Config.niveauMaximumTofu).getInt(); Config.chanceArchiTofu = config.get("7 - Tofu", "Taux Spawn Archimonstre", Config.chanceArchiTofu).getInt(); Config.niveauMinimumTournesol= config.get("8 - Tournesol", "Niveau Minimum", Config.niveauMinimumTournesol).getInt(); Config.niveauMaximumTournesol = config.get("8 - Tournesol", "Niveau Maximum", Config.niveauMaximumTournesol).getInt(); Config.chanceArchiTournesol = config.get("8 - Tournesol", "Taux Spawn Archimonstre", Config.chanceArchiTournesol).getInt(); Config.niveauMinimumMoskito= config.get("9 - Moskito", "Niveau Minimum", Config.niveauMinimumMoskito).getInt(); Config.niveauMaximumMoskito = config.get("9 - Moskito", "Niveau Maximum", Config.niveauMaximumMoskito).getInt(); Config.chanceArchiMoskito = config.get("9 - Moskito", "Taux Spawn Archimonstre", Config.chanceArchiMoskito).getInt(); Config.niveauMinimumChampchamp= config.get("10 - Champchamp", "Niveau Minimum", Config.niveauMinimumChampchamp).getInt(); Config.niveauMaximumChampchamp = config.get("10 - Champchamp", "Niveau Maximum", Config.niveauMaximumChampchamp).getInt(); Config.chanceArchiChampchamp = config.get("10 - Champchamp", "Taux Spawn Archimonstre", Config.chanceArchiChampchamp).getInt(); Config.niveauMinimumLarveBleu= config.get("11 - LarveBleu", "Niveau Minimum", Config.niveauMinimumLarveBleu).getInt(); Config.niveauMaximumLarveBleu = config.get("11 - LarveBleu", "Niveau Maximum", Config.niveauMaximumLarveBleu).getInt(); Config.chanceArchiLarveBleu = config.get("11 - LarveBleu", "Taux Spawn Archimonstre", Config.chanceArchiLarveBleu).getInt(); Config.niveauMinimumLarveVerte= config.get("12 - LarveVerte", "Niveau Minimum", Config.niveauMinimumLarveVerte).getInt(); Config.niveauMaximumLarveVerte = config.get("12 - LarveVerte", "Niveau Maximum", Config.niveauMaximumLarveVerte).getInt(); Config.chanceArchiLarveVerte = config.get("12 - LarveVerte", "Taux Spawn Archimonstre", Config.chanceArchiLarveVerte).getInt(); Config.niveauMinimumLarveOrange= config.get("13 - LarveOrange", "Niveau Minimum", Config.niveauMinimumLarveOrange).getInt(); Config.niveauMaximumLarveOrange = config.get("13 - LarveOrange", "Niveau Maximum", Config.niveauMaximumLarveOrange).getInt(); Config.chanceArchiLarveOrange = config.get("13 - LarveOrange", "Taux Spawn Archimonstre", Config.chanceArchiLarveOrange).getInt(); Config.niveauMinimumCraquebille= config.get("14 - Craquebille", "Niveau Minimum", Config.niveauMinimumCraquebille).getInt(); Config.niveauMaximumCraquebille = config.get("14 - Craquebille", "Niveau Maximum", Config.niveauMaximumCraquebille).getInt(); } catch(Exception ex) { System.out.println("Impossible de charger la configuration !"); } finally { if(config.hasChanged()) { config.save(); } } }
et mon fichier de config:
:::
Configuration file
“1 - bouftou” {
I:“Niveau Maximum”=25
I:“Niveau Minimum”=13
I:“Taux Spawn Archimonstre”=250
}“10 - champchamp” {
I:“Niveau Maximum”=17
I:“Niveau Minimum”=13
I:“Taux Spawn Archimonstre”=250
}“11 - larvebleu” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}“12 - larveverte” {
I:“Niveau Maximum”=20
I:“Niveau Minimum”=16
I:“Taux Spawn Archimonstre”=250
}“13 - larveorange” {
I:“Niveau Maximum”=25
I:“Niveau Minimum”=21
I:“Taux Spawn Archimonstre”=250
}“14 - craquebille” {
I:“Niveau Maximum”=28
I:“Niveau Minimum”=20
}“2 - boufton blanc” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}“3 - boufton noir” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}“4 - chef de guerre bouftou” {
I:“Niveau Maximum”=33
I:“Niveau Minimum”=25
I:“Taux Spawn Archimonstre”=250
}“5 - arakne” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}“6 - piou” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}“7 - tofu” {
I:“Niveau Maximum”=16
I:“Niveau Minimum”=12
I:“Taux Spawn Archimonstre”=250
}“8 - tournesol” {
I:“Niveau Maximum”=26
I:“Niveau Minimum”=18
I:“Taux Spawn Archimonstre”=250
}“9 - moskito” {
I:“Niveau Maximum”=15
I:“Niveau Minimum”=11
I:“Taux Spawn Archimonstre”=250
}:::
-
Bonjour,
Concernant tes 2 questions sur l’ordre dapparition de tes propriétés dans le fichier de config, c’est facile,
La class “Configuration” de forge utilise un TreeMap pour stoker les catégories ET leurs propriétés. Du coup cette map trie automatiquement suivant l’ordre naturel:Example:
Niveau Maximum < Niveau Minimum
a < iLa même chose pour tes “catégories” (je vais avoir du mal à mettre l’espace en gras, mais dans la table ASCII il à une valeur plus petite que n’importe quel caractère affichable)
-
Il y aurait-il un moyen de contourner le trie automatique?
J’ai donc changé ma configuration:
@EventHandler public void preInit(FMLPreInitializationEvent event) { Configuration config = new Configuration(event.getSuggestedConfigurationFile()); try { Config.niveauMinimumBouftou= config.get("1 - Bouftou", "Niveau Minimum", Config.niveauMinimumBouftou).getInt(); Config.niveauMaximumBouftou = config.get("1 - Bouftou", "Niveau Maximum", Config.niveauMaximumBouftou).getInt(); Config.chanceArchiBouftou = config.get("1 - Bouftou", "Taux Spawn Archimonstre", Config.chanceArchiBouftou).getInt(); Config.niveauMinimumBouftonBlanc= config.get("2 - Boufton Blanc", "Niveau Minimum", Config.niveauMinimumBouftonBlanc).getInt(); Config.niveauMaximumBouftonBlanc = config.get("2 - Boufton Blanc", "Niveau Maximum", Config.niveauMaximumBouftonBlanc).getInt(); Config.chanceArchiBouftonBlanc = config.get("2 - Boufton Blanc", "Taux Spawn Archimonstre", Config.chanceArchiBouftonBlanc).getInt(); Config.niveauMinimumBouftonNoir= config.get("3 - Boufton Noir", "Niveau Minimum", Config.niveauMinimumBouftonNoir).getInt(); Config.niveauMaximumBouftonNoir = config.get("3 - Boufton Noir", "Niveau Maximum", Config.niveauMaximumBouftonNoir).getInt(); Config.chanceArchiBouftonNoir = config.get("3 - Boufton Noir", "Taux Spawn Archimonstre", Config.chanceArchiBouftonNoir).getInt(); Config.niveauMinimumChefDeGuerre= config.get("4 - Chef De Guerre Bouftou", "Niveau Minimum", Config.niveauMinimumChefDeGuerre).getInt(); Config.niveauMaximumChefDeGuerre = config.get("4 - Chef De Guerre Bouftou", "Niveau Maximum", Config.niveauMaximumChefDeGuerre).getInt(); Config.chanceArchiChefDeGuerre = config.get("4 - Chef De Guerre Bouftou", "Taux Spawn Archimonstre", Config.chanceArchiChefDeGuerre).getInt(); Config.niveauMinimumArakne= config.get("5 - Arakne", "Niveau Minimum", Config.niveauMinimumArakne).getInt(); Config.niveauMaximumArakne = config.get("5 - Arakne", "Niveau Maximum", Config.niveauMaximumArakne).getInt(); Config.chanceArchiArakne = config.get("5 - Arakne", "Taux Spawn Archimonstre", Config.chanceArchiArakne).getInt(); Config.niveauMinimumPiou= config.get("6 - Piou", "Niveau Minimum", Config.niveauMinimumPiou).getInt(); Config.niveauMaximumPiou = config.get("6 - Piou", "Niveau Maximum", Config.niveauMaximumPiou).getInt(); Config.chanceArchiPiou = config.get("6 - Piou", "Taux Spawn Archimonstre", Config.chanceArchiPiou).getInt(); Config.niveauMinimumTofu= config.get("7 - Tofu", "Niveau Minimum", Config.niveauMinimumTofu).getInt(); Config.niveauMaximumTofu = config.get("7 - Tofu", "Niveau Maximum", Config.niveauMaximumTofu).getInt(); Config.chanceArchiTofu = config.get("7 - Tofu", "Taux Spawn Archimonstre", Config.chanceArchiTofu).getInt(); Config.niveauMinimumTournesol= config.get("8 - Tournesol", "Niveau Minimum", Config.niveauMinimumTournesol).getInt(); Config.niveauMaximumTournesol = config.get("8 - Tournesol", "Niveau Maximum", Config.niveauMaximumTournesol).getInt(); Config.chanceArchiTournesol = config.get("8 - Tournesol", "Taux Spawn Archimonstre", Config.chanceArchiTournesol).getInt(); Config.niveauMinimumMoskito= config.get("9 - Moskito", "Niveau Minimum", Config.niveauMinimumMoskito).getInt(); Config.niveauMaximumMoskito = config.get("9 - Moskito", "Niveau Maximum", Config.niveauMaximumMoskito).getInt(); Config.chanceArchiMoskito = config.get("9 - Moskito", "Taux Spawn Archimonstre", Config.chanceArchiMoskito).getInt(); Config.niveauMinimumChampchamp= config.get("10 - Champchamp", "Niveau Minimum", Config.niveauMinimumChampchamp).getInt(); Config.niveauMaximumChampchamp = config.get("10 - Champchamp", "Niveau Maximum", Config.niveauMaximumChampchamp).getInt(); Config.chanceArchiChampchamp = config.get("10 - Champchamp", "Taux Spawn Archimonstre", Config.chanceArchiChampchamp).getInt(); Config.niveauMinimumLarveBleu= config.get("11 - LarveBleu", "Niveau Minimum", Config.niveauMinimumLarveBleu).getInt(); Config.niveauMaximumLarveBleu = config.get("11 - LarveBleu", "Niveau Maximum", Config.niveauMaximumLarveBleu).getInt(); Config.chanceArchiLarveBleu = config.get("11 - LarveBleu", "Taux Spawn Archimonstre", Config.chanceArchiLarveBleu).getInt(); Config.niveauMinimumLarveVerte= config.get("12 - LarveVerte", "Niveau Minimum", Config.niveauMinimumLarveVerte).getInt(); Config.niveauMaximumLarveVerte = config.get("12 - LarveVerte", "Niveau Maximum", Config.niveauMaximumLarveVerte).getInt(); Config.chanceArchiLarveVerte = config.get("12 - LarveVerte", "Taux Spawn Archimonstre", Config.chanceArchiLarveVerte).getInt(); Config.niveauMinimumLarveOrange= config.get("13 - LarveOrange", "Niveau Minimum", Config.niveauMinimumLarveOrange).getInt(); Config.niveauMaximumLarveOrange = config.get("13 - LarveOrange", "Niveau Maximum", Config.niveauMaximumLarveOrange).getInt(); Config.chanceArchiLarveOrange = config.get("13 - LarveOrange", "Taux Spawn Archimonstre", Config.chanceArchiLarveOrange).getInt(); Config.niveauMinimumCraquebille= config.get("14 - Craquebille", "Niveau Minimum", Config.niveauMinimumCraquebille).getInt(); Config.niveauMaximumCraquebille = config.get("14 - Craquebille", "Niveau Maximum", Config.niveauMaximumCraquebille).getInt(); } catch(Exception ex) { System.out.println("Impossible de charger la configuration !"); } finally { config.save(); } }
Mais toujours un soucis, j’ai renommé la dernière config “Craquebille” en “CraquebilleTest” et voici le résultat:
:::
“14 - craquebille” {
I:“Niveau Maximum”=28
I:“Niveau Minimum”=20
}“14 - craquebilletest” {
I:“Niveau Minimum”=20
}
:::Au lieu de remplacer il l’a ajouté en dessous, et quand je le supprime de ma classe config il ne le supprime pas dans mon fichier config.
-
Oui et c’est normal comme comportement.
-
Ah bah je passe en résolu alors ^^