TamingCommand.java 6.2 KB

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