package net.knarcraft.blacksmithvisuals.manager; import net.knarcraft.blacksmithvisuals.container.AnimationData; import net.knarcraft.blacksmithvisuals.container.SoundData; import net.knarcraft.blacksmithvisuals.property.SoundIdentifier; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.jetbrains.annotations.NotNull; import java.util.HashMap; import java.util.Map; /** * A manager keeping track of configuration options */ public class ConfigurationManager { private Map soundSettings; private AnimationData scrapperAnimationData; private AnimationData blacksmithAnimationData; /** * Instantiates a new configuration manager * * @param fileConfiguration

The file configuration to load values from

* @throws InvalidConfigurationException

If the configuration file has missing or invalid values

*/ public ConfigurationManager(@NotNull FileConfiguration fileConfiguration) throws InvalidConfigurationException { load(fileConfiguration); } /** * Loads the configuration from disk * * @param fileConfiguration

The file configuration to get values from

* @throws InvalidConfigurationException

If the configuration file has missing or invalid values

*/ public void load(@NotNull FileConfiguration fileConfiguration) throws InvalidConfigurationException { soundSettings = new HashMap<>(); for (SoundIdentifier identifier : SoundIdentifier.values()) { soundSettings.put(identifier, SoundData.load(fileConfiguration, identifier.getConfigNode())); } scrapperAnimationData = AnimationData.load(fileConfiguration, "scrapper.animation"); blacksmithAnimationData = AnimationData.load(fileConfiguration, "blacksmith.animation"); } /** * Gets the animation data for the scrapper's working animation * * @return

Scrapper animation data

*/ @NotNull public AnimationData getScrapperAnimationData() { return this.scrapperAnimationData; } /** * Gets the animation data for the blacksmith's working animation * * @return

Blacksmith animation data

*/ @NotNull public AnimationData getBlacksmithAnimationData() { return this.blacksmithAnimationData; } /** * Gets the sound data for the given identifier * * @param identifier

The identifier of the sound

* @return

The sound's sound data

*/ @NotNull public SoundData getSoundData(@NotNull SoundIdentifier identifier) { return soundSettings.get(identifier); } }