diff options
Diffstat (limited to 'src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java')
-rw-r--r-- | src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java | 1139 |
1 files changed, 1139 insertions, 0 deletions
diff --git a/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java b/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java new file mode 100644 index 0000000000..cc166a3644 --- /dev/null +++ b/src/Java/binnie/extrabees/genetics/ExtraBeesSpecies.java @@ -0,0 +1,1139 @@ +package binnie.extrabees.genetics; + +import binnie.Binnie; +import binnie.core.BinnieCore; +import binnie.core.Mods; +import binnie.core.Mods.Mod; +import binnie.core.genetics.ForestryAllele.BeeSpecies; +import binnie.core.genetics.ForestryAllele.Fertility; +import binnie.core.genetics.ForestryAllele.Flowering; +import binnie.core.genetics.ForestryAllele.Lifespan; +import binnie.core.genetics.ForestryAllele.Speed; +import binnie.core.genetics.ForestryAllele.Territory; +import binnie.core.genetics.ManagerGenetics; +import binnie.core.genetics.Tolerance; +import binnie.core.item.IItemEnum; +import binnie.core.proxy.BinnieProxy; +import binnie.extrabees.ExtraBees; +import binnie.extrabees.genetics.effect.ExtraBeesEffect; +import binnie.extrabees.products.EnumHoneyComb; +import binnie.extrabees.products.ItemHoneyComb.VanillaComb; +import binnie.extrabees.proxy.ExtraBeesProxy; +import com.mojang.authlib.GameProfile; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import forestry.api.apiculture.EnumBeeChromosome; +import forestry.api.apiculture.EnumBeeType; +import forestry.api.apiculture.IAlleleBeeEffect; +import forestry.api.apiculture.IAlleleBeeSpecies; +import forestry.api.apiculture.IBeeGenome; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeRoot; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; +import forestry.api.core.IIconProvider; +import forestry.api.genetics.AlleleManager; +import forestry.api.genetics.IAllele; +import forestry.api.genetics.IAlleleFlowers; +import forestry.api.genetics.IAlleleRegistry; +import forestry.api.genetics.IAlleleSpecies; +import forestry.api.genetics.IClassification; +import forestry.api.genetics.IIndividual; +import forestry.api.genetics.IMutation; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Locale; +import java.util.Map; +import java.util.Map.Entry; +import java.util.Random; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Items; +import net.minecraft.item.ItemStack; +import net.minecraft.stats.Achievement; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +public enum ExtraBeesSpecies + implements IAlleleBeeSpecies, IIconProvider +{ + ARID("aridus", 12511316), BARREN("infelix", 14733923), DESOLATE("desolo", 13744272), GNAWING("apica", 15234224), ROTTEN("caries", 12574902), BONE("os", 15330792), CREEPER("erepo", 2942485), DECOMPOSING("aegrus", 5388049), ROCK("saxum", 11053224), STONE("lapis", 7697781), GRANITE("granum", 6903125), MINERAL("minerale", 7239037), COPPER("cuprous", 13722376), TIN("stannus", 12431805), IRON("ferrous", 11038808), LEAD("plumbous", 11373483), ZINC("spelta", 15592447), TITANIUM("titania", 11578083), BRONZE, BRASS, STEEL, TUNGSTATE("wolfram", 1249812), GOLD("aureus", 15125515), SILVER("argentus", 14408667), ELECTRUM, PLATINUM("platina", 14408667), LAPIS("lazuli", 4009179), SODALITE, PYRITE, BAUXITE, CINNABAR, SPHALERITE, EMERALD("emerala", 1900291), RUBY("ruba", 14024704), SAPPHIRE("saphhira", 673791), OLIVINE, DIAMOND("diama", 8371706), UNSTABLE("levis", 4099124), NUCLEAR("nucleus", 4312111), RADIOACTIVE("fervens", 2031360), ANCIENT("antiquus", 15915919), PRIMEVAL("priscus", 11773563), PREHISTORIC("pristinus", 7232064), RELIC("sapiens", 5062166), COAL("carbo", 8025672), RESIN("lacrima", 10908443), OIL("lubricus", 5719920), PEAT, DISTILLED("distilli", 3498838), FUEL("refina", 16760835), CREOSOTE("creosota", 9936403), LATEX("latex", 4803134), WATER("aqua", 9741055), RIVER("flumen", 8631252), OCEAN("mare", 1912493), INK("atramentum", 922695), GROWING("tyrelli", 6024152), THRIVING("thriva", 3466109), BLOOMING("blooma", 704308), SWEET("mellitus", 16536049), SUGAR("dulcis", 15127520), RIPENING("ripa", 11716445), FRUIT("pomum", 14375030), ALCOHOL("vinum", 15239777), FARM("ager", 7723872), MILK("lacteus", 14936296), COFFEE("arabica", 9199152), CITRUS, MINT, SWAMP("paludis", 3500339), BOGGY("lama", 7887913), FUNGAL("boletus", 13722112), MARBLE, ROMAN, GREEK, CLASSICAL, BASALT("aceri", 9202025), TEMPERED("iratus", 9062472), ANGRY, VOLCANIC("volcano", 5049356), MALICIOUS("acerbus", 7875191), INFECTIOUS("contagio", 12070581), VIRULENT("morbus", 15733740), VISCOUS("liquidus", 608014), GLUTINOUS("glutina", 1936423), STICKY("lentesco", 1565480), CORROSIVE("corrumpo", 4873227), CAUSTIC("torrens", 8691997), ACIDIC("acidus", 12644374), EXCITED("excita", 16729413), ENERGETIC("energia", 15218119), ECSTATIC("ecstatica", 11482600), ARTIC("artica", 11395296), FREEZING("glacia", 8119267), SHADOW("shadowa", 5855577), DARKENED("darka", 3354163), ABYSS("abyssba", 2164769), RED("rubra", 16711680), YELLOW("fulvus", 16768256), BLUE("caeruleus", 8959), GREEN("prasinus", 39168), BLACK("niger", 5723991), WHITE("albus", 16777215), BROWN("fuscus", 6042895), ORANGE("flammeus", 16751872), CYAN("cyana", 65509), PURPLE("purpureus", 11403519), GRAY("ravus", 12237498), LIGHTBLUE("aqua", 40447), PINK("rosaceus", 16744671), LIMEGREEN("lima", 65288), MAGENTA("fuchsia", 16711884), LIGHTGRAY("canus", 13224393), CELEBRATORY("celeba", 16386666), JADED("jadeca", 16386666), GLOWSTONE("glowia", 14730779), HAZARDOUS("infensus", 11562024), NICKEL("claro", 16768764), INVAR, QUANTUM("quanta", 3655131), SPATIAL("spatia", 4987872), UNUSUAL("daniella", 5874874), YELLORIUM("yellori", 14019840), CYANITE("cyanita", 34541), BLUTONIUM("caruthus", 1769702), MYSTICAL("mystica", 4630306); + + private ExtraBeesSpecies(String binomial, int colour) + { + this.uid = toString().toLowerCase(); + this.binomial = binomial; + this.primaryColor = colour; + } + + private ExtraBeesSpecies() + { + this.state = State.Deprecated; + } + + private int primaryColor = 16777215; + private int secondaryColor = 16768022; + private EnumTemperature temperature = EnumTemperature.NORMAL; + private EnumHumidity humidity = EnumHumidity.NORMAL; + private boolean hasEffect = false; + private boolean isSecret = true; + private boolean isCounted = true; + private String binomial = ""; + private IClassification branch = null; + private String uid = ""; + private Achievement achievement = null; + private boolean dominant = true; + private HashMap<ItemStack, Integer> products = new LinkedHashMap(); + private HashMap<ItemStack, Integer> specialties = new LinkedHashMap(); + public HashMap<ItemStack, Integer> allProducts = new LinkedHashMap(); + public HashMap<ItemStack, Integer> allSpecialties = new LinkedHashMap(); + private IAllele[] template; + + public static enum State + { + Active, Inactive, Deprecated; + + private State() {} + } + + public State state = State.Active; + @SideOnly(Side.CLIENT) + private IIcon[][] icons; + + public String getName() + { + return ExtraBees.proxy.localise("species." + name().toLowerCase() + ".name"); + } + + public String getDescription() + { + return ExtraBees.proxy.localiseOrBlank("species." + name().toLowerCase() + ".desc"); + } + + public EnumTemperature getTemperature() + { + return this.temperature; + } + + public EnumHumidity getHumidity() + { + return this.humidity; + } + + public boolean hasEffect() + { + return this.hasEffect; + } + + public boolean isSecret() + { + return this.isSecret; + } + + public boolean isCounted() + { + return this.isCounted; + } + + public String getBinomial() + { + return this.binomial; + } + + public String getAuthority() + { + return "Binnie"; + } + + public IClassification getBranch() + { + return this.branch; + } + + public String getUID() + { + return "extrabees.species." + this.uid; + } + + public boolean isDominant() + { + return this.dominant; + } + + public HashMap<ItemStack, Integer> getProducts() + { + return this.products; + } + + public HashMap<ItemStack, Integer> getSpecialty() + { + return this.specialties; + } + + private void setState(State state) + { + this.state = state; + } + + public void registerTemplate() + { + Binnie.Genetics.getBeeRoot().registerTemplate(getTemplate()); + if (this.state != State.Active) { + AlleleManager.alleleRegistry.blacklistAllele(getUID()); + } + } + + public void addProduct(ItemStack product, int chance) + { + if (product == null) + { + setState(State.Inactive); + } + else + { + this.products.put(product, Integer.valueOf(chance)); + this.allProducts.put(product, Integer.valueOf(chance)); + } + } + + public void addProduct(IItemEnum product, int chance) + { + if (product.isActive()) + { + addProduct(product.get(1), chance); + } + else + { + this.allProducts.put(product.get(1), Integer.valueOf(chance)); + setState(State.Inactive); + } + } + + public void addSpecialty(ItemStack product, int chance) + { + if (product == null) + { + setState(State.Inactive); + } + else + { + this.specialties.put(product, Integer.valueOf(chance)); + this.allSpecialties.put(product, Integer.valueOf(chance)); + } + } + + private void addSpecialty(IItemEnum product, int chance) + { + if (product.isActive()) + { + addSpecialty(product.get(1), chance); + } + else + { + setState(State.Inactive); + this.allSpecialties.put(product.get(1), Integer.valueOf(chance)); + } + } + + private void setHumidity(EnumHumidity humidity) + { + this.humidity = humidity; + } + + private void setTemperature(EnumTemperature temperature) + { + this.temperature = temperature; + } + + public static IAllele[] getDefaultTemplate() + { + return Binnie.Genetics.getBeeRoot().getDefaultTemplate(); + } + + public IAllele[] getTemplate() + { + this.template[EnumBeeChromosome.SPECIES.ordinal()] = this; + return this.template; + } + + public void importTemplate(ForestryAllele.BeeSpecies species) + { + importTemplate(species.getTemplate()); + } + + public void importTemplate(ExtraBeesSpecies species) + { + importTemplate(species.getTemplate()); + } + + public void importTemplate(IAllele[] template) + { + this.template = ((IAllele[])template.clone()); + setHumidity(((IAlleleSpecies)template[0]).getHumidity()); + setTemperature(((IAlleleSpecies)template[0]).getTemperature()); + setSecondaryColor(((IAlleleSpecies)template[0]).getIconColour(1)); + this.template[EnumBeeChromosome.SPECIES.ordinal()] = this; + } + + public void recessive() + { + this.dominant = false; + } + + public void setIsSecret(boolean secret) + { + this.isSecret = secret; + } + + public void setHasEffect(boolean effect) + { + this.hasEffect = effect; + } + + public void setSecondaryColor(int colour) + { + this.secondaryColor = colour; + } + + public static void doInit() + { + for (ExtraBeesSpecies species : ) { + species.template = getDefaultTemplate(); + } + int aridBody = 13362036; + int rockBody = 10066329; + int endBody = 14278302; + + ARID.importTemplate(ForestryAllele.BeeSpecies.Modest); + ARID.addProduct(EnumHoneyComb.BARREN, 30); + ARID.setHumidity(EnumHumidity.ARID); + ARID.setFlowerProvider(ExtraBeesFlowers.DEAD.getUID()); + ARID.setTemperatureTolerance(Tolerance.Up1); + ARID.setSecondaryColor(aridBody); + + BARREN.importTemplate(ARID); + BARREN.setFertility(ForestryAllele.Fertility.Low); + BARREN.addProduct(EnumHoneyComb.BARREN, 30); + + DESOLATE.addProduct(EnumHoneyComb.BARREN, 30); + DESOLATE.importTemplate(BARREN); + DESOLATE.setEffect(ExtraBeesEffect.HUNGER.getUID()); + DESOLATE.recessive(); + DESOLATE.setNocturnal(); + DESOLATE.setHasEffect(true); + + GNAWING.importTemplate(BARREN); + GNAWING.setFlowerProvider(ExtraBeesFlowers.WOOD.getUID()); + GNAWING.addProduct(EnumHoneyComb.BARREN, 25); + GNAWING.addSpecialty(EnumHoneyComb.SAWDUST, 25); + + ROTTEN.importTemplate(DESOLATE); + ROTTEN.setNocturnal(); + ROTTEN.setCaveDwelling(); + ROTTEN.setTolerantFlyer(); + ROTTEN.setEffect(ExtraBeesEffect.SPAWN_ZOMBIE.getUID()); + ROTTEN.addProduct(EnumHoneyComb.BARREN, 30); + ROTTEN.addSpecialty(EnumHoneyComb.ROTTEN, 10); + + BONE.importTemplate(ROTTEN); + BONE.addProduct(EnumHoneyComb.BARREN, 30); + BONE.addSpecialty(EnumHoneyComb.BONE, 10); + BONE.setEffect(ExtraBeesEffect.SPAWN_SKELETON.getUID()); + + CREEPER.importTemplate(ROTTEN); + CREEPER.setAllDay(); + CREEPER.addProduct(EnumHoneyComb.BARREN, 30); + CREEPER.addSpecialty(ItemHoneyComb.VanillaComb.POWDERY.get(), 8); + CREEPER.setEffect(ExtraBeesEffect.SPAWN_CREEPER.getUID()); + + DECOMPOSING.importTemplate(BARREN); + DECOMPOSING.addProduct(EnumHoneyComb.BARREN, 30); + DECOMPOSING.addSpecialty(EnumHoneyComb.COMPOST, 8); + + ROCK.addProduct(EnumHoneyComb.STONE, 30); + ROCK.setIsSecret(false); + ROCK.setAllDay(); + ROCK.setCaveDwelling(); + ROCK.setTolerantFlyer(); + ROCK.setTemperatureTolerance(Tolerance.Both1); + ROCK.setHumidityTolerance(Tolerance.Both1); + ROCK.setFlowerProvider(ExtraBeesFlowers.ROCK.getUID()); + ROCK.setFertility(ForestryAllele.Fertility.Low); + ROCK.setLifespan(ForestryAllele.Lifespan.Short); + ROCK.setSecondaryColor(rockBody); + + STONE.addProduct(EnumHoneyComb.STONE, 30); + STONE.importTemplate(ROCK); + STONE.recessive(); + STONE.setSecondaryColor(rockBody); + + GRANITE.addProduct(EnumHoneyComb.STONE, 30); + GRANITE.importTemplate(STONE); + GRANITE.setTemperatureTolerance(Tolerance.Both2); + GRANITE.setHumidityTolerance(Tolerance.Both2); + GRANITE.setSecondaryColor(rockBody); + + MINERAL.addProduct(EnumHoneyComb.STONE, 30); + MINERAL.importTemplate(GRANITE); + MINERAL.setSecondaryColor(rockBody); + + + + COPPER.addProduct(EnumHoneyComb.STONE, 20); + COPPER.addSpecialty(EnumHoneyComb.COPPER, 6); + COPPER.importTemplate(MINERAL); + COPPER.setSecondaryColor(rockBody); + + TIN.addProduct(EnumHoneyComb.STONE, 20); + TIN.addSpecialty(EnumHoneyComb.TIN, 6); + TIN.importTemplate(MINERAL); + TIN.setSecondaryColor(rockBody); + + IRON.addProduct(EnumHoneyComb.STONE, 20); + IRON.addSpecialty(EnumHoneyComb.IRON, 5); + IRON.importTemplate(MINERAL); + IRON.recessive(); + IRON.setSecondaryColor(rockBody); + + LEAD.addProduct(EnumHoneyComb.STONE, 20); + LEAD.addSpecialty(EnumHoneyComb.LEAD, 5); + LEAD.importTemplate(MINERAL); + LEAD.setSecondaryColor(rockBody); + + NICKEL.addProduct(EnumHoneyComb.STONE, 20); + NICKEL.addSpecialty(EnumHoneyComb.NICKEL, 5); + NICKEL.importTemplate(MINERAL); + NICKEL.setSecondaryColor(rockBody); + + + + ZINC.addProduct(EnumHoneyComb.STONE, 20); + ZINC.addSpecialty(EnumHoneyComb.ZINC, 5); + ZINC.importTemplate(MINERAL); + ZINC.setSecondaryColor(rockBody); + + TITANIUM.addProduct(EnumHoneyComb.STONE, 20); + TITANIUM.addSpecialty(EnumHoneyComb.TITANIUM, 2); + TITANIUM.importTemplate(MINERAL); + TITANIUM.setSecondaryColor(rockBody); + + TUNGSTATE.addProduct(EnumHoneyComb.STONE, 20); + TUNGSTATE.addSpecialty(EnumHoneyComb.TUNGSTEN, 1); + TUNGSTATE.importTemplate(MINERAL); + TUNGSTATE.setSecondaryColor(rockBody); + + + + + GOLD.addProduct(EnumHoneyComb.STONE, 20); + GOLD.addSpecialty(EnumHoneyComb.GOLD, 2); + GOLD.importTemplate(MINERAL); + GOLD.setSecondaryColor(rockBody); + + SILVER.addProduct(EnumHoneyComb.STONE, 20); + SILVER.addSpecialty(EnumHoneyComb.SILVER, 2); + SILVER.importTemplate(MINERAL); + SILVER.recessive(); + SILVER.recessive(); + SILVER.setSecondaryColor(rockBody); + + PLATINUM.addProduct(EnumHoneyComb.STONE, 20); + PLATINUM.addSpecialty(EnumHoneyComb.PLATINUM, 1); + PLATINUM.importTemplate(MINERAL); + PLATINUM.recessive(); + PLATINUM.setSecondaryColor(rockBody); + + + LAPIS.addProduct(EnumHoneyComb.STONE, 20); + LAPIS.addSpecialty(EnumHoneyComb.LAPIS, 5); + LAPIS.importTemplate(MINERAL); + LAPIS.setSecondaryColor(rockBody); + + EMERALD.addProduct(EnumHoneyComb.STONE, 20); + EMERALD.addSpecialty(EnumHoneyComb.EMERALD, 4); + EMERALD.importTemplate(MINERAL); + EMERALD.setSecondaryColor(rockBody); + + RUBY.addProduct(EnumHoneyComb.STONE, 20); + RUBY.addSpecialty(EnumHoneyComb.RUBY, 3); + RUBY.importTemplate(MINERAL); + RUBY.setSecondaryColor(rockBody); + + SAPPHIRE.addProduct(EnumHoneyComb.STONE, 20); + SAPPHIRE.addSpecialty(EnumHoneyComb.SAPPHIRE, 3); + SAPPHIRE.importTemplate(MINERAL); + SAPPHIRE.setSecondaryColor(rockBody); + + DIAMOND.addProduct(EnumHoneyComb.STONE, 20); + DIAMOND.addSpecialty(EnumHoneyComb.DIAMOND, 1); + DIAMOND.importTemplate(MINERAL); + DIAMOND.setSecondaryColor(rockBody); + + UNSTABLE.importTemplate(MINERAL); + UNSTABLE.addProduct(EnumHoneyComb.BARREN, 20); + UNSTABLE.setEffect(ExtraBeesEffect.RADIOACTIVE.getUID()); + UNSTABLE.setFertility(ForestryAllele.Fertility.Low); + UNSTABLE.setLifespan(ForestryAllele.Lifespan.Shortest); + UNSTABLE.recessive(); + + NUCLEAR.importTemplate(UNSTABLE); + NUCLEAR.addProduct(EnumHoneyComb.BARREN, 20); + NUCLEAR.recessive(); + + RADIOACTIVE.importTemplate(NUCLEAR); + RADIOACTIVE.addProduct(EnumHoneyComb.BARREN, 20); + RADIOACTIVE.addSpecialty(EnumHoneyComb.URANIUM, 2); + RADIOACTIVE.setHasEffect(true); + RADIOACTIVE.recessive(); + + ANCIENT.importTemplate(ForestryAllele.BeeSpecies.Noble); + ANCIENT.addProduct(EnumHoneyComb.OLD, 30); + ANCIENT.setLifespan(ForestryAllele.Lifespan.Elongated); + + PRIMEVAL.importTemplate(ANCIENT); + PRIMEVAL.addProduct(EnumHoneyComb.OLD, 30); + PRIMEVAL.setLifespan(ForestryAllele.Lifespan.Long); + + PREHISTORIC.importTemplate(ANCIENT); + PREHISTORIC.addProduct(EnumHoneyComb.OLD, 30); + PREHISTORIC.setLifespan(ForestryAllele.Lifespan.Longer); + PREHISTORIC.setFertility(ForestryAllele.Fertility.Low); + PREHISTORIC.recessive(); + + RELIC.importTemplate(ANCIENT); + RELIC.addProduct(EnumHoneyComb.OLD, 30); + RELIC.setHasEffect(true); + RELIC.setLifespan(ForestryAllele.Lifespan.Longest); + + COAL.importTemplate(ANCIENT); + COAL.setLifespan(ForestryAllele.Lifespan.Normal); + COAL.addProduct(EnumHoneyComb.OLD, 20); + COAL.addSpecialty(EnumHoneyComb.COAL, 8); + + RESIN.importTemplate(COAL); + RESIN.addProduct(EnumHoneyComb.OLD, 20); + RESIN.addSpecialty(EnumHoneyComb.RESIN, 5); + RESIN.recessive(); + + OIL.importTemplate(COAL); + OIL.addProduct(EnumHoneyComb.OLD, 20); + OIL.addSpecialty(EnumHoneyComb.OIL, 5); + + + + + + + DISTILLED.importTemplate(OIL); + DISTILLED.addProduct(EnumHoneyComb.OIL, 10); + DISTILLED.recessive(); + + FUEL.importTemplate(OIL); + FUEL.addProduct(EnumHoneyComb.OIL, 10); + FUEL.addSpecialty(EnumHoneyComb.FUEL, 4); + FUEL.setHasEffect(true); + + CREOSOTE.importTemplate(COAL); + CREOSOTE.addProduct(EnumHoneyComb.COAL, 10); + CREOSOTE.addSpecialty(EnumHoneyComb.CREOSOTE, 7); + CREOSOTE.setHasEffect(true); + + LATEX.importTemplate(RESIN); + LATEX.addProduct(EnumHoneyComb.RESIN, 10); + LATEX.addSpecialty(EnumHoneyComb.LATEX, 5); + LATEX.setHasEffect(true); + + WATER.addProduct(EnumHoneyComb.WATER, 30); + WATER.setIsSecret(false); + WATER.setTolerantFlyer(); + WATER.setHumidityTolerance(Tolerance.Both1); + WATER.setFlowerProvider(ExtraBeesFlowers.WATER.getUID()); + WATER.setFlowering(ForestryAllele.Flowering.Slow); + WATER.setEffect(ExtraBeesEffect.WATER.getUID()); + WATER.setHumidity(EnumHumidity.DAMP); + + RIVER.importTemplate(WATER); + RIVER.addProduct(EnumHoneyComb.WATER, 30); + RIVER.addSpecialty(EnumHoneyComb.CLAY, 20); + RIVER.importTemplate(WATER); + + OCEAN.importTemplate(WATER); + OCEAN.addProduct(EnumHoneyComb.WATER, 30); + OCEAN.importTemplate(WATER); + OCEAN.recessive(); + + INK.importTemplate(OCEAN); + INK.addProduct(EnumHoneyComb.WATER, 30); + INK.addSpecialty(new ItemStack(Items.dye, 1, 0), 10); + + GROWING.importTemplate(ForestryAllele.BeeSpecies.Forest); + GROWING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35); + GROWING.setFlowering(ForestryAllele.Flowering.Average); + GROWING.setFlowerProvider(ExtraBeesFlowers.LEAVES.getUID()); + + THRIVING.importTemplate(GROWING); + THRIVING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35); + THRIVING.setFlowering(ForestryAllele.Flowering.Fast); + + BLOOMING.importTemplate(THRIVING); + BLOOMING.setFlowering(ForestryAllele.Flowering.Fastest); + BLOOMING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 35); + BLOOMING.setFlowerProvider(ExtraBeesFlowers.Sapling.getUID()); + BLOOMING.setEffect(ExtraBeesEffect.BonemealSapling.getUID()); + + SWEET.importTemplate(ForestryAllele.BeeSpecies.Rural); + SWEET.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 40); + SWEET.addProduct(new ItemStack(Items.sugar, 1, 0), 10); + SWEET.setFlowerProvider(ExtraBeesFlowers.SUGAR.getUID()); + + SUGAR.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 40); + SUGAR.addProduct(new ItemStack(Items.sugar, 1, 0), 20); + SUGAR.importTemplate(SWEET); + + RIPENING.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30); + RIPENING.addProduct(new ItemStack(Items.sugar, 1, 0), 10); + RIPENING.addSpecialty(EnumHoneyComb.FRUIT, 10); + RIPENING.setFlowerProvider(ExtraBeesFlowers.Fruit.getUID()); + RIPENING.importTemplate(SUGAR); + + FRUIT.importTemplate(RIPENING); + FRUIT.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30); + FRUIT.addProduct(new ItemStack(Items.sugar, 1, 0), 15); + FRUIT.addSpecialty(EnumHoneyComb.FRUIT, 20); + FRUIT.setEffect(ExtraBeesEffect.BonemealFruit.getUID()); + FRUIT.setHasEffect(true); + + ALCOHOL.importTemplate(SWEET); + ALCOHOL.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30); + ALCOHOL.addSpecialty(EnumHoneyComb.ALCOHOL, 10); + ALCOHOL.setEffect("forestry.effectDrunkard"); + ALCOHOL.recessive(); + + FARM.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30); + FARM.addSpecialty(EnumHoneyComb.SEED, 10); + FARM.importTemplate(ForestryAllele.BeeSpecies.Rural); + + MILK.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30); + MILK.addSpecialty(EnumHoneyComb.MILK, 10); + MILK.importTemplate(ForestryAllele.BeeSpecies.Rural); + + COFFEE.addProduct(ItemHoneyComb.VanillaComb.WHEATEN.get(), 30); + COFFEE.addSpecialty(EnumHoneyComb.COFFEE, 8); + COFFEE.importTemplate(ForestryAllele.BeeSpecies.Rural); + + + + + + + + + + SWAMP.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30); + SWAMP.importTemplate(ForestryAllele.BeeSpecies.Marshy); + SWAMP.setHumidity(EnumHumidity.DAMP); + SWAMP.setEffect(ExtraBeesEffect.SLOW.getUID()); + + BOGGY.importTemplate(SWAMP); + BOGGY.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30); + BOGGY.importTemplate(SWAMP); + BOGGY.recessive(); + + FUNGAL.importTemplate(BOGGY); + FUNGAL.addProduct(ItemHoneyComb.VanillaComb.MOSSY.get(), 30); + FUNGAL.addSpecialty(EnumHoneyComb.FUNGAL, 15); + FUNGAL.importTemplate(BOGGY); + FUNGAL.setEffect(ExtraBeesEffect.BonemealMushroom.getUID()); + FUNGAL.setHasEffect(true); + + BASALT.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25); + BASALT.importTemplate(ForestryAllele.BeeSpecies.Sinister); + BASALT.setEffect("forestry.effectAggressive"); + BASALT.setSecondaryColor(10101539); + BASALT.setHumidity(EnumHumidity.ARID); + BASALT.setTemperature(EnumTemperature.HELLISH); + + TEMPERED.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25); + TEMPERED.importTemplate(BASALT); + TEMPERED.setEffect(ExtraBeesEffect.METEOR.getUID()); + TEMPERED.recessive(); + TEMPERED.setSecondaryColor(10101539); + + VOLCANIC.importTemplate(TEMPERED); + VOLCANIC.addProduct(ItemHoneyComb.VanillaComb.SIMMERING.get(), 25); + VOLCANIC.addSpecialty(EnumHoneyComb.BLAZE, 10); + VOLCANIC.setHasEffect(true); + VOLCANIC.setSecondaryColor(10101539); + + MALICIOUS.importTemplate(ForestryAllele.BeeSpecies.Tropical); + MALICIOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + MALICIOUS.setSecondaryColor(431972); + MALICIOUS.setHumidity(EnumHumidity.DAMP); + MALICIOUS.setTemperature(EnumTemperature.WARM); + + INFECTIOUS.importTemplate(MALICIOUS); + INFECTIOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + INFECTIOUS.setFlowering(ForestryAllele.Flowering.Slow); + INFECTIOUS.setSecondaryColor(431972); + + VIRULENT.importTemplate(INFECTIOUS); + VIRULENT.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + VIRULENT.addSpecialty(EnumHoneyComb.VENOMOUS, 12); + VIRULENT.setFlowering(ForestryAllele.Flowering.Average); + VIRULENT.recessive(); + VIRULENT.setHasEffect(true); + VIRULENT.setSecondaryColor(431972); + + VISCOUS.importTemplate(ForestryAllele.BeeSpecies.Tropical); + VISCOUS.setEffect(ExtraBeesEffect.ECTOPLASM.getUID()); + VISCOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + VISCOUS.setSecondaryColor(431972); + VISCOUS.setHumidity(EnumHumidity.DAMP); + VISCOUS.setSpeed(ForestryAllele.Speed.Slow); + VISCOUS.setTemperature(EnumTemperature.WARM); + + GLUTINOUS.importTemplate(VISCOUS); + GLUTINOUS.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + GLUTINOUS.setSpeed(ForestryAllele.Speed.Norm); + GLUTINOUS.setSecondaryColor(431972); + + STICKY.importTemplate(GLUTINOUS); + STICKY.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + STICKY.addSpecialty(EnumHoneyComb.SLIME, 12); + STICKY.setSpeed(ForestryAllele.Speed.Fast); + STICKY.setHasEffect(true); + STICKY.setSecondaryColor(431972); + + CORROSIVE.importTemplate(STICKY); + CORROSIVE.setHumidity(EnumHumidity.DAMP); + CORROSIVE.setTemperature(EnumTemperature.WARM); + CORROSIVE.setEffect(ExtraBeesEffect.ACID.getUID()); + CORROSIVE.setFlowering(ForestryAllele.Flowering.Average); + CORROSIVE.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 20); + CORROSIVE.recessive(); + CORROSIVE.setSecondaryColor(431972); + + CAUSTIC.importTemplate(CORROSIVE); + CAUSTIC.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 25); + CAUSTIC.addSpecialty(EnumHoneyComb.ACIDIC, 3); + CAUSTIC.setSecondaryColor(431972); + + ACIDIC.importTemplate(CAUSTIC); + ACIDIC.addProduct(ItemHoneyComb.VanillaComb.SILKY.get(), 20); + ACIDIC.addSpecialty(EnumHoneyComb.ACIDIC, 16); + ACIDIC.setHasEffect(true); + ACIDIC.setSecondaryColor(431972); + + EXCITED.setEffect(ExtraBeesEffect.LIGHTNING.getUID()); + EXCITED.addProduct(EnumHoneyComb.REDSTONE, 10); + EXCITED.setCaveDwelling(); + EXCITED.setFlowerProvider(ExtraBeesFlowers.REDSTONE.getUID()); + + ENERGETIC.importTemplate(EXCITED); + ENERGETIC.setEffect(ExtraBeesEffect.LIGHTNING.getUID()); + ENERGETIC.addProduct(EnumHoneyComb.REDSTONE, 12); + ENERGETIC.recessive(); + + ECSTATIC.importTemplate(ENERGETIC); + ECSTATIC.setEffect(ExtraBeesEffect.Power.getUID()); + ECSTATIC.addProduct(EnumHoneyComb.REDSTONE, 20); + ECSTATIC.addSpecialty(EnumHoneyComb.IC2ENERGY, 8); + ECSTATIC.setHasEffect(true); + + ARTIC.importTemplate(ForestryAllele.BeeSpecies.Wintry); + ARTIC.addProduct(ItemHoneyComb.VanillaComb.FROZEN.get(), 25); + ARTIC.setTemperature(EnumTemperature.ICY); + ARTIC.setSecondaryColor(14349811); + + FREEZING.importTemplate(ARTIC); + FREEZING.addProduct(ItemHoneyComb.VanillaComb.FROZEN.get(), 20); + FREEZING.addSpecialty(EnumHoneyComb.GLACIAL, 10); + FREEZING.setSecondaryColor(14349811); + + SHADOW.importTemplate(BASALT); + SHADOW.setNocturnal(); + SHADOW.addProduct(EnumHoneyComb.SHADOW, 5); + SHADOW.setEffect(ExtraBeesEffect.BLINDNESS.getUID()); + SHADOW.setAllDay(false); + SHADOW.recessive(); + SHADOW.setSecondaryColor(3355443); + + DARKENED.addProduct(EnumHoneyComb.SHADOW, 10); + DARKENED.setNocturnal(); + DARKENED.importTemplate(SHADOW); + DARKENED.setSecondaryColor(3355443); + + ABYSS.importTemplate(DARKENED); + ABYSS.setNocturnal(); + ABYSS.addProduct(EnumHoneyComb.SHADOW, 25); + ABYSS.setEffect(ExtraBeesEffect.WITHER.getUID()); + ABYSS.setHasEffect(true); + ABYSS.setSecondaryColor(3355443); + + CELEBRATORY.importTemplate(ForestryAllele.BeeSpecies.Merry); + CELEBRATORY.setEffect(ExtraBeesEffect.FIREWORKS.getUID()); + + GLOWSTONE.importTemplate(BASALT); + GLOWSTONE.addProduct(EnumHoneyComb.GLOWSTONE, 15); + GLOWSTONE.setSecondaryColor(10101539); + + HAZARDOUS.importTemplate(ForestryAllele.BeeSpecies.Austere); + HAZARDOUS.addProduct(EnumHoneyComb.SALTPETER, 12); + + JADED.importTemplate(ForestryAllele.BeeSpecies.Imperial); + JADED.setFertility(ForestryAllele.Fertility.Maximum); + JADED.setFlowering(ForestryAllele.Flowering.Maximum); + JADED.setTerritory(ForestryAllele.Territory.Largest); + JADED.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 30); + JADED.addSpecialty(Mods.Forestry.stack("pollen"), 20); + JADED.setHasEffect(true); + JADED.setSecondaryColor(14453483); + + UNUSUAL.importTemplate(ForestryAllele.BeeSpecies.Ended); + UNUSUAL.setEffect(ExtraBeesEffect.GRAVITY.getUID()); + UNUSUAL.setSecondaryColor(12231403); + UNUSUAL.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25); + + SPATIAL.importTemplate(UNUSUAL); + SPATIAL.setEffect(ExtraBeesEffect.GRAVITY.getUID()); + SPATIAL.setSecondaryColor(10768076); + SPATIAL.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25); + SPATIAL.addSpecialty(EnumHoneyComb.CERTUS, 5); + + QUANTUM.importTemplate(QUANTUM); + QUANTUM.setEffect(ExtraBeesEffect.TELEPORT.getUID()); + QUANTUM.setSecondaryColor(13963227); + QUANTUM.addProduct(ItemHoneyComb.VanillaComb.QUARTZ.get(), 25); + QUANTUM.addSpecialty(EnumHoneyComb.CERTUS, 15); + QUANTUM.addSpecialty(EnumHoneyComb.ENDERPEARL, 15); + + JADED.addSpecialty(EnumHoneyComb.PURPLE, 15); + JADED.isCounted = false; + + YELLORIUM.importTemplate(NUCLEAR); + YELLORIUM.addProduct(EnumHoneyComb.BARREN, 20); + YELLORIUM.addSpecialty(EnumHoneyComb.YELLORIUM, 2); + YELLORIUM.setEffect(ExtraBeesEffect.RADIOACTIVE.getUID()); + YELLORIUM.setFertility(ForestryAllele.Fertility.Low); + YELLORIUM.setLifespan(ForestryAllele.Lifespan.Shortest); + + CYANITE.importTemplate(YELLORIUM); + CYANITE.addProduct(EnumHoneyComb.BARREN, 20); + CYANITE.addSpecialty(EnumHoneyComb.CYANITE, 1); + + BLUTONIUM.importTemplate(CYANITE); + BLUTONIUM.addProduct(EnumHoneyComb.BARREN, 20); + BLUTONIUM.addSpecialty(EnumHoneyComb.BLUTONIUM, 1); + + MYSTICAL.importTemplate(ForestryAllele.BeeSpecies.Noble); + for (Map.Entry<ItemStack, Integer> entry : ForestryAllele.BeeSpecies.Noble.getAllele().getProducts().entrySet()) { + MYSTICAL.addProduct((ItemStack)entry.getKey(), ((Integer)entry.getValue()).intValue()); + } + MYSTICAL.setFlowerProvider(ExtraBeesFlowers.Mystical.getUID()); + for (ExtraBeesSpecies species : values()) + { + if (species.state != State.Active) { + AlleleManager.alleleRegistry.blacklistAllele(species.getUID()); + } + for (EnumBeeChromosome chromo : EnumBeeChromosome.values()) { + if (chromo != EnumBeeChromosome.HUMIDITY) + { + IAllele allele = species.template[chromo.ordinal()]; + if ((allele == null) || (!chromo.getAlleleClass().isInstance(allele))) { + throw new RuntimeException(species.getName() + " has an invalid " + chromo.toString() + " chromosome!"); + } + } + } + } + for (int i = 0; i < 16; i++) + { + ExtraBeesSpecies species = values()[(RED.ordinal() + i)]; + EnumHoneyComb comb = EnumHoneyComb.values()[(EnumHoneyComb.RED.ordinal() + i)]; + species.addProduct(ItemHoneyComb.VanillaComb.HONEY.get(), 75); + species.addSpecialty(comb, 25); + species.setSecondaryColor(9240320); + } + for (ExtraBeesSpecies species : values()) { + species.registerTemplate(); + } + } + + void setBranch(IClassification branch) + { + this.branch = branch; + } + + public boolean isJubilant(World world, int biomeid, int x, int y, int z) + { + return true; + } + + public boolean isJubilant(IBeeGenome genome, IBeeHousing housing) + { + return true; + } + + public int getIconColour(int renderPass) + { + return renderPass == 1 ? this.secondaryColor : renderPass == 0 ? this.primaryColor : 16777215; + } + + public IIconProvider getIconProvider() + { + return this; + } + + public IIcon getIcon(short texUID) + { + return null; + } + + @SideOnly(Side.CLIENT) + public void registerIcons(IIconRegister register) + { + String iconType = "default"; + String mod = "forestry"; + if (this == JADED) + { + iconType = "jaded"; + mod = "extrabees"; + } + this.icons = new IIcon[EnumBeeType.values().length][3]; + + IIcon body1 = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/body1"); + for (int i = 0; i < EnumBeeType.values().length; i++) { + if (EnumBeeType.values()[i] != EnumBeeType.NONE) + { + this.icons[i][0] = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".outline"); + + + this.icons[i][1] = (EnumBeeType.values()[i] != EnumBeeType.LARVAE ? body1 : BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body")); + + this.icons[i][2] = BinnieCore.proxy.getIcon(register, mod, "bees/" + iconType + "/" + EnumBeeType.values()[i].toString().toLowerCase(Locale.ENGLISH) + ".body2"); + } + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(EnumBeeType type, int renderPass) + { + if (this.icons == null) { + return ARID.getIcon(type, renderPass); + } + return this.icons[type.ordinal()][renderPass]; + } + + public IBeeRoot getRoot() + { + return Binnie.Genetics.getBeeRoot(); + } + + boolean nocturnal = false; + + public boolean isNocturnal() + { + return this.nocturnal; + } + + public void setNocturnal() + { + this.nocturnal = true; + } + + public void setAllDay() + { + setAllDay(true); + } + + public void setAllDay(boolean allDay) + { + if (allDay) { + this.template[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue"); + } else { + this.template[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolFalse"); + } + } + + public void setCaveDwelling() + { + this.template[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue"); + } + + public void setTolerantFlyer() + { + this.template[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.alleleRegistry.getAllele("forestry.boolTrue"); + } + + public void setFlowerProvider(String uid) + { + IAllele allele = AlleleManager.alleleRegistry.getAllele(uid); + if ((allele instanceof IAlleleFlowers)) { + this.template[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = allele; + } + } + + public void setEffect(String uid) + { + IAllele allele = AlleleManager.alleleRegistry.getAllele(uid); + if ((allele instanceof IAlleleBeeEffect)) { + this.template[EnumBeeChromosome.EFFECT.ordinal()] = AlleleManager.alleleRegistry.getAllele(uid); + } + } + + private void setFertility(ForestryAllele.Fertility fert) + { + this.template[EnumBeeChromosome.FERTILITY.ordinal()] = fert.getAllele(); + } + + private void setLifespan(ForestryAllele.Lifespan fert) + { + this.template[EnumBeeChromosome.LIFESPAN.ordinal()] = fert.getAllele(); + } + + private void setSpeed(ForestryAllele.Speed fert) + { + this.template[EnumBeeChromosome.SPEED.ordinal()] = fert.getAllele(); + } + + private void setTerritory(ForestryAllele.Territory fert) + { + this.template[EnumBeeChromosome.TERRITORY.ordinal()] = fert.getAllele(); + } + + private void setFlowering(ForestryAllele.Flowering fert) + { + this.template[EnumBeeChromosome.FLOWERING.ordinal()] = fert.getAllele(); + } + + private void setHumidityTolerance(Tolerance fert) + { + this.template[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = fert.getAllele(); + } + + private void setTemperatureTolerance(Tolerance both1) + { + this.template[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = both1.getAllele(); + } + + public float getResearchSuitability(ItemStack itemstack) + { + if (itemstack == null) { + return 0.0F; + } + for (ItemStack stack : this.products.keySet()) { + if (stack.isItemEqual(itemstack)) { + return 1.0F; + } + } + for (ItemStack stack : this.specialties.keySet()) { + if (stack.isItemEqual(itemstack)) { + return 1.0F; + } + } + if (itemstack.getItem() == Items.glass_bottle) { + return 0.9F; + } + if (itemstack.getItem() == Mods.Forestry.item("honeyDrop")) { + return 0.5F; + } + if (itemstack.getItem() == Mods.Forestry.item("honeydew")) { + return 0.7F; + } + if (itemstack.getItem() == Mods.Forestry.item("beeComb")) { + return 0.4F; + } + if (AlleleManager.alleleRegistry.isIndividual(itemstack)) { + return 1.0F; + } + for (Map.Entry<ItemStack, Float> entry : getRoot().getResearchCatalysts().entrySet()) { + if (((ItemStack)entry.getKey()).isItemEqual(itemstack)) { + return ((Float)entry.getValue()).floatValue(); + } + } + return 0.0F; + } + + public ItemStack[] getResearchBounty(World world, GameProfile researcher, IIndividual individual, int bountyLevel) + { + ArrayList<ItemStack> bounty = new ArrayList(); + ItemStack research = null; + if (world.rand.nextFloat() < 10.0F / bountyLevel) + { + Collection<? extends IMutation> combinations = getRoot().getCombinations(this); + if (combinations.size() > 0) + { + IMutation[] candidates = (IMutation[])combinations.toArray(new IMutation[0]); + research = AlleleManager.alleleRegistry.getMutationNoteStack(researcher, candidates[world.rand.nextInt(candidates.length)]); + } + } + if (research != null) { + bounty.add(research); + } + if (bountyLevel > 10) { + for (ItemStack stack : this.specialties.keySet()) + { + ItemStack stack2 = stack.copy(); + stack2.stackSize = (world.rand.nextInt((int)(bountyLevel / 2.0F)) + 1); + bounty.add(stack2); + } + } + for (ItemStack stack : this.products.keySet()) + { + ItemStack stack2 = stack.copy(); + stack2.stackSize = (world.rand.nextInt((int)(bountyLevel / 2.0F)) + 1); + bounty.add(stack2); + } + return (ItemStack[])bounty.toArray(new ItemStack[0]); + } + + public String getEntityTexture() + { + return "/gfx/forestry/entities/bees/honeyBee.png"; + } + + public int getComplexity() + { + return 1 + getGeneticAdvancement(this, new ArrayList()); + } + + private int getGeneticAdvancement(IAllele species, ArrayList<IAllele> exclude) + { + int own = 1; + int highest = 0; + exclude.add(species); + for (IMutation mutation : getRoot().getPaths(species, EnumBeeChromosome.SPECIES)) + { + if (!exclude.contains(mutation.getAllele0())) + { + int otherAdvance = getGeneticAdvancement(mutation.getAllele0(), exclude); + if (otherAdvance > highest) { + highest = otherAdvance; + } + } + if (!exclude.contains(mutation.getAllele1())) + { + int otherAdvance = getGeneticAdvancement(mutation.getAllele1(), exclude); + if (otherAdvance > highest) { + highest = otherAdvance; + } + } + } + return own + (highest < 0 ? 0 : highest); + } + + public String getUnlocalizedName() + { + return getUID(); + } + + public Map<ItemStack, Float> getProductChances() + { + return null; + } + + public Map<ItemStack, Float> getSpecialtyChances() + { + return null; + } +} |