/** * Monitor PlayerInteract events. * * @param event The event to watch */ @EventHandler(priority = EventPriority.LOW) public void onPlayerInteract(PlayerInteractEvent event) { Player player = event.getPlayer(); Action action = event.getAction(); Block block = event.getClickedBlock(); ItemStack inHand = player.getItemInHand(); Material material; /* Fix for NPE on interacting with air */ if (block == null) { material = Material.AIR; } else { material = block.getType(); } switch (action) { case RIGHT_CLICK_BLOCK: /* REPAIR CHECKS */ if (Permissions.getInstance().repair(player) && block.getTypeId() == Config.getInstance().getRepairAnvilId()) { if (mcMMO.repairManager.isRepairable(inHand)) { mcMMO.repairManager.handleRepair(player, inHand); event.setCancelled(true); player.updateInventory(); } } /* ACTIVATION CHECKS */ if (Config.getInstance().getAbilitiesEnabled() && BlockChecks.abilityBlockCheck(block)) { if (!material.equals(Material.DIRT) && !material.equals(Material.GRASS) && !material.equals(Material.SOIL)) { Skills.activationCheck(player, SkillType.HERBALISM); } Skills.activationCheck(player, SkillType.AXES); Skills.activationCheck(player, SkillType.EXCAVATION); Skills.activationCheck(player, SkillType.MINING); Skills.activationCheck(player, SkillType.SWORDS); Skills.activationCheck(player, SkillType.UNARMED); Skills.activationCheck(player, SkillType.WOODCUTTING); } /* GREEN THUMB CHECK */ if (inHand.getType().equals(Material.SEEDS) && BlockChecks.makeMossy(block) && Permissions.getInstance().greenThumbBlocks(player)) { Herbalism.greenThumbBlocks(inHand, player, block); } /* ITEM CHECKS */ if (BlockChecks.abilityBlockCheck(block)) { Item.itemChecks(player); } /* BLAST MINING CHECK */ if (player.isSneaking() && inHand.getTypeId() == Config.getInstance().getDetonatorItemID() && Permissions.getInstance().blastMining(player)) { BlastMining.detonate(event, player, plugin); } break; case RIGHT_CLICK_AIR: /* ACTIVATION CHECKS */ if (Config.getInstance().getAbilitiesEnabled()) { Skills.activationCheck(player, SkillType.AXES); Skills.activationCheck(player, SkillType.EXCAVATION); Skills.activationCheck(player, SkillType.HERBALISM); Skills.activationCheck(player, SkillType.MINING); Skills.activationCheck(player, SkillType.SWORDS); Skills.activationCheck(player, SkillType.UNARMED); Skills.activationCheck(player, SkillType.WOODCUTTING); } /* ITEM CHECKS */ Item.itemChecks(player); /* BLAST MINING CHECK */ if (player.isSneaking() && inHand.getTypeId() == Config.getInstance().getDetonatorItemID() && Permissions.getInstance().blastMining(player)) { BlastMining.detonate(event, player, plugin); } break; case LEFT_CLICK_AIR: case LEFT_CLICK_BLOCK: /* CALL OF THE WILD CHECKS */ if (player.isSneaking()) { Material type = inHand.getType(); if (type == Material.RAW_FISH) { TamingManager tamingManager = new TamingManager(player); tamingManager.summonOcelot(); } else if (type == Material.BONE) { TamingManager tamingManager = new TamingManager(player); tamingManager.summonWolf(); } } break; default: break; } }