MiningManager.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147
  1. package com.gmail.nossr50.skills.mining;
  2. import org.bukkit.Material;
  3. import org.bukkit.block.Block;
  4. import org.bukkit.entity.Player;
  5. import org.bukkit.event.entity.EntityDamageEvent;
  6. import org.bukkit.event.entity.EntityExplodeEvent;
  7. import org.bukkit.event.entity.ExplosionPrimeEvent;
  8. import org.bukkit.event.player.PlayerInteractEvent;
  9. import com.gmail.nossr50.mcMMO;
  10. import com.gmail.nossr50.skills.SkillManager;
  11. import com.gmail.nossr50.skills.utilities.SkillType;
  12. import com.gmail.nossr50.util.Misc;
  13. import com.gmail.nossr50.util.Permissions;
  14. public class MiningManager extends SkillManager{
  15. public MiningManager (Player player) {
  16. super(player, SkillType.MINING);
  17. }
  18. /**
  19. * Detonate TNT for Blast Mining
  20. *
  21. * @param event The PlayerInteractEvent
  22. */
  23. public void detonate(PlayerInteractEvent event) {
  24. if (skillLevel < BlastMining.rank1) {
  25. return;
  26. }
  27. RemoteDetonationEventHandler eventHandler = new RemoteDetonationEventHandler(this, event);
  28. eventHandler.targetTNT();
  29. if (eventHandler.block.getType() != Material.TNT) {
  30. return;
  31. }
  32. if (!Misc.blockBreakSimulate(eventHandler.block, player, true)) {
  33. return;
  34. }
  35. if (!eventHandler.cooldownOver()) {
  36. return;
  37. }
  38. eventHandler.sendMessages();
  39. eventHandler.handleDetonation();
  40. eventHandler.setProfileData();
  41. }
  42. /**
  43. * Handler for explosion drops and XP gain.
  44. *
  45. * @param event Event whose explosion is being processed
  46. */
  47. public void blastMiningDropProcessing(EntityExplodeEvent event) {
  48. if (Misc.isNPCPlayer(player)) {
  49. return;
  50. }
  51. if (skillLevel < BlastMining.rank1) {
  52. return;
  53. }
  54. BlastMiningDropEventHandler eventHandler = new BlastMiningDropEventHandler(this, event);
  55. eventHandler.sortExplosionBlocks();
  56. eventHandler.modifyEventYield();
  57. eventHandler.calcuateDropModifiers();
  58. eventHandler.processDroppedBlocks();
  59. eventHandler.processXPGain();
  60. }
  61. /**
  62. * Decreases damage dealt by the explosion from TNT activated by Blast Mining.
  63. *
  64. * @param event Event whose explosion damage is being reduced
  65. */
  66. public void demolitionsExpertise(EntityDamageEvent event) {
  67. DemoltionsExpertiseEventHandler eventHandler = new DemoltionsExpertiseEventHandler(this, event);
  68. eventHandler.calculateDamageModifier();
  69. eventHandler.modifyEventDamage();
  70. }
  71. /**
  72. * Increases the blast radius of the explosion.
  73. *
  74. * @param event Event whose explosion radius is being changed
  75. */
  76. public void biggerBombs(ExplosionPrimeEvent event) {
  77. if (Misc.isNPCPlayer(player)) {
  78. return;
  79. }
  80. BiggerBombsEventHandler eventHandler = new BiggerBombsEventHandler(this, event);
  81. eventHandler.calculateRadiusIncrease();
  82. eventHandler.modifyBlastRadius();
  83. }
  84. /**
  85. * Process Mining block drops.
  86. *
  87. * @param block The block being broken
  88. */
  89. public void miningBlockCheck(Block block) {
  90. MiningBlockEventHandler eventHandler = new MiningBlockEventHandler(this, block);
  91. eventHandler.processXPGain();
  92. if (!Permissions.miningDoubleDrops(player)) {
  93. return;
  94. }
  95. float chance = ((float) Mining.doubleDropsMaxChance / Mining.doubleDropsMaxLevel) * eventHandler.skillModifier;
  96. if (chance > Misc.getRandom().nextInt(activationChance)) {
  97. eventHandler.processDrops();
  98. }
  99. }
  100. /**
  101. * Handle the Super Breaker ability.
  102. *
  103. * @param block The block being affected
  104. */
  105. public void superBreakerBlockCheck(Block block) {
  106. if (mcMMO.placeStore.isTrue(block) || !Misc.blockBreakSimulate(block, player, true)) {
  107. return;
  108. }
  109. SuperBreakerEventHandler eventHandler = new SuperBreakerEventHandler(this, block);
  110. if (!eventHandler.tierCheck()) {
  111. return;
  112. }
  113. eventHandler.callFakeArmswing();
  114. eventHandler.processDurabilityLoss();
  115. eventHandler.processDropsAndXP();
  116. eventHandler.playSound();
  117. }
  118. }