// Path: mod/src/main/java/zsawyer/mods/mumblelink/api/MumbleLink.java
// public interface MumbleLink extends Activateable, Debuggable {
//     public final static @Nonnull String MOD_ID = "mumblelink";
// 
//     /**
//      * the API instance which is used by this mod instance
//      * registering at this api effectively registers your manipulators with the core MumbleLink mod
//      *
//      * @return mod's API instance
//      */
//     public MumbleLinkAPI getApi();
// 
//     /**
//      * display name of the mod
//      *
//      * @return mod's name
//      */
//     public String getName();
// 
//     /**
//      * version of the mod
//      *
//      * @return mod's version
//      */
//     public String getVersion();
// }
// 
// Path: mod/src/main/java/zsawyer/mods/mumblelink/util/ConfigHelper.java
// public class ConfigHelper {
// 
//     /**
//      * short-hand function to supplement the given comment with the values
//      * supplied
//      *
//      * @param comment         the comment to be supplemented
//      * @param availableValues the values to be appended to the comment
//      * @return the compound string result
//      */
//     public static String configComment(String comment, Object[] availableValues) {
//         return comment + System.getProperty("line.separator") + "available values: "
//                 + Arrays.toString(availableValues);
//     }
// 
//     /**
//      * Short-hand function to get a {@link net.minecraftforge.common.ForgeConfigSpec.BooleanValue}, providing a comment, translation and
//      * default value. The comment will be supplemented with possible values.
//      *
//      * @param builder      a builder instance to work with
//      * @param path         an identifier for this key-value pair
//      * @param comment      a hint which will be written into the config file
//      * @param translation  the key for the translation string
//      * @param defaultValue a default value to use if it wasn't set yet
//      * @return the value read from config
//      */
//     public static ForgeConfigSpec.BooleanValue buildBoolean(ForgeConfigSpec.Builder builder, String path, String comment, String translation, boolean defaultValue) {
//         return builder
//                 .comment(ConfigHelper.configComment(comment,
//                         new Boolean[]{true, false}))
//                 .translation(translation)
//                 .define(path, defaultValue);
//     }
// }


import org.apache.commons.lang3.tuple.Pair;
import zsawyer.mods.mumblelink.api.MumbleLink;
import zsawyer.mods.mumblelink.util.ConfigHelper;
import net.minecraftforge.common.ForgeConfigSpec;
/*
 mod_MumbleLink - Positional Audio Communication for Minecraft with Mumble
 Copyright 2011-2013 zsawyer (http://sourceforge.net/users/zsawyer)

 This file is part of mod_MumbleLink
 (http://sourceforge.net/projects/modmumblelink/).

 mod_MumbleLink is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 mod_MumbleLink is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with mod_MumbleLink.  If not, see <http://www.gnu.org/licenses/>.

 */
package zsawyer.mods.mumblelink;


/**
 * utility constants class of frequently used config strings
 *
 * @author zsawyer
 */
public class Config {
    public static final ForgeConfigSpec SPEC;
    /**
     * the target Config to work with
     */
    public static final Config CONFIG;

    public static final String DEBUG_COMMENT = "whether this addon should do stuff";
    public static final String DEBUG_TRANSLATION = MumbleLink.MOD_ID + ".configgui.debug";
    public static final String DEBUG_PATH = "debug";
    public static final boolean DEBUG_DEFAULT_VALUE = false;
    public static final String ENABLED_COMMENT = "whether this addon should do stuff";
    public static final String ENABLED_TRANSLATION = MumbleLink.MOD_ID + ".configgui.enabled";
    public static final String ENABLED_PATH = "enabled";
    public static final boolean ENABLED_DEFAULT_VALUE = true;

    public final ForgeConfigSpec.BooleanValue debug;
    public final ForgeConfigSpec.BooleanValue enabled;

    static {
        final Pair<Config, ForgeConfigSpec> specPair = new ForgeConfigSpec.Builder().configure(Config::new);

        SPEC = specPair.getRight();
        CONFIG = specPair.getLeft();
    }

