2013-05-29 11:15:25 -07:00
|
|
|
package magicbees.bees;
|
|
|
|
|
|
2015-04-20 19:54:00 -07:00
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Collections;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Random;
|
|
|
|
|
|
2013-05-29 11:15:25 -07:00
|
|
|
import magicbees.block.types.HiveType;
|
2013-06-06 15:39:36 -07:00
|
|
|
import magicbees.item.types.DropType;
|
|
|
|
|
import magicbees.main.Config;
|
2015-04-20 19:54:00 -07:00
|
|
|
import magicbees.main.utils.Tuple;
|
|
|
|
|
import magicbees.main.utils.compat.ExtraBeesHelper;
|
|
|
|
|
import forestry.api.apiculture.IAlleleBeeSpecies;
|
2015-01-08 21:48:13 -08:00
|
|
|
import forestry.api.apiculture.IBeeRoot;
|
|
|
|
|
import forestry.api.genetics.AlleleManager;
|
2013-05-29 11:15:25 -07:00
|
|
|
|
|
|
|
|
public class BeeManager
|
|
|
|
|
{
|
2013-06-06 15:39:36 -07:00
|
|
|
public static IBeeRoot beeRoot;
|
2015-04-20 19:54:00 -07:00
|
|
|
|
|
|
|
|
private static List<Tuple<IAlleleBeeSpecies, Double>> worldgenSpeciesWeights = new ArrayList<Tuple<IAlleleBeeSpecies, Double>>();
|
|
|
|
|
private static double worldgenSpeciesWeightsTotal = 0;
|
2013-06-06 15:39:36 -07:00
|
|
|
|
2013-05-29 11:15:25 -07:00
|
|
|
public static void ititializeBees()
|
|
|
|
|
{
|
2013-06-06 15:39:36 -07:00
|
|
|
beeRoot = (IBeeRoot)AlleleManager.alleleRegistry.getSpeciesRoot("rootBees");
|
|
|
|
|
|
2013-05-29 11:15:25 -07:00
|
|
|
Allele.setupAdditionalAlleles();
|
|
|
|
|
BeeSpecies.setupBeeSpecies();
|
|
|
|
|
Allele.registerDeprecatedAlleleReplacements();
|
|
|
|
|
BeeMutation.setupMutations();
|
2013-05-31 15:09:15 -07:00
|
|
|
|
|
|
|
|
HiveType.initHiveData();
|
2013-06-06 15:39:36 -07:00
|
|
|
|
|
|
|
|
beeRoot.setResearchSuitability(Config.drops.getStackForType(DropType.INTELLECT), 0.5f);
|
2013-05-29 11:15:25 -07:00
|
|
|
}
|
2015-04-20 19:54:00 -07:00
|
|
|
|
|
|
|
|
public static IAlleleBeeSpecies getRandomWorldgenSpecies(Random r) {
|
|
|
|
|
Collections.shuffle(worldgenSpeciesWeights);
|
|
|
|
|
double value = r.nextDouble() * worldgenSpeciesWeightsTotal;
|
|
|
|
|
IAlleleBeeSpecies species = Allele.getBaseSpecies("Forest");
|
|
|
|
|
|
|
|
|
|
for (Tuple<IAlleleBeeSpecies, Double> t : worldgenSpeciesWeights) {
|
|
|
|
|
value -= t.right.doubleValue();
|
|
|
|
|
if (value <= 0.0) {
|
|
|
|
|
species = t.left;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return species;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void addWorldgenSpeciesWeight(IAlleleBeeSpecies species, double d) {
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(species, d));
|
|
|
|
|
worldgenSpeciesWeightsTotal += d;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public static void populateSpeciesListRarity() {
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Forest"), 20.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Meadows"), 20.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Tropical"), 10.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Modest"), 16.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Wintry"), 10.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getBaseSpecies("Ended"), 0.5));
|
|
|
|
|
|
|
|
|
|
if (ExtraBeesHelper.isActive()) {
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getExtraSpecies("Water"), 12.0));
|
2015-04-21 15:41:26 -07:00
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getExtraSpecies("Rock"), 16.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(Allele.getExtraSpecies("Basalt"), 10.0));
|
2015-04-20 19:54:00 -07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.MYSTICAL, 20.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.UNUSUAL, 20.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.SORCEROUS, 13.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.ATTUNED, 6.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.INFERNAL, 10.0));
|
|
|
|
|
worldgenSpeciesWeights.add(new Tuple<IAlleleBeeSpecies, Double>(BeeSpecies.OBLIVION, 1.0));
|
|
|
|
|
|
|
|
|
|
for (Tuple<IAlleleBeeSpecies, Double> t : worldgenSpeciesWeights) {
|
|
|
|
|
worldgenSpeciesWeightsTotal += t.right.doubleValue();
|
|
|
|
|
}
|
|
|
|
|
}
|
2013-05-29 11:15:25 -07:00
|
|
|
}
|