@Override
 public void onInteractItem(PlayerInteractEvent event) {
   final Player player = event.getPlayer();
   if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
     Block b = event.getClickedBlock();
     if (STBUtil.isCrop(b.getType())) {
       b = b.getRelative(BlockFace.DOWN);
     }
     final List<Location> l = new ArrayList<Location>();
     for (int i = -getRadius(); i <= getRadius(); i++) {
       for (int j = -getRadius(); j <= getRadius(); j++) {
         Block b1 = b.getRelative(i, 0, j);
         if (b1.getType() == Material.SOIL) {
           l.add(b1.getLocation());
         }
       }
     }
     if (!l.isEmpty()) {
       Bukkit.getScheduler()
           .runTask(
               getProviderPlugin(),
               new Runnable() {
                 @SuppressWarnings("deprecation")
                 @Override
                 public void run() {
                   for (Location loc : l) {
                     player.sendBlockChange(loc, Material.WOOL, getSaturationData(loc.getBlock()));
                   }
                 }
               });
       Bukkit.getScheduler()
           .runTaskLater(
               getProviderPlugin(),
               new Runnable() {
                 @SuppressWarnings("deprecation")
                 @Override
                 public void run() {
                   for (Location loc : l) {
                     player.sendBlockChange(
                         loc, loc.getBlock().getType(), loc.getBlock().getData());
                   }
                 }
               },
               30L);
       event.setCancelled(true);
     }
   }
 }