AlchemyCommand.java 4.3 KB

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