@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
    public void onBlockFromTo(BlockFromToEvent event) {
        String world = event.getToBlock().getWorld().getName();
        Long from = plugin.hashLocation(event.getBlock().getLocation());
        Long to = plugin.hashLocation(event.getToBlock().getLocation());
        if (plugin.frozenBlocks.get(world).contains(from)) {
            //If block is frozen, CANCEL EVENT
            event.setCancelled(true);
        } else if (plugin.config.BLOCK_WATER_DESTROY_LIST.contains(event.getToBlock().getType())){
            //If TO is in blocked list, cancel event
            event.setCancelled(true);
        } else if (!plugin.canFlowInRegion(event.getBlock(), event.getToBlock())) {
            //If all regions in FROM do NOT match all regions in TO, cancel event
            event.setCancelled(true);
        } else if (plugin.frozenBlocks.get(world).contains(to)){
            plugin.delFrozen(event.getToBlock().getLocation());
        }
    }