private void loadChannels() {
        channels.clear();
        ConfigurationSection section = config
                .getConfigurationSection("channels");
        if(section == null) {
            return;
        }
        for(String channelName : section.getKeys(false)) {
            final String tag = section.getString(channelName + ".tag");
            if(tag == null) {
                plugin.getLogger().warning(
                        "Missing tag for channel '" + channelName
                                + "' in world '" + worldName + "'");
                continue;
            }
            final Channel channel = new Channel(tag, channelName, worldName);
            /**
             * get channel settings
             */
            // local
            boolean localUse = section.getBoolean(channelName + ".local.use",
                    false);
            int localRadius = section
                    .getInt(channelName + ".local.radius", 100);
            if(localRadius <= 0) {
                localRadius = 100;
            }
            channel.setLocal(localUse);
            channel.setRadius(localRadius);
            // nobody
            boolean nobodyUse = section.getBoolean(channelName + ".nobody.use",
                    this.nobodyUse);
            String nobodyString = section.getString(channelName
                    + ".nobody.message", this.nobodyString);
            channel.setNobody(nobodyUse);
            channel.setNobodyString(nobodyString);
            // Formatter
            boolean formatterUse = section.getBoolean(channelName
                    + ".formatter.use", this.formatterUse);
            String formatterString = section.getString(channelName
                    + ".formatter.format", this.formatterString);
            channel.setFormat(formatterUse);
            channel.setFormatterString(formatterString);
            // Autojoin
            boolean auto = section.getBoolean(channelName + ".autojoin", false);
            channel.setAutoJoin(auto);
            // world players
            boolean worldPlayers = section.getBoolean(channelName
                    + ".includeLocalWorldPlayers", false);
            channel.setIncludeWorldPlayers(worldPlayers);
            // Register permissions
            String permissionJoin = section.getString(channelName
                    + ".permission.join", "WorldChannels." + worldName + "."
                    + channelName + ".join");
            String permissionLeave = section.getString(channelName
                    + ".permission.leave", "WorldChannels." + worldName + "."
                    + channelName + ".leave");
            String permissionKick = section.getString(channelName
                    + ".permission.kick", "WorldChannels." + worldName + "."
                    + channelName + ".kick");
            String permissionMute = section.getString(channelName
                    + ".permission.mute", "WorldChannels." + worldName + "."
                    + channelName + ".mute");
            channel.setPermissionJoin(permissionJoin);
            channel.setPermissionLeave(permissionLeave);
            channel.setPermissionMute(permissionMute);
            channel.setPermissionKick(permissionKick);
            try {
                plugin.getServer().getPluginManager()
                        .addPermission(new Permission(permissionJoin));
            } catch(IllegalArgumentException e) {
                // Ignore
            }
            try {
                plugin.getServer().getPluginManager()
                        .addPermission(new Permission(permissionLeave));
            } catch(IllegalArgumentException e) {
                // Ignore
            }
            try {
                plugin.getServer().getPluginManager()
                        .addPermission(new Permission(permissionMute));
            } catch(IllegalArgumentException e) {
                // Ignore
            }
            try {
                plugin.getServer().getPluginManager()
                        .addPermission(new Permission(permissionKick));
            } catch(IllegalArgumentException e) {
                // Ignore
            }
            // set default Channel
            if(section.getBoolean(channelName + ".default", false)) {
                defaultChannel = channel;
            }
            // Add channel
            channels.put(channelName, channel);
        }
    }