Package micdoodle8.mods.galacticraft.core.energy

Source Code of micdoodle8.mods.galacticraft.core.energy.EnergyConfigHandler

package micdoodle8.mods.galacticraft.core.energy;

import cpw.mods.fml.common.Loader;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasRegistry;
import net.minecraftforge.common.config.Configuration;

import java.io.File;

/**
* The Universal Electricity compatibility module allows your mod to be
* compatible with most major power systems in Minecraft.
*
* @author Calclavia, Micdoodle
*/
public class EnergyConfigHandler
{
    private static Configuration config;

    /**
     * Ratio of Build craft(MJ) energy to Galacticraft energy(kJ).
     * Multiply BC3 energy by this to convert to kJ.
     */
    public static float BC3_RATIO = 16F;

    //Note on energy equivalence:
    //
    //In BuildCraft, 1 lump of coal produces 1600 MJ (Minecraft Joules)
    //in a Stirling Engine.  This is by design: coal has 1600 ticks burn time
    //in a vanilla Furnace, which corresponds with 1600 MJ in BuildCraft.
    //
    //In Galacticraft, 1 lump of coal produces 38,400 gJ
    //in a coal generator operating at 100% hull heat (less efficient at lower hull heats).

    //If 1600 MJ = 38,400 gJ then strictly 1 MJ = 24 gJ.
    //But, that feels imbalanced - for example redstone engines make too much gJ if the ratio is 24.
    //So, the BC conversion ratio is set at 16.
    //Think of it as the Galacticraft coal generator at full heat turning coal into
    //electrical energy 50% more efficiently than BuildCraft's Stirling Engine can.

    /**
     * Ratio of RF energy to Galacticraft energy(kJ).
     * Multiply TE energy by this to convert to kJ.
     */
    public static float TE_RATIO = EnergyConfigHandler.BC3_RATIO / 10F;

    /**
     * Ratio of IC2 energy (EU) to Galacticraft energy(kJ).
     * Multiply IC2 power by this to convert to kJ.
     */
    public static float IC2_RATIO = EnergyConfigHandler.BC3_RATIO / 2.44F;

    public static float MEKANISM_RATIO = EnergyConfigHandler.IC2_RATIO / 10F;

    /**
     * Convert kJ back to Buildcraft MJ
     */
    public static float TO_BC_RATIO = 1 / EnergyConfigHandler.BC3_RATIO;

    /**
     * Convert kJ back to TE3 RF
     */
    public static float TO_TE_RATIO = 1 / EnergyConfigHandler.TE_RATIO;

    /**
     * Convert kJ back to IC2 EU
     */
    public static float TO_IC2_RATIO = 1 / EnergyConfigHandler.IC2_RATIO;

    public static float TO_MEKANISM_RATIO = 1 / EnergyConfigHandler.MEKANISM_RATIO;

    /**
     * Oxygen gas used when Mekanism is loaded. Always null otherwise.
     */
    public static Object gasOxygen = null;
    public static Object gasHydrogen = null;
   
    public static boolean displayEnergyUnitsBC = false;
    public static boolean displayEnergyUnitsIC2 = false;
    public static boolean displayEnergyUnitsMek = false;
    public static boolean displayEnergyUnitsRF = false;

    private static boolean cachedIC2Loaded = false;
    private static boolean cachedIC2LoadedValue = false;
    private static boolean cachedBCLoaded = false;
    private static boolean cachedBCLoadedValue = false;
    private static boolean cachedBCReallyLoaded = false;
    private static boolean cachedBCReallyLoadedValue = false;
    private static int cachedBCVersion = -1;
    private static boolean cachedMekLoaded = false;
    private static boolean cachedMekLoadedValue = false;


