FishingCommand.java 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.config.AdvancedConfig;
  3. import com.gmail.nossr50.datatypes.skills.SkillType;
  4. import com.gmail.nossr50.locale.LocaleLoader;
  5. import com.gmail.nossr50.skills.fishing.Fishing;
  6. import com.gmail.nossr50.util.Permissions;
  7. import com.gmail.nossr50.util.player.UserManager;
  8. public class FishingCommand extends SkillCommand {
  9. private int lootTier;
  10. private String magicChance;
  11. private String magicChanceLucky;
  12. private String chanceRaining = "";
  13. private String shakeChance;
  14. private String shakeChanceLucky;
  15. private int fishermansDietRank;
  16. private String biteChance;
  17. private boolean canTreasureHunt;
  18. private boolean canMagicHunt;
  19. private boolean canShake;
  20. private boolean canFishermansDiet;
  21. private boolean canMasterAngler;
  22. public FishingCommand() {
  23. super(SkillType.FISHING);
  24. }
  25. @Override
  26. protected void dataCalculations() {
  27. boolean isStorming = player.getWorld().hasStorm();
  28. // TREASURE HUNTER
  29. if (canTreasureHunt) {
  30. lootTier = mcMMOPlayer.getFishingManager().getLootTier();
  31. double enchantChance = lootTier * AdvancedConfig.getInstance().getFishingMagicMultiplier();
  32. if (isStorming) {
  33. chanceRaining = LocaleLoader.getString("Fishing.Chance.Raining");
  34. enchantChance *= 1.1D;
  35. }
  36. String[] treasureHunterStrings = calculateAbilityDisplayValues(enchantChance);
  37. magicChance = treasureHunterStrings[0];
  38. magicChanceLucky = treasureHunterStrings[1];
  39. }
  40. // SHAKE
  41. if (canShake) {
  42. String[] shakeStrings = calculateAbilityDisplayValues(UserManager.getPlayer(player).getFishingManager().getShakeProbability());
  43. shakeChance = shakeStrings[0];
  44. shakeChanceLucky = shakeStrings[1];
  45. }
  46. // FISHERMAN'S DIET
  47. if (canFishermansDiet) {
  48. fishermansDietRank = calculateRank(Fishing.fishermansDietMaxLevel, Fishing.fishermansDietRankLevel1);
  49. }
  50. // MASTER ANGLER
  51. if (canMasterAngler) {
  52. biteChance = calculateAbilityDisplayValues(((Math.max((skillValue / 100.0), 1.0)) / (isStorming ? 300 : 500)) * 100.0)[0];
  53. }
  54. }
  55. @Override
  56. protected void permissionsCheck() {
  57. canTreasureHunt = Permissions.fishingTreasureHunter(player);
  58. canMagicHunt = Permissions.magicHunter(player);
  59. canShake = Permissions.shake(player);
  60. canFishermansDiet = Permissions.fishermansDiet(player);
  61. canMasterAngler = Permissions.masterAngler(player);
  62. }
  63. @Override
  64. protected boolean effectsHeaderPermissions() {
  65. return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
  66. }
  67. @Override
  68. protected void effectsDisplay() {
  69. luckyEffectsDisplay();
  70. if (canTreasureHunt) {
  71. player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.0"), LocaleLoader.getString("Fishing.Effect.1")));
  72. }
  73. if (canMagicHunt) {
  74. player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.2"), LocaleLoader.getString("Fishing.Effect.3")));
  75. }
  76. if (canShake) {
  77. player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.4"), LocaleLoader.getString("Fishing.Effect.5")));
  78. }
  79. if (canFishermansDiet) {
  80. player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.6"), LocaleLoader.getString("Fishing.Effect.7")));
  81. }
  82. if (canMasterAngler) {
  83. player.sendMessage(LocaleLoader.getString("Effects.Template", LocaleLoader.getString("Fishing.Effect.8"), LocaleLoader.getString("Fishing.Effect.9")));
  84. }
  85. }
  86. @Override
  87. protected boolean statsHeaderPermissions() {
  88. return canTreasureHunt || canMagicHunt || canShake || canMasterAngler || canFishermansDiet;
  89. }
  90. @Override
  91. protected void statsDisplay() {
  92. if (canMasterAngler) {
  93. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Chance", biteChance));
  94. }
  95. if (canTreasureHunt) {
  96. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Rank", lootTier));
  97. }
  98. if (canMagicHunt) {
  99. player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", magicChance) + chanceRaining + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", magicChanceLucky) : ""));
  100. }
  101. if (canShake) {
  102. int unlockLevel = AdvancedConfig.getInstance().getShakeUnlockLevel();
  103. if (skillValue < unlockLevel) {
  104. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", LocaleLoader.getString("Fishing.Ability.Locked.0", unlockLevel)));
  105. }
  106. else {
  107. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", shakeChance) + (isLucky ? LocaleLoader.getString("Perks.lucky.bonus", shakeChanceLucky) : ""));
  108. }
  109. }
  110. if (canFishermansDiet) {
  111. player.sendMessage(LocaleLoader.getString("Fishing.Ability.FD", fishermansDietRank));
  112. }
  113. }
  114. }