| 
					
				 | 
			
			
				@@ -3,6 +3,7 @@ package com.gmail.nossr50.skills.mining; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.api.ItemSpawnReason; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.config.experience.ExperienceConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.datatypes.experience.XPGainReason; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.gmail.nossr50.datatypes.experience.XPGainSource; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.datatypes.interactions.NotificationType; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.datatypes.player.McMMOPlayer; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.gmail.nossr50.datatypes.skills.PrimarySkillType; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -35,8 +36,8 @@ import static com.gmail.nossr50.util.Misc.getBlockCenter; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 public class MiningManager extends SkillManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public static final String BUDDING_AMETHYST = "budding_amethyst"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    public static final Collection<Material> BLAST_MINING_BLACKLIST = Set.of(Material.SPAWNER, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final String BUDDING_AMETHYST = "budding_amethyst"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private static final Collection<Material> BLAST_MINING_BLACKLIST = Set.of(Material.SPAWNER, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Material.INFESTED_COBBLESTONE, Material.INFESTED_DEEPSLATE, Material.INFESTED_STONE, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Material.INFESTED_STONE_BRICKS, Material.INFESTED_CRACKED_STONE_BRICKS, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Material.INFESTED_CHISELED_STONE_BRICKS, Material.INFESTED_MOSSY_STONE_BRICKS); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -52,7 +53,8 @@ public class MiningManager extends SkillManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!RankUtils.hasUnlockedSubskill(getPlayer(), SubSkillType.MINING_DEMOLITIONS_EXPERTISE)) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        return getSkillLevel() >= BlastMining.getDemolitionExpertUnlockLevel() && Permissions.demolitionsExpertise(getPlayer()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return getSkillLevel() >= BlastMining.getDemolitionExpertUnlockLevel() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                && Permissions.demolitionsExpertise(getPlayer()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public boolean canDetonate() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -156,8 +158,8 @@ public class MiningManager extends SkillManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * Detonate TNT for Blast Mining 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void remoteDetonation() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Player player = getPlayer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        Block targetBlock = player.getTargetBlock(BlockUtils.getTransparentBlocks(), BlastMining.MAXIMUM_REMOTE_DETONATION_DISTANCE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final Player player = getPlayer(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final Block targetBlock = player.getTargetBlock(BlockUtils.getTransparentBlocks(), BlastMining.MAXIMUM_REMOTE_DETONATION_DISTANCE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //Blast mining cooldown check needs to be first so the player can be messaged 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!blastMiningCooldownOver() 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -166,7 +168,7 @@ public class MiningManager extends SkillManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        final TNTPrimed tnt = player.getWorld().spawn(targetBlock.getLocation(), TNTPrimed.class); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         NotificationManager.sendPlayerInformation(player, NotificationType.SUPER_ABILITY, "Mining.Blast.Boom"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -267,7 +269,7 @@ public class MiningManager extends SkillManager { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // Replace the event blocklist with the newYield list 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         event.setYield(0F); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        applyXpGain(xp, XPGainReason.PVE); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        applyXpGain(xp, XPGainReason.PVE, XPGainSource.SELF); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 |