AlchemyManager.java 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package com.gmail.nossr50.skills.alchemy;
  2. import com.gmail.nossr50.config.experience.ExperienceConfig;
  3. import com.gmail.nossr50.config.skills.alchemy.PotionConfig;
  4. import com.gmail.nossr50.datatypes.experience.XPGainReason;
  5. import com.gmail.nossr50.datatypes.experience.XPGainSource;
  6. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  7. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  8. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  9. import com.gmail.nossr50.datatypes.skills.alchemy.PotionStage;
  10. import com.gmail.nossr50.mcMMO;
  11. import com.gmail.nossr50.skills.SkillManager;
  12. import com.gmail.nossr50.util.StringUtils;
  13. import com.gmail.nossr50.util.skills.RankUtils;
  14. import org.bukkit.inventory.ItemStack;
  15. import java.util.List;
  16. public class AlchemyManager extends SkillManager {
  17. public AlchemyManager(McMMOPlayer mcMMOPlayer) {
  18. super(mcMMOPlayer, PrimarySkillType.ALCHEMY);
  19. }
  20. public int getTier() {
  21. return RankUtils.getRank(getPlayer(), SubSkillType.ALCHEMY_CONCOCTIONS);
  22. }
  23. public List<ItemStack> getIngredients() {
  24. return PotionConfig.getInstance().getIngredients(getTier());
  25. }
  26. public String getIngredientList() {
  27. StringBuilder list = new StringBuilder();
  28. for (ItemStack ingredient : getIngredients()) {
  29. String string = StringUtils.getPrettyItemString(ingredient.getType());
  30. list.append(", ").append(string);
  31. }
  32. return list.substring(2);
  33. }
  34. public double calculateBrewSpeed(boolean isLucky) {
  35. int skillLevel = getSkillLevel();
  36. if (skillLevel < Alchemy.catalysisUnlockLevel) {
  37. return Alchemy.catalysisMinSpeed;
  38. }
  39. double LUCKY_MODIFIER = 4.0 / 3.0;
  40. return Math.min(Alchemy.catalysisMaxSpeed, Alchemy.catalysisMinSpeed + (Alchemy.catalysisMaxSpeed - Alchemy.catalysisMinSpeed) * (skillLevel - Alchemy.catalysisUnlockLevel) / (Alchemy.catalysisMaxBonusLevel - Alchemy.catalysisUnlockLevel)) * (isLucky ? LUCKY_MODIFIER : 1.0);
  41. }
  42. public void handlePotionBrewSuccesses(PotionStage potionStage, int amount) {
  43. //TODO: This code disturbs me
  44. applyXpGain((float) (mcMMO.getConfigManager().getConfigExperience().getExperienceAlchemy().getPotionXPByStage(potionStage.toNumerical()) * amount), XPGainReason.PVE, XPGainSource.PASSIVE);
  45. }
  46. }