/** @param blockState The {@link BlockState} to check ability activation for */ public void herbalismBlockCheck(BlockState blockState) { Player player = getPlayer(); Material material = blockState.getType(); boolean oneBlockPlant = !(material == Material.CACTUS || material == Material.SUGAR_CANE_BLOCK); if (oneBlockPlant && mcMMO.getPlaceStore().isTrue(blockState)) { return; } if (!canBlockCheck()) { return; } Collection<ItemStack> drops = null; int amount = 1; int xp; boolean greenTerra = mcMMOPlayer.getAbilityMode(skill.getAbility()); if (mcMMO.getModManager().isCustomHerbalismBlock(blockState)) { CustomBlock customBlock = mcMMO.getModManager().getBlock(blockState); xp = customBlock.getXpGain(); if (Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS) && customBlock.isDoubleDropEnabled()) { drops = blockState.getBlock().getDrops(); } } else { if (Permissions.greenThumbPlant(player, material)) { processGreenThumbPlants(blockState, greenTerra); } xp = ExperienceConfig.getInstance().getXp(skill, material); if (Config.getInstance().getDoubleDropsEnabled(skill, material) && Permissions.secondaryAbilityEnabled(player, SecondaryAbility.HERBALISM_DOUBLE_DROPS)) { drops = blockState.getBlock().getDrops(); } if (!oneBlockPlant) { amount = Herbalism.calculateCatciAndSugarDrops(blockState); xp *= amount; } } applyXpGain(xp); if (drops == null) { return; } for (int i = greenTerra ? 2 : 1; i != 0; i--) { if (SkillUtils.activationSuccessful( SecondaryAbility.HERBALISM_DOUBLE_DROPS, getPlayer(), getSkillLevel(), activationChance)) { for (ItemStack item : drops) { Misc.dropItems(blockState.getLocation(), item, amount); } } } }