ConfigManager.java 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. package com.gmail.nossr50.config;
  2. import com.gmail.nossr50.config.collectionconfigs.RepairConfig;
  3. import com.gmail.nossr50.config.collectionconfigs.SalvageConfig;
  4. import com.gmail.nossr50.config.experience.ExperienceConfig;
  5. import com.gmail.nossr50.config.hocon.database.ConfigDatabase;
  6. import com.gmail.nossr50.config.party.ItemWeightConfig;
  7. import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
  8. import com.gmail.nossr50.config.treasure.ExcavationTreasureConfig;
  9. import com.gmail.nossr50.config.treasure.FishingTreasureConfig;
  10. import com.gmail.nossr50.config.treasure.HerbalismTreasureConfig;
  11. import com.gmail.nossr50.skills.repair.repairables.Repairable;
  12. import com.gmail.nossr50.skills.repair.repairables.SimpleRepairableManager;
  13. import com.gmail.nossr50.skills.salvage.salvageables.Salvageable;
  14. import com.gmail.nossr50.skills.salvage.salvageables.SimpleSalvageableManager;
  15. import com.gmail.nossr50.util.experience.ExperienceMapManager;
  16. import java.io.File;
  17. import java.util.ArrayList;
  18. /**
  19. *
  20. * The Config Manager handles initializing, loading, and unloading registers for all configs that mcMMO uses
  21. * This makes sure that mcMMO properly loads and unloads its values on reload
  22. *
  23. * Config Manager also holds all of our MultiConfigContainers
  24. */
  25. public final class ConfigManager {
  26. /* UNLOAD REGISTER */
  27. private ArrayList<Unload> unloadables;
  28. private ArrayList<File> userFiles;
  29. /* MULTI CONFIG INSTANCES */
  30. //private MultiConfigContainer<Repairable> repairableMultiConfigContainer;
  31. //private MultiConfigContainer<Salvageable> salvageableMultiConfigContainer;
  32. /* COLLECTION MANAGERS */
  33. private SimpleRepairableManager simpleRepairableManager;
  34. private SimpleSalvageableManager simpleSalvageableManager;
  35. /* MOD MANAGERS */
  36. //TODO: Add these back when modded servers become a thing again
  37. /* MISC MANAGERS */
  38. private ExperienceMapManager experienceMapManager;
  39. //private ModManager modManager;
  40. /*private ToolConfigManager toolConfigManager;
  41. private ArmorConfigManager armorConfigManager;
  42. private BlockConfigManager blockConfigManager;
  43. private EntityConfigManager entityConfigManager;*/
  44. /* CONFIG INSTANCES */
  45. private ConfigDatabase configDatabase;
  46. private MainConfig mainConfig;
  47. private FishingTreasureConfig fishingTreasureConfig;
  48. private ExcavationTreasureConfig excavationTreasureConfig;
  49. private HerbalismTreasureConfig herbalismTreasureConfig;
  50. private ExperienceConfig experienceConfig;
  51. private AdvancedConfig advancedConfig;
  52. private PotionConfig potionConfig;
  53. private CoreSkillsConfig coreSkillsConfig;
  54. private SoundConfig soundConfig;
  55. private RankConfig rankConfig;
  56. private ItemWeightConfig itemWeightConfig;
  57. private RepairConfig repairConfig;
  58. private SalvageConfig salvageConfig;
  59. /* CONFIG ERRORS */
  60. private ArrayList<String> configErrors; //Collect errors to whine about to server admins
  61. public ConfigManager()
  62. {
  63. unloadables = new ArrayList<>();
  64. userFiles = new ArrayList<>();
  65. }
  66. public void loadConfigs()
  67. {
  68. // Load Config Files
  69. // I'm pretty these are supposed to be done in a specific order, so don't rearrange them willy nilly
  70. //TODO: Not sure about the order of MainConfig
  71. configDatabase = new ConfigDatabase();
  72. mainConfig = new MainConfig();
  73. fishingTreasureConfig = new FishingTreasureConfig();
  74. excavationTreasureConfig = new ExcavationTreasureConfig();
  75. herbalismTreasureConfig = new HerbalismTreasureConfig();
  76. advancedConfig = new AdvancedConfig();
  77. //TODO: Not sure about the order of experience config
  78. experienceConfig = new ExperienceConfig();
  79. potionConfig = new PotionConfig();
  80. coreSkillsConfig = new CoreSkillsConfig();
  81. soundConfig = new SoundConfig();
  82. rankConfig = new RankConfig();
  83. itemWeightConfig = new ItemWeightConfig();
  84. repairConfig = new RepairConfig();
  85. salvageConfig = new SalvageConfig();
  86. /*if (MainConfig.getInstance().getToolModsEnabled()) {
  87. new ToolConfigManager();
  88. }
  89. if (MainConfig.getInstance().getArmorModsEnabled()) {
  90. new ArmorConfigManager();
  91. }
  92. if (MainConfig.getInstance().getBlockModsEnabled()) {
  93. new BlockConfigManager();
  94. }
  95. if (MainConfig.getInstance().getEntityModsEnabled()) {
  96. new EntityConfigManager();
  97. }*/
  98. // Multi Config Containers
  99. //initMultiConfigContainers();
  100. /*
  101. * Managers
  102. */
  103. // Register Managers
  104. initMiscManagers();
  105. initCollectionManagers();
  106. }
  107. /**
  108. * Misc managers
  109. */
  110. private void initMiscManagers()
  111. {
  112. experienceMapManager = new ExperienceMapManager();
  113. }
  114. /**
  115. * Initializes all of our Multi Config Containers
  116. */
  117. /*private void initMultiConfigContainers()
  118. {
  119. //Repair
  120. repairableMultiConfigContainer = new MultiConfigContainer<>("repair", CollectionClassType.REPAIR);
  121. unloadables.add(repairableMultiConfigContainer);
  122. //Salvage
  123. salvageableMultiConfigContainer = new MultiConfigContainer<>("salvage", CollectionClassType.SALVAGE);
  124. unloadables.add(salvageableMultiConfigContainer);
  125. }*/
  126. /**
  127. * Initializes any managers related to config collections
  128. */
  129. private void initCollectionManagers()
  130. {
  131. // Handles registration of repairables
  132. simpleRepairableManager = new SimpleRepairableManager(getRepairables());
  133. unloadables.add(simpleRepairableManager);
  134. // Handles registration of salvageables
  135. simpleSalvageableManager = new SimpleSalvageableManager(getSalvageables());
  136. unloadables.add(simpleSalvageableManager);
  137. }
  138. /**
  139. * Get all loaded repairables (loaded from all repairable configs)
  140. * @return the currently loaded repairables
  141. */
  142. public ArrayList<Repairable> getRepairables()
  143. {
  144. return (ArrayList<Repairable>) repairConfig.genericCollection;
  145. }
  146. /**
  147. * Get all loaded salvageables (loaded from all salvageable configs)
  148. * @return the currently loaded salvageables
  149. */
  150. public ArrayList<Salvageable> getSalvageables()
  151. {
  152. return (ArrayList<Salvageable>) salvageConfig.genericCollection;
  153. }
  154. /**
  155. * Unloads all config options (prepares for reload)
  156. */
  157. public void unloadAllConfigsAndRegisters()
  158. {
  159. //Unload
  160. for(Unload unloadable : unloadables)
  161. {
  162. unloadable.unload();
  163. }
  164. //Clear
  165. unloadables.clear();
  166. userFiles.clear();
  167. }
  168. /**
  169. * Registers an unloadable
  170. * Unloadables call unload() on plugin disable to cleanup registries
  171. */
  172. public void registerUnloadable(Unload unload)
  173. {
  174. if(!unloadables.contains(unload))
  175. unloadables.add(unload);
  176. }
  177. /**
  178. * Registers an unloadable
  179. * Unloadables call unload() on plugin disable to cleanup registries
  180. */
  181. public void registerUserFile(File userFile)
  182. {
  183. if(!userFiles.contains(userFile))
  184. userFiles.add(userFile);
  185. }
  186. /*
  187. * GETTER BOILER PLATE
  188. */
  189. /**
  190. * Used to back up our zip files real easily
  191. * @return
  192. */
  193. public ArrayList<File> getConfigFiles()
  194. {
  195. return userFiles;
  196. }
  197. public SimpleRepairableManager getSimpleRepairableManager() {
  198. return simpleRepairableManager;
  199. }
  200. public SimpleSalvageableManager getSimpleSalvageableManager() {
  201. return simpleSalvageableManager;
  202. }
  203. public MainConfig getMainConfig() {
  204. return mainConfig;
  205. }
  206. public FishingTreasureConfig getFishingTreasureConfig() {
  207. return fishingTreasureConfig;
  208. }
  209. public ExcavationTreasureConfig getExcavationTreasureConfig() {
  210. return excavationTreasureConfig;
  211. }
  212. public HerbalismTreasureConfig getHerbalismTreasureConfig() {
  213. return herbalismTreasureConfig;
  214. }
  215. public AdvancedConfig getAdvancedConfig() {
  216. return advancedConfig;
  217. }
  218. public PotionConfig getPotionConfig() {
  219. return potionConfig;
  220. }
  221. public CoreSkillsConfig getCoreSkillsConfig() {
  222. return coreSkillsConfig;
  223. }
  224. public SoundConfig getSoundConfig() {
  225. return soundConfig;
  226. }
  227. public RankConfig getRankConfig() {
  228. return rankConfig;
  229. }
  230. public ExperienceConfig getExperienceConfig() {
  231. return experienceConfig;
  232. }
  233. public ItemWeightConfig getItemWeightConfig() {
  234. return itemWeightConfig;
  235. }
  236. public ExperienceMapManager getExperienceMapManager() {
  237. return experienceMapManager;
  238. }
  239. public ConfigDatabase getConfigDatabase() { return configDatabase; }
  240. }