diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java index ec37f83a1..8c8f5be92 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomArmorConfig.java @@ -18,6 +18,8 @@ import com.gmail.nossr50.skills.repair.repairables.RepairableFactory; public class CustomArmorConfig extends ConfigLoader { private static CustomArmorConfig instance; + private boolean needsUpdate = false; + private List repairables; private List customBoots = new ArrayList(); @@ -50,10 +52,17 @@ public class CustomArmorConfig extends ConfigLoader { protected void loadKeys() { repairables = new ArrayList(); - loadArmor("Boots", customBoots); - loadArmor("Chestplates", customChestplates); - loadArmor("Helmets", customHelmets); - loadArmor("Leggings", customLeggings); + while (!needsUpdate) { + loadArmor("Boots", customBoots); + loadArmor("Chestplates", customChestplates); + loadArmor("Helmets", customHelmets); + loadArmor("Leggings", customLeggings); + } + + if (needsUpdate) { + needsUpdate = false; + backup(); + } } private void loadArmor(String armorType, List materialList) { @@ -66,6 +75,11 @@ public class CustomArmorConfig extends ConfigLoader { Set armorConfigSet = armorSection.getKeys(false); for (String armorName : armorConfigSet) { + if (config.contains(armorType + "." + armorName + "." + ".ID")) { + needsUpdate = true; + return; + } + Material armorMaterial = Material.matchMaterial(armorName); if (armorMaterial == null) { diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java index 6679d4a40..d27d63ded 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomBlockConfig.java @@ -16,6 +16,8 @@ import com.gmail.nossr50.datatypes.mods.CustomBlock; public class CustomBlockConfig extends ConfigLoader { private static CustomBlockConfig instance; + private boolean needsUpdate = false; + private List customExcavationBlocks = new ArrayList(); private List customHerbalismBlocks = new ArrayList(); private List customMiningBlocks = new ArrayList(); @@ -42,11 +44,18 @@ public class CustomBlockConfig extends ConfigLoader { @Override protected void loadKeys() { - loadBlocks("Excavation", customExcavationBlocks); - loadBlocks("Herbalism", customHerbalismBlocks); - loadBlocks("Mining", customMiningBlocks); - loadBlocks("Woodcutting", customWoodcuttingBlocks); - loadBlocks("Ability_Blocks", customAbilityBlocks); + while (!needsUpdate) { + loadBlocks("Excavation", customExcavationBlocks); + loadBlocks("Herbalism", customHerbalismBlocks); + loadBlocks("Mining", customMiningBlocks); + loadBlocks("Woodcutting", customWoodcuttingBlocks); + loadBlocks("Ability_Blocks", customAbilityBlocks); + } + + if (needsUpdate) { + needsUpdate = false; + backup(); + } } private void loadBlocks(String skillType, List blockList) { @@ -59,6 +68,11 @@ public class CustomBlockConfig extends ConfigLoader { Set skillConfigSet = skillSection.getKeys(false); for (String blockName : skillConfigSet) { + if (config.contains(skillType + "." + blockName + "." + ".ID")) { + needsUpdate = true; + return; + } + String[] blockInfo = blockName.split("[|]"); Material blockMaterial = Material.matchMaterial(blockInfo[0]); diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java index c001d6f78..f395eae92 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomEntityConfig.java @@ -32,6 +32,11 @@ public class CustomEntityConfig extends ConfigLoader { @Override protected void loadKeys() { + if (config.getConfigurationSection("Hostile") != null) { + backup(); + return; + } + for (String entityName : config.getKeys(false)) { Class clazz = null; String className = config.getString(entityName + ".Class", ""); diff --git a/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java b/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java index 2642fc178..364d7db9c 100644 --- a/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java +++ b/src/main/java/com/gmail/nossr50/config/mods/CustomToolConfig.java @@ -19,6 +19,9 @@ import com.gmail.nossr50.skills.repair.repairables.RepairableFactory; public class CustomToolConfig extends ConfigLoader { private static CustomToolConfig instance; + + private boolean needsUpdate = false; + private List repairables; private List customAxes = new ArrayList(); @@ -55,12 +58,19 @@ public class CustomToolConfig extends ConfigLoader { protected void loadKeys() { repairables = new ArrayList(); - loadTool("Axes", customAxes); - loadTool("Bows", customBows); - loadTool("Hoes", customHoes); - loadTool("Pickaxes", customPickaxes); - loadTool("Shovels", customShovels); - loadTool("Swords", customSwords); + while (!needsUpdate) { + loadTool("Axes", customAxes); + loadTool("Bows", customBows); + loadTool("Hoes", customHoes); + loadTool("Pickaxes", customPickaxes); + loadTool("Shovels", customShovels); + loadTool("Swords", customSwords); + } + + if (needsUpdate) { + needsUpdate = false; + backup(); + } } private void loadTool(String toolType, List materialList) { @@ -73,6 +83,11 @@ public class CustomToolConfig extends ConfigLoader { Set toolConfigSet = toolSection.getKeys(false); for (String toolName : toolConfigSet) { + if (config.contains(toolType + "." + toolName + "." + ".ID")) { + needsUpdate = true; + return; + } + Material toolMaterial = Material.matchMaterial(toolName); if (toolMaterial == null) {