@Override
    public boolean execute(SimpleTowns plugin, CommandSender sender, String commandLabel, String[] args) {
        final Localisation localisation = plugin.getLocalisation();

        final Town town;

        if (args.length == 0) {
            if (sender instanceof Player) {
                final Player player = (Player) sender;
                town = plugin.getTown(player.getLocation().getChunk());

                if (town == null) {
                    sender.sendMessage(localisation.get(LocalisationEntry.ERR_SPECIFY_TOWN_NAME));
                    return true;
                }
            } else {
                sender.sendMessage(localisation.get(LocalisationEntry.ERR_SPECIFY_TOWN_NAME));
                return true;
            }
        } else {
            town = plugin.getTown(args[0]);
        }

        if (town == null) {
            sender.sendMessage(localisation.get(LocalisationEntry.ERR_TOWN_NOT_FOUND, args[0]));
            return true;
        }

        // Display chunk information
        // TODO paginate - see ChatPaginator bukkit utility class
        sender.sendMessage(localisation.get(LocalisationEntry.INFO_HEADER, town.getName()));
        sender.sendMessage(localisation.get(LocalisationEntry.INFO_TOWN_CHUNKS, town.getTownChunks().size()));
        for (TownChunk tc : town.getTownChunks()) {
            sender.sendMessage(localisation.get(LocalisationEntry.INFO_TOWN_CHUNKS_ENTRY, tc.getWorldname(), tc.getX(), tc.getZ()));
        }

        return true;
    }