ExperienceBarManager.java 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package com.gmail.nossr50.util.experience;
  2. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  3. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  4. import com.gmail.nossr50.mcMMO;
  5. import com.gmail.nossr50.runnables.skills.ExperienceBarHideTask;
  6. import org.bukkit.plugin.Plugin;
  7. import java.util.HashMap;
  8. /**
  9. * ExperienceBarManager handles displaying and updating mcMMO experience bars for players
  10. * Each ExperienceBarManager only manages a single player
  11. */
  12. public class ExperienceBarManager {
  13. HashMap<PrimarySkillType, ExperienceBarWrapper> experienceBars;
  14. HashMap<PrimarySkillType, ExperienceBarHideTask> experienceBarHideTaskHashMap;
  15. private McMMOPlayer mcMMOPlayer;
  16. private final mcMMO pluginRef;
  17. public ExperienceBarManager(mcMMO pluginRef, McMMOPlayer mcMMOPlayer) {
  18. this.pluginRef = pluginRef;
  19. //Init map
  20. experienceBars = new HashMap<>();
  21. experienceBarHideTaskHashMap = new HashMap<>();
  22. this.mcMMOPlayer = mcMMOPlayer;
  23. }
  24. public void updateExperienceBar(PrimarySkillType primarySkillType, Plugin plugin) {
  25. if (!pluginRef.getConfigManager().getConfigLeveling().isEnableXPBars() || !pluginRef.getConfigManager().getConfigLeveling().getXPBarToggle(primarySkillType))
  26. return;
  27. //Init Bar
  28. if (experienceBars.get(primarySkillType) == null)
  29. experienceBars.put(primarySkillType, new ExperienceBarWrapper(pluginRef, primarySkillType, mcMMOPlayer));
  30. //Get Bar
  31. ExperienceBarWrapper experienceBarWrapper = experienceBars.get(primarySkillType);
  32. //Update Progress
  33. experienceBarWrapper.setProgress(mcMMOPlayer.getProgressInCurrentSkillLevel(primarySkillType));
  34. //Show Bar
  35. experienceBarWrapper.showExperienceBar();
  36. //Setup Hide Bar Task
  37. if (experienceBarHideTaskHashMap.get(primarySkillType) != null) {
  38. experienceBarHideTaskHashMap.get(primarySkillType).cancel();
  39. scheduleHideTask(primarySkillType, plugin);
  40. } else {
  41. scheduleHideTask(primarySkillType, plugin);
  42. }
  43. }
  44. private void scheduleHideTask(PrimarySkillType primarySkillType, Plugin plugin) {
  45. ExperienceBarHideTask experienceBarHideTask = new ExperienceBarHideTask(this, mcMMOPlayer, primarySkillType);
  46. experienceBarHideTask.runTaskLater(plugin, 20 * 2);
  47. experienceBarHideTaskHashMap.put(primarySkillType, experienceBarHideTask);
  48. }
  49. public void hideExperienceBar(PrimarySkillType primarySkillType) {
  50. experienceBars.get(primarySkillType).hideExperienceBar();
  51. }
  52. public void clearTask(PrimarySkillType primarySkillType) {
  53. experienceBarHideTaskHashMap.remove(primarySkillType);
  54. }
  55. }