    /**
     * You must call this function to enable the Universal Network module.
     */
    public static void setDefaultValues(File file)
    {
        if (EnergyConfigHandler.config == null)
        {
            EnergyConfigHandler.config = new Configuration(file);
        }

        EnergyConfigHandler.config.load();
        EnergyConfigHandler.IC2_RATIO = (float) EnergyConfigHandler.config.get("Compatibility", "IndustrialCraft Conversion Ratio", EnergyConfigHandler.IC2_RATIO).getDouble(EnergyConfigHandler.IC2_RATIO);
        //EnergyConfigHandler.TE_RATIO = (float) EnergyConfigHandler.config.get("Compatibility", "Thermal Expansion Conversion Ratio", EnergyConfigHandler.TE_RATIO).getDouble(EnergyConfigHandler.TE_RATIO);
        EnergyConfigHandler.BC3_RATIO = (float) EnergyConfigHandler.config.get("Compatibility", "BuildCraft Conversion Ratio", EnergyConfigHandler.BC3_RATIO).getDouble(EnergyConfigHandler.BC3_RATIO);
        EnergyConfigHandler.MEKANISM_RATIO = (float) EnergyConfigHandler.config.get("Compatibility", "Mekanism Conversion Ratio", EnergyConfigHandler.MEKANISM_RATIO).getDouble(EnergyConfigHandler.MEKANISM_RATIO);
        EnergyConfigHandler.TO_IC2_RATIO = 1 / EnergyConfigHandler.IC2_RATIO;
        EnergyConfigHandler.TO_BC_RATIO = 1 / EnergyConfigHandler.BC3_RATIO;
        EnergyConfigHandler.TO_TE_RATIO = 1 / EnergyConfigHandler.TE_RATIO;
        EnergyConfigHandler.TO_MEKANISM_RATIO = 1 / EnergyConfigHandler.MEKANISM_RATIO;

        EnergyConfigHandler.displayEnergyUnitsBC = EnergyConfigHandler.config.get("Display", "If BuildCraft is loaded, show Galacticraft machines energy as MJ instead of gJ?", false).getBoolean(false);
        EnergyConfigHandler.displayEnergyUnitsIC2 = EnergyConfigHandler.config.get("Display", "If IndustrialCraft2 is loaded, show Galacticraft machines energy as EU instead of gJ?", false).getBoolean(false);
        EnergyConfigHandler.displayEnergyUnitsMek = EnergyConfigHandler.config.get("Display", "If Mekanism is loaded, show Galacticraft machines energy as Joules (J) instead of gJ?", false).getBoolean(false);
        EnergyConfigHandler.displayEnergyUnitsRF = EnergyConfigHandler.config.get("Display", "Show Galacticraft machines energy in RF instead of gJ?", false).getBoolean(false);
        if (!EnergyConfigHandler.isBuildcraftLoaded())
        {
            EnergyConfigHandler.displayEnergyUnitsBC = false;
        }
        if (!EnergyConfigHandler.isIndustrialCraft2Loaded())
        {
            EnergyConfigHandler.displayEnergyUnitsIC2 = false;
        }
        if (!EnergyConfigHandler.isMekanismLoaded())
        {
            EnergyConfigHandler.displayEnergyUnitsMek = false;
        }
        if (EnergyConfigHandler.displayEnergyUnitsIC2)
        {
            EnergyConfigHandler.displayEnergyUnitsBC = false;
        }
        if (EnergyConfigHandler.displayEnergyUnitsMek)
        {
            EnergyConfigHandler.displayEnergyUnitsBC = false;
            EnergyConfigHandler.displayEnergyUnitsIC2 = false;
        }
        if (EnergyConfigHandler.displayEnergyUnitsRF)
        {
            EnergyConfigHandler.displayEnergyUnitsBC = false;
            EnergyConfigHandler.displayEnergyUnitsIC2 = false;
            EnergyConfigHandler.displayEnergyUnitsMek = false;
        }

        EnergyConfigHandler.config.save();
    }

    public static void initGas()
    {
        if (EnergyConfigHandler.isMekanismLoaded())
        {
            Gas oxygen = GasRegistry.getGas("oxygen");

            if (oxygen == null)
            {
                EnergyConfigHandler.gasOxygen = GasRegistry.register(new Gas("oxygen")).registerFluid();
            }
            else
            {
                EnergyConfigHandler.gasOxygen = oxygen;
            }

            Gas hydrogen = GasRegistry.getGas("hydrogen");

            if (hydrogen == null)
            {
                EnergyConfigHandler.gasHydrogen = GasRegistry.register(new Gas("hydrogen")).registerFluid();
            }
            else
            {
                EnergyConfigHandler.gasHydrogen = hydrogen;
            }
        }
    }

    /**
     * Checks using the FML loader too see if IC2 is loaded
     */
    public static boolean isIndustrialCraft2Loaded()
    {
        if (!cachedIC2Loaded)
        {
            cachedIC2Loaded = true;
            cachedIC2LoadedValue = Loader.isModLoaded("IC2");
        }

        return cachedIC2LoadedValue;
    }

    /**
     * Checks using the FML loader to see if BC (or EnderIO) is loaded
     */
    public static boolean isBuildcraftLoaded()
    {
        if (!cachedBCLoaded)
        {
            cachedBCLoaded = true;
            cachedBCLoadedValue = Loader.isModLoaded("BuildCraft|Energy") || Loader.isModLoaded("EnderIO");
        }

        return cachedBCLoadedValue;
    }

    public static boolean isBuildcraftReallyLoaded()
    {
        if (!cachedBCReallyLoaded)
        {
            cachedBCReallyLoaded = true;
            cachedBCReallyLoadedValue = Loader.isModLoaded("BuildCraft|Energy");
        }

        return cachedBCReallyLoadedValue;
    }

    public static int getBuildcraftVersion()
    {
        if (cachedBCVersion != -1)
        {
            return cachedBCVersion;
        }

        if (cachedBCLoaded)
        {
            boolean bc6Found = true;

            try
            {
                Class.forName("buildcraft.api.mj.MjAPI");
            }
            catch (Throwable t)
            {
                bc6Found = false;
            }

            if (bc6Found)
            {
                cachedBCVersion = 6;
            }
            else
            {
                cachedBCVersion = 5;
            }
        }

        return cachedBCVersion;
    }

    public static boolean isThermalExpansionLoaded()
    {
        return Loader.isModLoaded("ThermalExpansion");
    }

    public static boolean isMekanismLoaded()
    {
        if (!cachedMekLoaded)
        {
            cachedMekLoaded = true;
            cachedMekLoadedValue = Loader.isModLoaded("Mekanism");
        }

        return cachedMekLoadedValue;
    }
}
TOP

Related Classes of micdoodle8.mods.galacticraft.core.energy.EnergyConfigHandler

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.