Alchemy.java 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.gmail.nossr50.skills.alchemy;
  2. import java.util.HashMap;
  3. import java.util.Map;
  4. import org.bukkit.block.BlockState;
  5. import com.gmail.nossr50.mcMMO;
  6. import com.gmail.nossr50.config.AdvancedConfig;
  7. import com.gmail.nossr50.runnables.skills.AlchemyBrewTask;
  8. public final class Alchemy {
  9. public enum Tier {
  10. EIGHT(8),
  11. SEVEN(7),
  12. SIX(6),
  13. FIVE(5),
  14. FOUR(4),
  15. THREE(3),
  16. TWO(2),
  17. ONE(1);
  18. int numerical;
  19. private Tier(int numerical) {
  20. this.numerical = numerical;
  21. }
  22. public int toNumerical() {
  23. return numerical;
  24. }
  25. public static Tier fromNumerical(int numerical) {
  26. for (Tier tier : Tier.values()) {
  27. if (tier.toNumerical() == numerical) {
  28. return tier;
  29. }
  30. }
  31. return null;
  32. }
  33. protected int getLevel() {
  34. return AdvancedConfig.getInstance().getConcoctionsTierLevel(this);
  35. }
  36. }
  37. public static int catalysisUnlockLevel = AdvancedConfig.getInstance().getCatalysisUnlockLevel();
  38. public static int catalysisMaxBonusLevel = AdvancedConfig.getInstance().getCatalysisMaxBonusLevel();
  39. public static double catalysisMinSpeed = AdvancedConfig.getInstance().getCatalysisMinSpeed();
  40. public static double catalysisMaxSpeed = AdvancedConfig.getInstance().getCatalysisMaxSpeed();
  41. public static Map<BlockState, AlchemyBrewTask> brewingStandMap = new HashMap<BlockState, AlchemyBrewTask>();
  42. private Alchemy() {}
  43. /**
  44. * Calculate base brewing speed, given a skill level and ignoring all perks.
  45. *
  46. * @param skillLevel Skill level used for calculation.
  47. *
  48. * @return Base brewing speed for the level.
  49. */
  50. public static double calculateBrewSpeed(int skillLevel) {
  51. if (skillLevel < catalysisUnlockLevel) {
  52. return catalysisMinSpeed;
  53. }
  54. return Math.min(catalysisMaxSpeed, catalysisMinSpeed + (catalysisMaxSpeed - catalysisMinSpeed) * (skillLevel - catalysisUnlockLevel) / (catalysisMaxBonusLevel - catalysisUnlockLevel));
  55. }
  56. /**
  57. * Finish all active brews. Used upon Disable to prevent vanilla potions from being brewed upon next Enable.
  58. */
  59. public static void finishAllBrews() {
  60. mcMMO.p.debug("Completing " + brewingStandMap.size() + " unfinished Alchemy brews.");
  61. for (AlchemyBrewTask alchemyBrewTask : brewingStandMap.values()) {
  62. alchemyBrewTask.finishImmediately();
  63. }
  64. }
  65. }