AlchemyCommand.java 4.4 KB

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