    Config(ForgeConfigSpec.Builder builder) {
        builder.comment("Client only settings")
                .push("client");

// Path: mod/src/main/java/zsawyer/mods/mumblelink/api/MumbleLink.java
// public interface MumbleLink extends Activateable, Debuggable {
//     public final static @Nonnull String MOD_ID = "mumblelink";
// 
//     /**
//      * the API instance which is used by this mod instance
//      * registering at this api effectively registers your manipulators with the core MumbleLink mod
//      *
//      * @return mod's API instance
//      */
//     public MumbleLinkAPI getApi();
// 
//     /**
//      * display name of the mod
//      *
//      * @return mod's name
//      */
//     public String getName();
// 
//     /**
//      * version of the mod
//      *
//      * @return mod's version
//      */
//     public String getVersion();
// }
// 
// Path: mod/src/main/java/zsawyer/mods/mumblelink/util/ConfigHelper.java
// public class ConfigHelper {
// 
//     /**
//      * short-hand function to supplement the given comment with the values
//      * supplied
//      *
//      * @param comment         the comment to be supplemented
//      * @param availableValues the values to be appended to the comment
//      * @return the compound string result
//      */
//     public static String configComment(String comment, Object[] availableValues) {
//         return comment + System.getProperty("line.separator") + "available values: "
//                 + Arrays.toString(availableValues);
//     }
// 
//     /**
//      * Short-hand function to get a {@link net.minecraftforge.common.ForgeConfigSpec.BooleanValue}, providing a comment, translation and
//      * default value. The comment will be supplemented with possible values.
//      *
//      * @param builder      a builder instance to work with
//      * @param path         an identifier for this key-value pair
//      * @param comment      a hint which will be written into the config file
//      * @param translation  the key for the translation string
//      * @param defaultValue a default value to use if it wasn't set yet
//      * @return the value read from config
//      */
//     public static ForgeConfigSpec.BooleanValue buildBoolean(ForgeConfigSpec.Builder builder, String path, String comment, String translation, boolean defaultValue) {
//         return builder
//                 .comment(ConfigHelper.configComment(comment,
//                         new Boolean[]{true, false}))
//                 .translation(translation)
//                 .define(path, defaultValue);
//     }
// }


// Path: mod/src/main/java/zsawyer/mods/mumblelink/Config.java
import org.apache.commons.lang3.tuple.Pair;
import zsawyer.mods.mumblelink.api.MumbleLink;
import zsawyer.mods.mumblelink.util.ConfigHelper;
import net.minecraftforge.common.ForgeConfigSpec;

/*
 mod_MumbleLink - Positional Audio Communication for Minecraft with Mumble
 Copyright 2011-2013 zsawyer (http://sourceforge.net/users/zsawyer)

 This file is part of mod_MumbleLink
 (http://sourceforge.net/projects/modmumblelink/).

 mod_MumbleLink is free software: you can redistribute it and/or modify
 it under the terms of the GNU Lesser General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 mod_MumbleLink is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU Lesser General Public License for more details.

 You should have received a copy of the GNU Lesser General Public License
 along with mod_MumbleLink.  If not, see <http://www.gnu.org/licenses/>.

 */
package zsawyer.mods.mumblelink;


/**
 * utility constants class of frequently used config strings
 *
 * @author zsawyer
 */
public class Config {
    public static final ForgeConfigSpec SPEC;
    /**
     * the target Config to work with
     */
    public static final Config CONFIG;

    public static final String DEBUG_COMMENT = "whether this addon should do stuff";
    public static final String DEBUG_TRANSLATION = MumbleLink.MOD_ID + ".configgui.debug";
    public static final String DEBUG_PATH = "debug";
    public static final boolean DEBUG_DEFAULT_VALUE = false;
    public static final String ENABLED_COMMENT = "whether this addon should do stuff";
    public static final String ENABLED_TRANSLATION = MumbleLink.MOD_ID + ".configgui.enabled";
    public static final String ENABLED_PATH = "enabled";
    public static final boolean ENABLED_DEFAULT_VALUE = true;

    public final ForgeConfigSpec.BooleanValue debug;
    public final ForgeConfigSpec.BooleanValue enabled;

    static {
        final Pair<Config, ForgeConfigSpec> specPair = new ForgeConfigSpec.Builder().configure(Config::new);

        SPEC = specPair.getRight();
        CONFIG = specPair.getLeft();
    }

    Config(ForgeConfigSpec.Builder builder) {
        builder.comment("Client only settings")
                .push("client");

        debug = ConfigHelper.buildBoolean(builder, DEBUG_PATH, DEBUG_COMMENT, DEBUG_TRANSLATION, DEBUG_DEFAULT_VALUE);