extrabiomes.handlers.BiomeHandler.java Source code

Java tutorial

Introduction

Here is the source code for extrabiomes.handlers.BiomeHandler.java

Source

/**
 * This work is licensed under the Creative Commons
 * Attribution-ShareAlike 3.0 Unported License. To view a copy of this
 * license, visit http://creativecommons.org/licenses/by-sa/3.0/.
 */

package extrabiomes.handlers;

import java.util.ArrayList;
import java.util.List;
import java.util.Set;

import net.minecraft.world.WorldType;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.event.ForgeSubscribe;

import com.google.common.base.Optional;

import extrabiomes.Extrabiomes;
import extrabiomes.api.Api;
import extrabiomes.api.events.GetBiomeIDEvent;
import extrabiomes.helpers.BiomeHelper;
import extrabiomes.helpers.LogHelper;
import extrabiomes.lib.BiomeSettings;
import extrabiomes.module.summa.worldgen.LegendOakGenerator;
import extrabiomes.module.summa.worldgen.MarshGenerator;
import extrabiomes.module.summa.worldgen.MountainDesertGenerator;
import extrabiomes.module.summa.worldgen.MountainRidgeGenerator;
import extrabiomes.module.summa.worldgen.VanillaFloraGenerator;

public enum BiomeHandler {
    INSTANCE;

    private static List<BiomeGenBase> biomes = new ArrayList<BiomeGenBase>();

    public static void enableBiomes() {
        final Set<WorldType> worldTypes = BiomeHelper.discoverWorldTypes();

        for (final BiomeSettings setting : BiomeSettings.values()) {
            final Optional<? extends BiomeGenBase> biome = setting.getBiome();
            if (!setting.isVanilla()) {
                if (setting.isEnabled() && biome.isPresent()) {
                    BiomeHelper.enableBiome(worldTypes, biome.get());
                } else {
                    LogHelper.fine("Custom biome %s disabled.", setting.toString());
                }
            } else if (!setting.isEnabled()) {
                Extrabiomes.proxy.removeBiome(BiomeHelper.settingToBiomeGenBase(setting));
                LogHelper.fine("Vanilla biome %s disabled.", biome.toString());
            }

            if (setting.allowVillages() && biome.isPresent()) {
                BiomeManager.addVillageBiome(biome.get(), true);
                LogHelper.fine("Village spawning enabled for custom biome %s.", setting.toString());
            }
        }

    }

    public static void init() throws Exception {
        for (final BiomeSettings biome : BiomeSettings.values()) {
            if (biome.getID() > 0) {
                BiomeHelper.createBiome(biome);
            }
        }

        Api.getExtrabiomesXLEventBus().register(INSTANCE);
    }

    public static void registerWorldGenerators() {
        if (BiomeSettings.MARSH.getBiome().isPresent()) {
            Extrabiomes.proxy.registerWorldGenerator(new MarshGenerator());
        }

        if (BiomeSettings.MOUNTAINDESERT.getBiome().isPresent()) {
            Extrabiomes.proxy.registerWorldGenerator(new MountainDesertGenerator());
        }

        if (BiomeSettings.MOUNTAINRIDGE.getBiome().isPresent()) {
            Extrabiomes.proxy.registerWorldGenerator(new MountainRidgeGenerator());
        }

        Extrabiomes.proxy.registerWorldGenerator(new VanillaFloraGenerator());
        Extrabiomes.proxy.registerWorldGenerator(new LegendOakGenerator());
    }

    @ForgeSubscribe
    public void handleBiomeIDRequestsFromAPI(GetBiomeIDEvent event) {
        final Optional<BiomeSettings> settings = Optional
                .fromNullable(BiomeSettings.valueOf(event.targetBiome.toUpperCase()));
        if (settings.isPresent()) {
            event.biomeID = settings.get().getID();
        }
    }
}