2
0

AcrobaticsCommand.java 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.config.AdvancedConfig;
  3. import com.gmail.nossr50.datatypes.skills.PrimarySkillType;
  4. import com.gmail.nossr50.datatypes.skills.SubSkillType;
  5. import com.gmail.nossr50.datatypes.skills.subskills.AbstractSubSkill;
  6. import com.gmail.nossr50.listeners.InteractionManager;
  7. import com.gmail.nossr50.locale.LocaleLoader;
  8. import com.gmail.nossr50.util.TextComponentFactory;
  9. import com.gmail.nossr50.util.skills.SkillUtils;
  10. import net.md_5.bungee.api.chat.TextComponent;
  11. import org.bukkit.entity.Player;
  12. import java.util.ArrayList;
  13. import java.util.List;
  14. public class AcrobaticsCommand extends SkillCommand {
  15. private String dodgeChance;
  16. private String dodgeChanceLucky;
  17. private boolean canDodge;
  18. private boolean canRoll;
  19. public AcrobaticsCommand() {
  20. super(PrimarySkillType.ACROBATICS);
  21. }
  22. @Override
  23. protected void dataCalculations(Player player, float skillValue, boolean isLucky) {
  24. // ACROBATICS_DODGE
  25. if (canDodge) {
  26. String[] dodgeStrings = SkillUtils.calculateAbilityDisplayValues(skillValue, SubSkillType.ACROBATICS_DODGE, isLucky);
  27. dodgeChance = dodgeStrings[0];
  28. dodgeChanceLucky = dodgeStrings[1];
  29. }
  30. }
  31. @Override
  32. protected void permissionsCheck(Player player) {
  33. canDodge = canUseSubskill(player, SubSkillType.ACROBATICS_DODGE);
  34. canRoll = canUseSubskill(player, SubSkillType.ACROBATICS_ROLL);
  35. }
  36. @Override
  37. protected List<String> effectsDisplay() {
  38. List<String> messages = new ArrayList<String>();
  39. if (canRoll) {
  40. messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Acrobatics.Effect.0"), LocaleLoader.getString("Acrobatics.Effect.1")));
  41. messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Acrobatics.Effect.2"), LocaleLoader.getString("Acrobatics.Effect.3")));
  42. }
  43. if (canDodge) {
  44. messages.add(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Acrobatics.Effect.4"), LocaleLoader.getString("Acrobatics.Effect.5")));
  45. }
  46. return messages;
  47. }
  48. @Override
  49. protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
  50. List<String> messages = new ArrayList<String>();
  51. if (canRoll) {
  52. AbstractSubSkill abstractSubSkill = InteractionManager.getAbstractByName("Roll");
  53. if(abstractSubSkill != null)
  54. {
  55. double maxBonusLevel = AdvancedConfig.getInstance().getMaxBonusLevel(abstractSubSkill);
  56. double maxChance = AdvancedConfig.getInstance().getMaxChance(abstractSubSkill);
  57. double rollChance = SkillUtils.getChanceOfSuccess(skillValue, maxBonusLevel, maxChance);
  58. double graceChance = SkillUtils.getChanceOfSuccess(skillValue, maxBonusLevel, maxChance / 2);
  59. String rollChanceLucky = isLucky ? percent.format(Math.min(rollChance * 1.3333D, 100.0D) / 100.0D) : null;
  60. String graceChanceLucky = isLucky ? percent.format(Math.min(rollChance * 1.3333D, 100.0D) / 100.0D) : null;
  61. messages.add(getStatMessage(SubSkillType.ACROBATICS_ROLL, percent.format(rollChance))
  62. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", rollChanceLucky) : ""));
  63. messages.add(getStatMessage(true, false, SubSkillType.ACROBATICS_ROLL, percent.format(graceChance))
  64. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", graceChanceLucky) : ""));
  65. }
  66. }
  67. if (canDodge) {
  68. messages.add(getStatMessage(SubSkillType.ACROBATICS_DODGE, dodgeChance)
  69. + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", dodgeChanceLucky) : ""));
  70. }
  71. return messages;
  72. }
  73. @Override
  74. protected List<TextComponent> getTextComponents(Player player) {
  75. List<TextComponent> textComponents = new ArrayList<>();
  76. TextComponentFactory.getSubSkillTextComponents(player, textComponents, PrimarySkillType.ACROBATICS);
  77. return textComponents;
  78. }
  79. }