TamingCommand.java 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.config.Config;
  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.skills.taming.Taming;
  7. import com.gmail.nossr50.util.Permissions;
  8. import com.gmail.nossr50.util.StringUtils;
  9. import com.gmail.nossr50.util.TextComponentFactory;
  10. import net.md_5.bungee.api.chat.TextComponent;
  11. import org.bukkit.entity.EntityType;
  12. import org.bukkit.entity.Player;
  13. import java.util.ArrayList;
  14. import java.util.List;
  15. public class TamingCommand extends SkillCommand {
  16. private String goreChance;
  17. private String goreChanceLucky;
  18. private boolean canBeastLore;
  19. private boolean canGore;
  20. private boolean canSharpenedClaws;
  21. private boolean canEnvironmentallyAware;
  22. private boolean canThickFur;
  23. private boolean canShockProof;
  24. private boolean canCallWild;
  25. private boolean canFastFood;
  26. private boolean canHolyHound;
  27. public TamingCommand() {
  28. super(PrimarySkillType.TAMING);
  29. }
  30. @Override
  31. protected void dataCalculations(Player player, float skillValue, boolean isLucky) {
  32. if (canGore) {
  33. String[] goreStrings = calculateAbilityDisplayValues(skillValue, SubSkillType.TAMING_GORE, isLucky);
  34. goreChance = goreStrings[0];
  35. goreChanceLucky = goreStrings[1];
  36. }
  37. }
  38. @Override
  39. protected void permissionsCheck(Player player) {
  40. canBeastLore = canUseSubskill(player, SubSkillType.TAMING_BEAST_LORE);
  41. canCallWild = Permissions.callOfTheWild(player, EntityType.HORSE) || Permissions.callOfTheWild(player, EntityType.WOLF) || Permissions.callOfTheWild(player, EntityType.OCELOT);
  42. canEnvironmentallyAware = canUseSubskill(player, SubSkillType.TAMING_ENVIRONMENTALLY_AWARE);
  43. canFastFood = canUseSubskill(player, SubSkillType.TAMING_FAST_FOOD_SERVICE);
  44. canGore = canUseSubskill(player, SubSkillType.TAMING_GORE);
  45. canSharpenedClaws = canUseSubskill(player, SubSkillType.TAMING_SHARPENED_CLAWS);
  46. canShockProof = canUseSubskill(player, SubSkillType.TAMING_SHOCK_PROOF);
  47. canThickFur = canUseSubskill(player, SubSkillType.TAMING_THICK_FUR);
  48. canHolyHound = canUseSubskill(player, SubSkillType.TAMING_HOLY_HOUND);
  49. }
  50. @Override
  51. protected List<String> statsDisplay(Player player, float skillValue, boolean hasEndurance, boolean isLucky) {
  52. List<String> messages = new ArrayList<String>();
  53. if (canEnvironmentallyAware) {
  54. if (skillValue < Taming.environmentallyAwareUnlockLevel) {
  55. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.0", Taming.environmentallyAwareUnlockLevel)));
  56. }
  57. else {
  58. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.0"), LocaleLoader.getString("Taming.Ability.Bonus.1")));
  59. }
  60. }
  61. if (canFastFood) {
  62. if (skillValue < Taming.fastFoodServiceUnlockLevel) {
  63. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.4", Taming.fastFoodServiceUnlockLevel)));
  64. }
  65. else {
  66. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.8"), LocaleLoader.getString("Taming.Ability.Bonus.9", percent.format(Taming.fastFoodServiceActivationChance / 100D))));
  67. }
  68. }
  69. if (canGore) {
  70. messages.add(LocaleLoader.getString("Ability.Generic.Template",
  71. LocaleLoader.getString("Taming.Combat.Chance.Gore"),
  72. goreChance) + (isLucky ? LocaleLoader.getString("Perks.Lucky.Bonus", goreChanceLucky) : ""));
  73. }
  74. if (canHolyHound) {
  75. if (skillValue < Taming.holyHoundUnlockLevel) {
  76. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.5", Taming.holyHoundUnlockLevel)));
  77. }
  78. else {
  79. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.10"), LocaleLoader.getString("Taming.Ability.Bonus.11")));
  80. }
  81. }
  82. if (canSharpenedClaws) {
  83. if (skillValue < Taming.sharpenedClawsUnlockLevel) {
  84. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.3", Taming.sharpenedClawsUnlockLevel)));
  85. }
  86. else {
  87. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.6"), LocaleLoader.getString("Taming.Ability.Bonus.7", Taming.sharpenedClawsBonusDamage)));
  88. }
  89. }
  90. if (canShockProof) {
  91. if (skillValue < Taming.shockProofUnlockLevel) {
  92. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.2", Taming.shockProofUnlockLevel)));
  93. }
  94. else {
  95. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.4"), LocaleLoader.getString("Taming.Ability.Bonus.5", Taming.shockProofModifier)));
  96. }
  97. }
  98. if (canThickFur) {
  99. if (skillValue < Taming.thickFurUnlockLevel) {
  100. messages.add(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Taming.Ability.Locked.1", Taming.thickFurUnlockLevel)));
  101. }
  102. else {
  103. messages.add(LocaleLoader.getString("Ability.Generic.Template", LocaleLoader.getString("Taming.Ability.Bonus.2"), LocaleLoader.getString("Taming.Ability.Bonus.3", Taming.thickFurModifier)));
  104. }
  105. }
  106. return messages;
  107. }
  108. @Override
  109. protected List<TextComponent> getTextComponents(Player player) {
  110. List<TextComponent> textComponents = new ArrayList<>();
  111. TextComponentFactory.getSubSkillTextComponents(player, textComponents, this.skill);
  112. return textComponents;
  113. }
  114. }