FishingCommand.java 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138
  1. package com.gmail.nossr50.commands.skills;
  2. import com.gmail.nossr50.commands.SkillCommand;
  3. import com.gmail.nossr50.config.AdvancedConfig;
  4. import com.gmail.nossr50.datatypes.SkillType;
  5. import com.gmail.nossr50.locale.LocaleLoader;
  6. import com.gmail.nossr50.skills.gathering.Fishing;
  7. import com.gmail.nossr50.util.Permissions;
  8. import com.gmail.nossr50.util.Skills;
  9. public class FishingCommand extends SkillCommand {
  10. AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
  11. private int lootTier;
  12. private String magicChance;
  13. private String magicChanceLucky;
  14. private String chanceRaining;
  15. private int shakeUnlockLevel;
  16. private String shakeChance;
  17. private String shakeChanceLucky;
  18. private String fishermansDietRank;
  19. private int magicHunterMultiplier = advancedConfig.getFishingMagicMultiplier();
  20. private int fishermansDietRankChange = advancedConfig.getFarmerDietRankChange();
  21. private int fishermansDietRankMaxLevel = fishermansDietRankChange * 5;
  22. private boolean canTreasureHunt;
  23. private boolean canMagicHunt;
  24. private boolean canShake;
  25. private boolean canFishermansDiet;
  26. private boolean lucky;
  27. private boolean raining;
  28. public FishingCommand() {
  29. super(SkillType.FISHING);
  30. }
  31. @Override
  32. protected void dataCalculations() {
  33. raining = player.getWorld().hasStorm();
  34. chanceRaining = "";
  35. //Treasure Hunter
  36. lootTier = Fishing.getFishingLootTier(profile);
  37. double magicChanceD = lootTier * magicHunterMultiplier;
  38. if (raining) {
  39. chanceRaining = LocaleLoader.getString("Fishing.Chance.Raining");
  40. magicChanceD = magicChanceD * 1.1D;
  41. }
  42. magicChance = percent.format(magicChanceD / 100D);
  43. if (magicChanceD * 1.3333D >= 100D) magicChanceLucky = percent.format(1D);
  44. else magicChanceLucky = percent.format(magicChanceD * 1.3333D / 100D);
  45. //Shake
  46. int dropChance = Fishing.getShakeChance(lootTier);
  47. shakeChance = percent.format(dropChance / 100D);
  48. if (dropChance * 1.3333D >= 100D) shakeChanceLucky = percent.format(1D);
  49. else shakeChanceLucky = percent.format(dropChance * 1.3333D / 100D);
  50. shakeUnlockLevel = advancedConfig.getShakeUnlockLevel();
  51. //Fishermans Diet
  52. if (skillValue >= fishermansDietRankMaxLevel) fishermansDietRank = "5";
  53. else fishermansDietRank = String.valueOf((int) ((double) skillValue / (double) fishermansDietRankChange));
  54. }
  55. @Override
  56. protected void permissionsCheck() {
  57. canTreasureHunt = Permissions.fishingTreasures(player);
  58. canMagicHunt = Permissions.fishingMagic(player);
  59. canShake = Permissions.shakeMob(player);
  60. canFishermansDiet = Permissions.fishermansDiet(player);
  61. lucky = Permissions.luckyFishing(player);
  62. }
  63. @Override
  64. protected boolean effectsHeaderPermissions() {
  65. return canTreasureHunt || canMagicHunt || canShake;
  66. }
  67. @Override
  68. protected void effectsDisplay() {
  69. if (lucky) {
  70. String perkPrefix = LocaleLoader.getString("MOTD.PerksPrefix");
  71. player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { Skills.localizeSkillName(SkillType.FISHING) }) }));
  72. }
  73. if (canTreasureHunt) {
  74. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Fishing.Effect.0"), LocaleLoader.getString("Fishing.Effect.1") }));
  75. }
  76. if (canMagicHunt) {
  77. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Fishing.Effect.2"), LocaleLoader.getString("Fishing.Effect.3") }));
  78. }
  79. if (canShake) {
  80. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Fishing.Effect.4"), LocaleLoader.getString("Fishing.Effect.5") }));
  81. }
  82. if (canFishermansDiet) {
  83. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Fishing.Effect.6"), LocaleLoader.getString("Fishing.Effect.7") }));
  84. }
  85. }
  86. @Override
  87. protected boolean statsHeaderPermissions() {
  88. return canTreasureHunt || canMagicHunt || canShake;
  89. }
  90. @Override
  91. protected void statsDisplay() {
  92. if (canTreasureHunt) {
  93. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Rank", new Object[] { lootTier }));
  94. }
  95. if (canMagicHunt) {
  96. if (lucky)
  97. player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", new Object[] { magicChance}) + chanceRaining + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { magicChanceLucky }));
  98. else
  99. player.sendMessage(LocaleLoader.getString("Fishing.Enchant.Chance", new Object[] { magicChance}) + chanceRaining);
  100. }
  101. if (canShake) {
  102. if (skillValue < advancedConfig.getShakeUnlockLevel()) {
  103. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", new Object[] { LocaleLoader.getString("Fishing.Ability.Locked.0", new Object[] { shakeUnlockLevel }) }));
  104. }
  105. else {
  106. if (lucky)
  107. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", new Object[] { shakeChance }) + LocaleLoader.getString("Perks.lucky.bonus", new Object[] { shakeChanceLucky }));
  108. else
  109. player.sendMessage(LocaleLoader.getString("Fishing.Ability.Shake", new Object[] { shakeChance }));
  110. }
  111. }
  112. if (canFishermansDiet) {
  113. player.sendMessage(LocaleLoader.getString("Fishing.Ability.FD", new Object[] { fishermansDietRank }));
  114. }
  115. }
  116. }