package gregtech.loaders.misc; import static gregtech.api.enums.GT_Values.MOD_ID_FR; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; import cpw.mods.fml.common.Loader; import forestry.api.apiculture.EnumBeeChromosome; import forestry.api.core.IClimateProvider; import forestry.api.genetics.*; import forestry.core.genetics.alleles.Allele; import forestry.core.utils.StringUtil; import gregtech.GT_Mod; import gregtech.common.bees.GT_AlleleHelper; import gregtech.common.items.ItemComb; import gregtech.common.items.ItemDrop; import gregtech.common.items.ItemPollen; import gregtech.common.items.ItemPropolis; public class GT_Bees { public static IAlleleInteger noFertility; public static IAlleleInteger superFertility; public static IAlleleInteger noFlowering; public static IAlleleInteger superFlowering; public static IAlleleArea noTerritory; public static IAlleleArea superTerritory; public static IAlleleFloat noWork; public static IAlleleFloat speedBlinding; public static IAlleleFloat superSpeed; public static IAlleleInteger blinkLife; public static IAlleleInteger superLife; public static ItemPropolis propolis; public static ItemPollen pollen; public static ItemDrop drop; public static ItemComb combs; public GT_Bees() { if (Loader.isModLoaded(MOD_ID_FR) && GT_Mod.gregtechproxy.mGTBees) { GT_AlleleHelper.initialisation(); setupGTAlleles(); propolis = new ItemPropolis(); propolis.initPropolisRecipes(); pollen = new ItemPollen(); drop = new ItemDrop(); drop.initDropsRecipes(); combs = new ItemComb(); combs.initCombsRecipes(); combs.registerOreDict(); GT_BeeDefinition.initBees(); } } private static void setupGTAlleles() { noFertility = new AlleleInteger("fertilitySterile", 0, false, EnumBeeChromosome.FERTILITY); superFertility = new AlleleInteger("fertilityMultiply", 8, false, EnumBeeChromosome.FERTILITY); noFlowering = new AlleleInteger("floweringNonpollinating", 0, false, EnumBeeChromosome.FLOWERING); superFlowering = new AlleleInteger("floweringNaturalistic", 240, false, EnumBeeChromosome.FLOWERING); noTerritory = new AlleleArea("areaLethargic", 1, 1, false); superTerritory = new AlleleArea("areaExploratory", 32, 16, false); noWork = new AlleleFloat("speedUnproductive", 0, false); superSpeed = new AlleleFloat("speedAccelerated", 4F, false); speedBlinding = (IAlleleFloat) AlleleManager.alleleRegistry.getAllele("magicbees.speedBlinding") == null ? new AlleleFloat("speedBlinding", 2f, false) : (IAlleleFloat) AlleleManager.alleleRegistry.getAllele("magicbees.speedBlinding"); blinkLife = new AlleleInteger("lifeBlink", 2, false, EnumBeeChromosome.LIFESPAN); superLife = new AlleleInteger("lifeEon", 600, false, EnumBeeChromosome.LIFESPAN); } private static class AlleleFloat extends Allele implements IAlleleFloat { private float value; public AlleleFloat(String id, float val, boolean isDominant) { super("gregtech." + id, "gregtech." + id, isDominant); this.value = val; AlleleManager.alleleRegistry.registerAllele(this, EnumBeeChromosome.SPEED); } @Override public float getValue() { return this.value; } } private static class AlleleInteger extends Allele implements IAlleleInteger { private int value; public AlleleInteger(String id, int val, boolean isDominant, EnumBeeChromosome c) { super("gregtech." + id, "gregtech." + id, isDominant); this.value = val; AlleleManager.alleleRegistry.registerAllele(this, c); } @Override public int getValue() { return this.value; } } private static class AlleleArea extends Allele implements IAlleleArea { private int[] value; public AlleleArea(String id, int rangeXZ, int rangeY, boolean isDominant) { super("gregtech." + id, "gregtech." + id, isDominant); this.value = new int[] { rangeXZ, rangeY, rangeXZ }; AlleleManager.alleleRegistry.registerAllele(this, EnumBeeChromosome.TERRITORY); } @Override public int[] getValue() { return this.value; } } public static class DimensionMutationCondition implements IMutationCondition { int dimID; String dimName; public DimensionMutationCondition(int id, String name) { dimID = id; dimName = name; } @Override public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1, IClimateProvider climate) { if (world.provider.dimensionId == dimID) return 1; return 0; } @Override public String getDescription() { return StringUtil.localizeAndFormat("mutation.condition.dim") + " " + dimName; } } public static class BiomeIDMutationCondition implements IMutationCondition { int biomeID; String biomeName; public BiomeIDMutationCondition(int id, String name) { biomeID = id; biomeName = name; } @Override public float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1, IClimateProvider climate) { if (climate.getBiome().biomeID == biomeID) return 1; return 0; } @Override public String getDescription() { if (BiomeGenBase.getBiome(biomeID) != null) { return StringUtil.localizeAndFormat("mutation.condition.biomeid") + " " + biomeName; } return ""; } } }