diff --git a/src/main/java/electroblob/wizardry/client/GuiConfigWizardry.java b/src/main/java/electroblob/wizardry/client/GuiConfigWizardry.java index 4ec9d474..0c68d410 100644 --- a/src/main/java/electroblob/wizardry/client/GuiConfigWizardry.java +++ b/src/main/java/electroblob/wizardry/client/GuiConfigWizardry.java @@ -24,57 +24,57 @@ public class GuiConfigWizardry extends GuiConfig { } private static List getConfigEntries(){ + List configList = new ArrayList(1); - configList.add(new DummyCategoryElement("spellsConfig", "config." + Wizardry.MODID + ".category." + Settings.SPELLS_CATEGORY, - SpellsCategory.class)); - configList.add(new DummyCategoryElement("resistancesConfig", - "config." + Wizardry.MODID + ".category." + Settings.RESISTANCES_CATEGORY, ResistancesCategory.class)); - configList.addAll(new ConfigElement(Wizardry.settings.getConfigCategory(Configuration.CATEGORY_GENERAL)) - .getChildElements()); + + configList.add(new DummyCategoryElement("spellsConfig", "config." + Wizardry.MODID + ".category." + Settings.SPELLS_CATEGORY, SpellsCategory.class)); + configList.add(new DummyCategoryElement("resistancesConfig", "config." + Wizardry.MODID + ".category." + Settings.RESISTANCES_CATEGORY, ResistancesCategory.class)); + + configList.addAll(new ConfigElement(Wizardry.settings.getConfigCategory(Configuration.CATEGORY_GENERAL)).getChildElements()); + return configList; } - - /** Spells category of the config gui. This adds a button which opens up the spells category config. */ - public static class SpellsCategory extends CategoryEntry { - public SpellsCategory(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop){ + + // The reason this system is so convoluted is that it's designed for use with the @Config annotation. The problem is, + // I'm not sure whether that will play well with the load phases. Hmmm... + + public static abstract class CategoryBase extends CategoryEntry { + + private final String category; + + public CategoryBase(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop, String category){ super(owningScreen, owningEntryList, prop); + this.category = category; } @Override protected GuiScreen buildChildScreen(){ // This GuiConfig object specifies the configID of the object and as such will force-save when it is closed. // The parent GuiConfig object's entryList will also be refreshed to reflect the changes. - GuiConfig spellsMenu = new GuiConfig(this.owningScreen, - (new ConfigElement(Wizardry.settings.getConfigCategory(Settings.SPELLS_CATEGORY))) - .getChildElements(), - this.owningScreen.modID, Settings.SPELLS_CATEGORY, false, false, - Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title." + Settings.SPELLS_CATEGORY)); + GuiConfig childScreen = new GuiConfig(this.owningScreen, + (new ConfigElement(Wizardry.settings.getConfigCategory(category))).getChildElements(), + this.owningScreen.modID, category, false, false, + Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title." + category)); - spellsMenu.titleLine2 = I18n.format("config." + Wizardry.MODID + ".subtitle." + Settings.SPELLS_CATEGORY); + childScreen.titleLine2 = I18n.format("config." + Wizardry.MODID + ".subtitle." + category); - return spellsMenu; + return childScreen; + } + } + + /** Resistances category of the config gui. */ + public static class SpellsCategory extends CategoryBase { + + public SpellsCategory(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop){ + super(owningScreen, owningEntryList, prop, Settings.SPELLS_CATEGORY); } } /** Resistances category of the config gui. */ - public static class ResistancesCategory extends CategoryEntry { + public static class ResistancesCategory extends CategoryBase { + public ResistancesCategory(GuiConfig owningScreen, GuiConfigEntries owningEntryList, IConfigElement prop){ - super(owningScreen, owningEntryList, prop); - } - - @Override - protected GuiScreen buildChildScreen(){ - // This GuiConfig object specifies the configID of the object and as such will force-save when it is closed. - // The parent GuiConfig object's entryList will also be refreshed to reflect the changes. - GuiConfig idsMenu = new GuiConfig(this.owningScreen, - (new ConfigElement(Wizardry.settings.getConfigCategory(Settings.RESISTANCES_CATEGORY))) - .getChildElements(), - this.owningScreen.modID, Settings.RESISTANCES_CATEGORY, false, false, - Wizardry.NAME + " - " + I18n.format("config." + Wizardry.MODID + ".title." + Settings.RESISTANCES_CATEGORY)); - - idsMenu.titleLine2 = I18n.format("config." + Wizardry.MODID + ".subtitle." + Settings.RESISTANCES_CATEGORY); - - return idsMenu; + super(owningScreen, owningEntryList, prop, Settings.RESISTANCES_CATEGORY); } } }