|
@@ -245,12 +245,11 @@ public class BlockListener implements Listener {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Monitor BlockDamage events.
|
|
|
+ * Handle BlockDamage events where the event is modified.
|
|
|
*
|
|
|
- * @param event The event to monitor
|
|
|
+ * @param event The event to modify
|
|
|
*/
|
|
|
- @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
|
- public void onBlockDamage(BlockDamageEvent event) {
|
|
|
+ public void onBlockDamageHigher(BlockDamageEvent event) {
|
|
|
if (event instanceof FakeBlockDamageEvent) {
|
|
|
return;
|
|
|
}
|
|
@@ -262,9 +261,7 @@ public class BlockListener implements Listener {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- ItemStack heldItem = player.getItemInHand();
|
|
|
Block block = event.getBlock();
|
|
|
- Material material = block.getType();
|
|
|
|
|
|
/*
|
|
|
* ABILITY PREPARATION CHECKS
|
|
@@ -272,6 +269,8 @@ public class BlockListener implements Listener {
|
|
|
* We check permissions here before processing activation.
|
|
|
*/
|
|
|
if (BlockChecks.canActivateAbilities(block)) {
|
|
|
+ ItemStack heldItem = player.getItemInHand();
|
|
|
+
|
|
|
if (profile.getToolPreparationMode(ToolType.HOE) && ItemChecks.isHoe(heldItem) && (BlockChecks.canBeGreenTerra(block) || BlockChecks.canMakeMossy(block)) && Permissions.greenTerra(player)) {
|
|
|
Skills.abilityCheck(player, SkillType.HERBALISM);
|
|
|
}
|
|
@@ -284,7 +283,7 @@ public class BlockListener implements Listener {
|
|
|
else if (profile.getToolPreparationMode(ToolType.SHOVEL) && ItemChecks.isShovel(heldItem) && BlockChecks.canBeGigaDrillBroken(block) && Permissions.gigaDrillBreaker(player)) {
|
|
|
Skills.abilityCheck(player, SkillType.EXCAVATION);
|
|
|
}
|
|
|
- else if (profile.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockChecks.canBeGigaDrillBroken(block) || material.equals(Material.SNOW)) && Permissions.berserk(player)) {
|
|
|
+ else if (profile.getToolPreparationMode(ToolType.FISTS) && heldItem.getType() == Material.AIR && (BlockChecks.canBeGigaDrillBroken(block) || block.getType().equals(Material.SNOW)) && Permissions.berserk(player)) {
|
|
|
Skills.abilityCheck(player, SkillType.UNARMED);
|
|
|
}
|
|
|
}
|
|
@@ -297,6 +296,28 @@ public class BlockListener implements Listener {
|
|
|
if (mcMMO.spoutEnabled && profile.getAbilityMode(AbilityType.TREE_FELLER) && BlockChecks.isLog(block)) {
|
|
|
SpoutSounds.playSoundForPlayer(SoundEffect.FIZZ, player, block.getLocation());
|
|
|
}
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Monitor BlockDamage events.
|
|
|
+ *
|
|
|
+ * @param event The event to watch
|
|
|
+ */
|
|
|
+ @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
|
|
|
+ public void onBlockDamage(BlockDamageEvent event) {
|
|
|
+ if (event instanceof FakeBlockDamageEvent) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ Player player = event.getPlayer();
|
|
|
+ PlayerProfile profile = Users.getProfile(player);
|
|
|
+
|
|
|
+ if (Misc.isNPCPlayer(player, profile)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ItemStack heldItem = player.getItemInHand();
|
|
|
+ Block block = event.getBlock();
|
|
|
|
|
|
/*
|
|
|
* ABILITY TRIGGER CHECKS
|