MiningCommand.java 8.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. package com.gmail.nossr50.commands.skills;
  2. import java.text.DecimalFormat;
  3. import org.bukkit.ChatColor;
  4. import com.gmail.nossr50.commands.SkillCommand;
  5. import com.gmail.nossr50.config.AdvancedConfig;
  6. import com.gmail.nossr50.config.Config;
  7. import com.gmail.nossr50.datatypes.SkillType;
  8. import com.gmail.nossr50.locale.LocaleLoader;
  9. import com.gmail.nossr50.util.Misc;
  10. import com.gmail.nossr50.util.Permissions;
  11. public class MiningCommand extends SkillCommand {
  12. AdvancedConfig advancedConfig = AdvancedConfig.getInstance();
  13. private String doubleDropChance;
  14. private String superBreakerLength;
  15. private String blastMiningRank;
  16. private String blastRadiusIncrease;
  17. private String blastDamageDecrease;
  18. private int blastMiningRank1 = advancedConfig.getBlastMiningRank1();
  19. private int blastMiningRank2 = advancedConfig.getBlastMiningRank2();
  20. private int blastMiningRank3 = advancedConfig.getBlastMiningRank3();
  21. private int blastMiningRank4 = advancedConfig.getBlastMiningRank4();
  22. private int blastMiningRank5 = advancedConfig.getBlastMiningRank5();
  23. private int blastMiningRank6 = advancedConfig.getBlastMiningRank6();
  24. private int blastMiningRank7 = advancedConfig.getBlastMiningRank7();
  25. private int blastMiningRank8 = advancedConfig.getBlastMiningRank8();
  26. private double doubleDropsMaxBonus = advancedConfig.getMiningDoubleDropChance();
  27. private int doubleDropsMaxLevel = advancedConfig.getMiningDoubleDropMaxLevel();
  28. public int abilityLengthIncreaseLevel = advancedConfig.getAbilityLength();
  29. private boolean canSuperBreaker;
  30. private boolean canDoubleDrop;
  31. private boolean canBlast;
  32. private boolean canBiggerBombs;
  33. private boolean canDemoExpert;
  34. private boolean doubleDropsDisabled;
  35. private boolean lucky;
  36. public MiningCommand() {
  37. super(SkillType.MINING);
  38. }
  39. @Override
  40. protected void dataCalculations() {
  41. DecimalFormat df = new DecimalFormat("0.0");
  42. superBreakerLength = String.valueOf(2 + (int) ((double) skillValue / (double) abilityLengthIncreaseLevel));
  43. if(skillValue >= doubleDropsMaxLevel) doubleDropChance = df.format(doubleDropsMaxBonus);
  44. else doubleDropChance = df.format((doubleDropsMaxBonus / doubleDropsMaxLevel) * skillValue);
  45. if (skillValue >= blastMiningRank8) {
  46. blastMiningRank = "8";
  47. blastDamageDecrease = "100.00%";
  48. blastRadiusIncrease = "4";
  49. }
  50. else if (skillValue >= blastMiningRank7) {
  51. blastMiningRank = "7";
  52. blastDamageDecrease = "50.00%";
  53. blastRadiusIncrease = "3";
  54. }
  55. else if (skillValue >= blastMiningRank6) {
  56. blastMiningRank = "6";
  57. blastDamageDecrease = "50.00%";
  58. blastRadiusIncrease = "3";
  59. }
  60. else if (skillValue >= blastMiningRank5) {
  61. blastMiningRank = "5";
  62. blastDamageDecrease = "25.00%";
  63. blastRadiusIncrease = "2";
  64. }
  65. else if (skillValue >= blastMiningRank4) {
  66. blastMiningRank = "4";
  67. blastDamageDecrease = "25.00%";
  68. blastRadiusIncrease = "2";
  69. }
  70. else if (skillValue >= blastMiningRank3) {
  71. blastMiningRank = "3";
  72. blastDamageDecrease = "0.00%";
  73. blastRadiusIncrease = "1";
  74. }
  75. else if (skillValue >= blastMiningRank2) {
  76. blastMiningRank = "2";
  77. blastDamageDecrease = "0.00%";
  78. blastRadiusIncrease = "1";
  79. }
  80. else if (skillValue >= blastMiningRank1) {
  81. blastMiningRank = "1";
  82. blastDamageDecrease = "0.00%";
  83. blastRadiusIncrease = "0";
  84. }
  85. else {
  86. blastMiningRank = "0";
  87. blastDamageDecrease = "0.00%";
  88. blastRadiusIncrease = "0";
  89. }
  90. }
  91. @Override
  92. protected void permissionsCheck() {
  93. Config configInstance = Config.getInstance();
  94. canBiggerBombs = Permissions.biggerBombs(player);
  95. canBlast = Permissions.blastMining(player);
  96. canDemoExpert = Permissions.demolitionsExpertise(player);
  97. canDoubleDrop = Permissions.miningDoubleDrops(player);
  98. canSuperBreaker = Permissions.superBreaker(player);
  99. doubleDropsDisabled = configInstance.miningDoubleDropsDisabled();
  100. lucky = Permissions.luckyMining(player);
  101. }
  102. @Override
  103. protected boolean effectsHeaderPermissions() {
  104. return canBiggerBombs || canBlast || canDemoExpert || (canDoubleDrop && !doubleDropsDisabled) || canSuperBreaker;
  105. }
  106. @Override
  107. protected void effectsDisplay() {
  108. if (lucky) {
  109. String perkPrefix = ChatColor.RED + "[mcMMO Perks] ";
  110. player.sendMessage(perkPrefix + LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Perks.lucky.name"), LocaleLoader.getString("Perks.lucky.desc", new Object[] { "Mining" }) }));
  111. }
  112. if (canSuperBreaker) {
  113. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Mining.Effect.0"), LocaleLoader.getString("Mining.Effect.1") }));
  114. }
  115. if (canDoubleDrop && !doubleDropsDisabled) {
  116. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Mining.Effect.2"), LocaleLoader.getString("Mining.Effect.3") }));
  117. }
  118. if (canBlast) {
  119. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Mining.Effect.4"), LocaleLoader.getString("Mining.Effect.5") }));
  120. }
  121. if (canBiggerBombs) {
  122. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Mining.Effect.6"), LocaleLoader.getString("Mining.Effect.7") }));
  123. }
  124. if (canDemoExpert) {
  125. player.sendMessage(LocaleLoader.getString("Effects.Template", new Object[] { LocaleLoader.getString("Mining.Effect.8"), LocaleLoader.getString("Mining.Effect.9") }));
  126. }
  127. }
  128. @Override
  129. protected boolean statsHeaderPermissions() {
  130. return canBiggerBombs || canBlast || canDemoExpert || (canDoubleDrop && !doubleDropsDisabled) || canSuperBreaker;
  131. }
  132. @Override
  133. protected void statsDisplay() {
  134. if (canDoubleDrop && !doubleDropsDisabled) {
  135. player.sendMessage(LocaleLoader.getString("Mining.Effect.DropChance", new Object[] { doubleDropChance }));
  136. }
  137. if (canSuperBreaker) {
  138. player.sendMessage(LocaleLoader.getString("Mining.Ability.Length", new Object[] { superBreakerLength }));
  139. }
  140. if (canBlast) {
  141. if (skillValue < blastMiningRank1) {
  142. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", new Object[] { LocaleLoader.getString("Mining.Ability.Locked.0", new Object[] { blastMiningRank1 }) }));
  143. }
  144. else {
  145. player.sendMessage(LocaleLoader.getString("Mining.Blast.Rank", new Object[] { blastMiningRank, LocaleLoader.getString("Mining.Blast.Effect." + (Misc.getInt(blastMiningRank) - 1)) }));
  146. }
  147. }
  148. if (canBiggerBombs) {
  149. if (skillValue < blastMiningRank2) {
  150. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", new Object[] { LocaleLoader.getString("Mining.Ability.Locked.1", new Object[] { blastMiningRank2 }) }));
  151. }
  152. else {
  153. player.sendMessage(LocaleLoader.getString("Mining.Blast.Radius.Increase", new Object[] { blastRadiusIncrease }));
  154. }
  155. }
  156. if (canDemoExpert) {
  157. if (skillValue < blastMiningRank4) {
  158. player.sendMessage(LocaleLoader.getString("Ability.Generic.Template.Lock", new Object[] { LocaleLoader.getString("Mining.Ability.Locked.2", new Object[] { blastMiningRank4 }) }));
  159. }
  160. else {
  161. player.sendMessage(LocaleLoader.getString("Mining.Effect.Decrease", new Object[] { blastDamageDecrease }));
  162. }
  163. }
  164. }
  165. }