AlchemyCommand.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.datatypes.player.McMMOPlayer;
  3. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  4. import com.gmail.nossr50.locale.LocaleLoader;
  5. import com.gmail.nossr50.mcMMO;
  6. import com.gmail.nossr50.skills.alchemy.AlchemyManager;
  7. import com.gmail.nossr50.util.Misc;
  8. import com.gmail.nossr50.util.Permissions;
  9. import com.gmail.nossr50.util.skills.RankUtils;
  10. import com.gmail.nossr50.util.text.TextComponentFactory;
  11. import com.neetgames.mcmmo.player.OnlineMMOPlayer;
  12. import net.kyori.adventure.text.Component;
  13. import org.bukkit.entity.Player;
  14. import org.jetbrains.annotations.NotNull;
  15. import java.util.ArrayList;
  16. import java.util.List;
  17. public class AlchemyCommand extends SkillCommand {
  18. private String brewSpeed;
  19. private String brewSpeedLucky;
  20. private int tier;
  21. private int ingredientCount;
  22. private String ingredientList;
  23. private boolean canCatalysis;
  24. private boolean canConcoctions;
  25. public AlchemyCommand() {
  26. super(PrimarySkillType.ALCHEMY);
  27. }
  28. protected String[] calculateAbilityDisplayValues(@NotNull Player player) {
  29. //TODO: Needed?
  30. OnlineMMOPlayer mmoPlayer = mcMMO.getUserManager().queryPlayer(player);
  31. if(mmoPlayer == null)
  32. {
  33. player.sendMessage(LocaleLoader.getString("Profile.PendingLoad"));
  34. return new String[] {"DATA NOT LOADED", "DATA NOT LOADED"};
  35. }
  36. return calculateAbilityDisplayValues(mmoPlayer);
  37. }
  38. protected String[] calculateAbilityDisplayValues(@NotNull OnlineMMOPlayer mmoPlayer) {
  39. AlchemyManager alchemyManager = ((McMMOPlayer) (mmoPlayer)).getAlchemyManager();
  40. String[] displayValues = new String[2];
  41. boolean isLucky = Permissions.lucky(Misc.adaptPlayer(mmoPlayer), PrimarySkillType.ALCHEMY);
  42. displayValues[0] = decimal.format(alchemyManager.calculateBrewSpeed(false)) + "x";
  43. displayValues[1] = isLucky ? decimal.format(alchemyManager.calculateBrewSpeed(true)) + "x" : null;
  44. return displayValues;
  45. }
  46. @Override
  47. protected void dataCalculations(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue) {
  48. // ALCHEMY_CATALYSIS
  49. if (canCatalysis) {
  50. String[] catalysisStrings = calculateAbilityDisplayValues(mmoPlayer.getPlayer());
  51. brewSpeed = catalysisStrings[0];
  52. brewSpeedLucky = catalysisStrings[1];
  53. }
  54. // ALCHEMY_CONCOCTIONS
  55. if (canConcoctions) {
  56. AlchemyManager alchemyManager = mmoPlayer.getAlchemyManager();
  57. tier = alchemyManager.getTier();
  58. ingredientCount = alchemyManager.getIngredients().size();
  59. ingredientList = alchemyManager.getIngredientList();
  60. }
  61. }
  62. @Override
  63. protected void permissionsCheck(@NotNull OnlineMMOPlayer mmoPlayer) {
  64. canCatalysis = canUseSubskill(mmoPlayer, SubSkillType.ALCHEMY_CATALYSIS);
  65. canConcoctions = canUseSubskill(mmoPlayer, SubSkillType.ALCHEMY_CONCOCTIONS);
  66. }
  67. @Override
  68. protected @NotNull List<String> statsDisplay(@NotNull OnlineMMOPlayer mmoPlayer, float skillValue, boolean hasEndurance, boolean isLucky) {
  69. List<String> messages = new ArrayList<>();
  70. if (canCatalysis) {
  71. messages.add(getStatMessage(SubSkillType.ALCHEMY_CATALYSIS, brewSpeed)
  72. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", brewSpeedLucky) : ""));
  73. }
  74. if (canConcoctions) {
  75. messages.add(getStatMessage(false, true, SubSkillType.ALCHEMY_CONCOCTIONS, String.valueOf(tier), String.valueOf(RankUtils.getHighestRank(SubSkillType.ALCHEMY_CONCOCTIONS))));
  76. messages.add(getStatMessage(true, true, SubSkillType.ALCHEMY_CONCOCTIONS, String.valueOf(ingredientCount), ingredientList));
  77. //messages.add(LocaleLoader.getString("Alchemy.Concoctions.Rank", tier, RankUtils.getHighestRank(SubSkillType.ALCHEMY_CONCOCTIONS)));
  78. //messages.add(LocaleLoader.getString("Alchemy.Concoctions.Ingredients", ingredientCount, ingredientList));
  79. }
  80. return messages;
  81. }
  82. @Override
  83. protected @NotNull List<Component> getTextComponents(@NotNull OnlineMMOPlayer mmoPlayer) {
  84. List<Component> textComponents = new ArrayList<>();
  85. TextComponentFactory.getSubSkillTextComponents(mmoPlayer, textComponents, PrimarySkillType.ALCHEMY);
  86. return textComponents;
  87. }
  88. }