diff --git a/thaumicbees_res/build.number b/thaumicbees_res/build.number
index a59e5a6..9e8551f 100644
--- a/thaumicbees_res/build.number
+++ b/thaumicbees_res/build.number
@@ -1,3 +1,3 @@
#Build Number for ANT. Do not edit!
-#Fri Dec 28 20:21:37 PST 2012
-build.number=19
+#Sat Dec 29 17:49:37 PST 2012
+build.number=23
diff --git a/thaumicbees_res/build.xml b/thaumicbees_res/build.xml
index c6078b7..a118459 100644
--- a/thaumicbees_res/build.xml
+++ b/thaumicbees_res/build.xml
@@ -17,7 +17,7 @@
-
+
@@ -83,6 +83,7 @@
+
diff --git a/thaumicbees_res/mcmod.info b/thaumicbees_res/mcmod.info
index c397091..d7b6823 100644
--- a/thaumicbees_res/mcmod.info
+++ b/thaumicbees_res/mcmod.info
@@ -1,9 +1,9 @@
-[{
+[
+{
"modid": "ThaumicBees",
"name": "ThaumicBees",
"description": "Crossover mod for Forestry and Thaumcraft. Magic bees & more.",
- "version": "0.0.2",
- "mcversion": "1.4.6",
"authors": [ "MysteriousAges" ],
- "credits": "Written & Designed by MysteriousAges. BIG thanks to SirSengir for all the Forestry help!",
-}]
\ No newline at end of file
+ "credits": "Thanks to Sengir for the Forestry help!"
+}
+]
\ No newline at end of file
diff --git a/thaumicbees_src/thaumicbees/bees/ThaumicBeesPlugin.java b/thaumicbees_src/thaumicbees/bees/ThaumicBeesPlugin.java
index 22cfa00..0b72a92 100644
--- a/thaumicbees_src/thaumicbees/bees/ThaumicBeesPlugin.java
+++ b/thaumicbees_src/thaumicbees/bees/ThaumicBeesPlugin.java
@@ -4,11 +4,16 @@ import cpw.mods.fml.common.network.IGuiHandler;
import forestry.api.apiculture.*;
import forestry.api.core.*;
import forestry.api.genetics.AlleleManager;
+
+import java.lang.reflect.Field;
import java.util.Random;
import thaumcraft.api.EnumTag;
import thaumcraft.api.ObjectTags;
import thaumcraft.api.ThaumcraftApi;
+import thaumicbees.bees.genetics.Allele;
+import thaumicbees.bees.genetics.AlleleEffectCure;
+import thaumicbees.bees.genetics.AlleleEffectPotion;
import thaumicbees.bees.genetics.AlleleFlower;
import thaumicbees.bees.genetics.BeeGenomeManager;
import thaumicbees.bees.genetics.BeeMutation;
@@ -16,11 +21,13 @@ import thaumicbees.bees.genetics.BeeSpecies;
import thaumicbees.item.ItemManager;
import thaumicbees.item.ItemComb.CombType;
import thaumicbees.item.ItemMiscResources.ResourceType;
+import thaumicbees.main.ThaumicBees;
import net.minecraft.block.Block;
import net.minecraft.command.ICommand;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
+import net.minecraft.potion.Potion;
import net.minecraft.world.World;
public class ThaumicBeesPlugin implements IPlugin
@@ -40,6 +47,19 @@ public class ThaumicBeesPlugin implements IPlugin
public void doInit()
{
+ try
+ {
+ Field f = Class.forName("forestry.core.config.Config").getField("enableParticleFX");
+ ThaumicBees.object.configFlags.drawParticleEffects = f.getBoolean(null);
+
+ f = Class.forName("forestry.core.config.Defaults").getField("TEXTURE_PARTICLES_BEE");
+ thaumicbees.main.CommonProxy.FORESTRY_GFX_BEEEFFECTS = (String)f.get(null);
+ }
+ catch (Exception e)
+ {
+ // Could not get Forestry config value.
+
+ }
}
public void postInit()
@@ -54,146 +74,153 @@ public class ThaumicBeesPlugin implements IPlugin
BeeBranch.Arcane = new BeeBranch("Arcane", "arcanis");
BeeBranch.Supernatural = new BeeBranch("Supernatural", "coeleste");
BeeBranch.Stark = new BeeBranch("Stark", "torridus", "Nothing of the mundane world remains in these bees.");
+
BeeBranch.Elemental = new BeeBranch("Elemental", "praecantatio");
BeeBranch.Scholarly = new BeeBranch("Scholarly", "scholasticus");
- AlleleFlower.alleleFlowerBookshelf = new AlleleFlower("flowerBookshelf", new FlowerProviderBookshelf(), true);
- AlleleFlower.alleleFlowerThaumcraft = new AlleleFlower("flowerThaumcraftPlant", new FlowerProviderThaumcraftFlower(), false);
+ Allele.flowerBookshelf = new AlleleFlower("flowerBookshelf", new FlowerProviderBookshelf(), true);
+ Allele.flowerThaumcraft = new AlleleFlower("flowerThaumcraftPlant", new FlowerProviderThaumcraftFlower(), false);
- BeeSpecies.Esoteric = new BeeSpecies("Esoteric", "", "secretiore", BeeBranch.Arcane, 0,
+ Allele.cleansingEffect = new AlleleEffectCure("effectCurative", false);
+ Allele.digSpeed = new AlleleEffectPotion("effectDigSpeed", "Mining", Potion.digSpeed, 7, false);
+ Allele.moveSpeed = new AlleleEffectPotion("effectMoveSpeed", "Swiftness", Potion.moveSpeed, 5, false);
+
+ Allele.Esoteric = new BeeSpecies("Esoteric", "", "secretiore", BeeBranch.Arcane, 0,
0x001099, 0xcc763c, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
false, hideSpecies, true, true);
- BeeSpecies.Esoteric.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 45);
- BeeSpecies.Esoteric.setGenome(BeeGenomeManager.getTemplateEsoteric());
- breedingMgr.registerBeeTemplate(BeeSpecies.Esoteric.getGenome());
+ Allele.Esoteric.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 20);
+ Allele.Esoteric.setGenome(BeeGenomeManager.getTemplateEsoteric());
+ breedingMgr.registerBeeTemplate(Allele.Esoteric.getGenome());
- BeeSpecies.Mysterious = new BeeSpecies("Mysterious", "", "mysticus", BeeBranch.Arcane, 0,
+ Allele.Mysterious = new BeeSpecies("Mysterious", "", "mysticus", BeeBranch.Arcane, 0,
0x762bc2, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
false, hideSpecies, true, true);
- BeeSpecies.Mysterious.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 60);
- BeeSpecies.Mysterious.setGenome(BeeGenomeManager.getTemplateMysterious());
- breedingMgr.registerBeeTemplate(BeeSpecies.Mysterious.getGenome());
+ Allele.Mysterious.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 25);
+ Allele.Mysterious.setGenome(BeeGenomeManager.getTemplateMysterious());
+ breedingMgr.registerBeeTemplate(Allele.Mysterious.getGenome());
- BeeSpecies.Arcane = new BeeSpecies("Arcane", "", "arcanus", BeeBranch.Arcane, 0,
+ Allele.Arcane = new BeeSpecies("Arcane", "", "arcanus", BeeBranch.Arcane, 0,
0xd242df, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
true, hideSpecies, true, true);
- BeeSpecies.Arcane.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 80);
- BeeSpecies.Arcane.setGenome(BeeGenomeManager.getTemplateArcane());
- breedingMgr.registerBeeTemplate(BeeSpecies.Arcane.getGenome());
+ Allele.Arcane.addProduct(ItemManager.combs.getStackForType(CombType.OCCULT), 30);
+ Allele.Arcane.setGenome(BeeGenomeManager.getTemplateArcane());
+ breedingMgr.registerBeeTemplate(Allele.Arcane.getGenome());
- BeeSpecies.Charmed = new BeeSpecies("Charmed", "", "larvatus", BeeBranch.Supernatural, 0,
+ Allele.Charmed = new BeeSpecies("Charmed", "", "larvatus", BeeBranch.Supernatural, 0,
0x48EEEC, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
false, hideSpecies, true, true);
- BeeSpecies.Charmed.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 40);
- BeeSpecies.Charmed.setGenome(BeeGenomeManager.getTemplateCharmed());
- breedingMgr.registerBeeTemplate(BeeSpecies.Charmed.getGenome());
+ Allele.Charmed.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 20);
+ Allele.Charmed.setGenome(BeeGenomeManager.getTemplateCharmed());
+ breedingMgr.registerBeeTemplate(Allele.Charmed.getGenome());
- BeeSpecies.Enchanted = new BeeSpecies("Enchanted", "", "cantatus", BeeBranch.Supernatural, 0,
+ Allele.Enchanted = new BeeSpecies("Enchanted", "", "cantatus", BeeBranch.Supernatural, 0,
0x18e726, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
false, hideSpecies, true, true);
- BeeSpecies.Enchanted.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 60);
- BeeSpecies.Enchanted.setGenome(BeeGenomeManager.getTemplateEnchanted());
- breedingMgr.registerBeeTemplate(BeeSpecies.Enchanted.getGenome());
+ Allele.Enchanted.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 30);
+ Allele.Enchanted.setGenome(BeeGenomeManager.getTemplateEnchanted());
+ breedingMgr.registerBeeTemplate(Allele.Enchanted.getGenome());
- BeeSpecies.Supernatural = new BeeSpecies("Supernatural", "", "coeleste", BeeBranch.Supernatural, 0,
+ Allele.Supernatural = new BeeSpecies("Supernatural", "", "coeleste", BeeBranch.Supernatural, 0,
0x005614, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
true, hideSpecies, true, true);
- BeeSpecies.Supernatural.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 80);
- BeeSpecies.Supernatural.setGenome(BeeGenomeManager.getTemplateSupernatural());
- breedingMgr.registerBeeTemplate(BeeSpecies.Supernatural.getGenome());
+ Allele.Supernatural.addProduct(ItemManager.combs.getStackForType(CombType.OTHERWORLDLY), 40);
+ Allele.Supernatural.setGenome(BeeGenomeManager.getTemplateSupernatural());
+ breedingMgr.registerBeeTemplate(Allele.Supernatural.getGenome());
- BeeSpecies.Pupil = new BeeSpecies("Pupil", "", "disciplina", BeeBranch.Scholarly, 0,
+ Allele.Pupil = new BeeSpecies("Pupil", "", "disciplina", BeeBranch.Scholarly, 0,
0xFFFF00, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.ARID,
false, hideSpecies, true, true);
- BeeSpecies.Pupil.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 50);
- BeeSpecies.Pupil.setGenome(BeeGenomeManager.getTemplatePupil());
- breedingMgr.registerBeeTemplate(BeeSpecies.Pupil.getGenome());
+ Allele.Pupil.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 20);
+ Allele.Pupil.setGenome(BeeGenomeManager.getTemplatePupil());
+ breedingMgr.registerBeeTemplate(Allele.Pupil.getGenome());
- BeeSpecies.Scholarly = new BeeSpecies("Scholarly", "", "studiosis", BeeBranch.Scholarly, 0,
+ Allele.Scholarly = new BeeSpecies("Scholarly", "", "studiosis", BeeBranch.Scholarly, 0,
0x6E0000, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.ARID,
false, hideSpecies, true, false);
- BeeSpecies.Scholarly.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 60);
- BeeSpecies.Scholarly.addSpecialty(ItemManager.miscResources.getStackForType(ResourceType.KNOWLEDGE_FRAGMENT), 2);
- BeeSpecies.Scholarly.setGenome(BeeGenomeManager.getTemplateScholarly());
- breedingMgr.registerBeeTemplate(BeeSpecies.Scholarly.getGenome());
+ Allele.Scholarly.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 25);
+ Allele.Scholarly.addSpecialty(ItemManager.miscResources.getStackForType(ResourceType.KNOWLEDGE_FRAGMENT), 2);
+ Allele.Scholarly.setGenome(BeeGenomeManager.getTemplateScholarly());
+ breedingMgr.registerBeeTemplate(Allele.Scholarly.getGenome());
- BeeSpecies.Savant = new BeeSpecies("Savant", "", "philologus", BeeBranch.Scholarly, 0,
+ Allele.Savant = new BeeSpecies("Savant", "", "philologus", BeeBranch.Scholarly, 0,
0x6E1C6D, defaultBodyColour, EnumTemperature.NORMAL, EnumHumidity.ARID,
true, hideSpecies, true, false);
- BeeSpecies.Savant.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 70);
- BeeSpecies.Savant.addSpecialty(ItemManager.miscResources.getStackForType(ResourceType.KNOWLEDGE_FRAGMENT), 5);
- BeeSpecies.Savant.setGenome(BeeGenomeManager.getTemplateSavant());
- breedingMgr.registerBeeTemplate(BeeSpecies.Savant.getGenome());
+ Allele.Savant.addProduct(ItemManager.combs.getStackForType(CombType.PAPERY), 40);
+ Allele.Savant.addSpecialty(ItemManager.miscResources.getStackForType(ResourceType.KNOWLEDGE_FRAGMENT), 5);
+ Allele.Savant.setGenome(BeeGenomeManager.getTemplateSavant());
+ breedingMgr.registerBeeTemplate(Allele.Savant.getGenome());
- BeeSpecies.Stark = new BeeSpecies("Stark", "", "torridus", BeeBranch.Stark, 0,
+ Allele.Stark = new BeeSpecies("Stark", "", "torridus", BeeBranch.Stark, 0,
0xCCCCCC, 0x999999, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
true, hideSpecies, true, false);
- BeeSpecies.Stark.addProduct(ItemManager.combs.getStackForType(CombType.STARK), 75);
- BeeSpecies.Stark.setGenome(BeeGenomeManager.getTemplateStark());
- breedingMgr.registerBeeTemplate(BeeSpecies.Stark.getGenome());
+ Allele.Stark.addProduct(ItemManager.combs.getStackForType(CombType.STARK), 5);
+ Allele.Stark.setGenome(BeeGenomeManager.getTemplateStark());
+ breedingMgr.registerBeeTemplate(Allele.Stark.getGenome());
- BeeSpecies.Air = new BeeSpecies("Aura", "", "ventosa", BeeBranch.Elemental, 0,
+ Allele.Air = new BeeSpecies("Aura", "", "ventosa", BeeBranch.Elemental, 0,
0xD9D636, 0xA19E10, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
true, hideSpecies, true, true);
- BeeSpecies.Air.addProduct(ItemManager.combs.getStackForType(CombType.AIRY), 75);
- BeeSpecies.Air.addSpecialty(ItemManager.quicksilver, 35);
- BeeSpecies.Air.setGenome(BeeGenomeManager.getTemplateAir());
- breedingMgr.registerBeeTemplate(BeeSpecies.Air.getGenome());
+ Allele.Air.addProduct(ItemManager.combs.getStackForType(CombType.AIRY), 20);
+ Allele.Air.addSpecialty(ItemManager.quicksilver, 10);
+ Allele.Air.setGenome(BeeGenomeManager.getTemplateAir());
+ breedingMgr.registerBeeTemplate(Allele.Air.getGenome());
- BeeSpecies.Fire = new BeeSpecies("Ignis", "", "praefervidus", BeeBranch.Elemental, 0,
+ Allele.Fire = new BeeSpecies("Ignis", "", "praefervidus", BeeBranch.Elemental, 0,
0xE50B0B, 0x95132F, EnumTemperature.HOT, EnumHumidity.ARID,
true, hideSpecies, true, true);
- BeeSpecies.Fire.addProduct(ItemManager.combs.getStackForType(CombType.FIREY), 75);
- BeeSpecies.Fire.addSpecialty(new ItemStack(Item.blazePowder), 35);
- BeeSpecies.Fire.setGenome(BeeGenomeManager.getTemplateFire());
- breedingMgr.registerBeeTemplate(BeeSpecies.Fire.getGenome());
+ Allele.Fire.addProduct(ItemManager.combs.getStackForType(CombType.FIREY), 20);
+ Allele.Fire.addSpecialty(new ItemStack(Item.blazePowder), 8);
+ Allele.Fire.setGenome(BeeGenomeManager.getTemplateFire());
+ breedingMgr.registerBeeTemplate(Allele.Fire.getGenome());
- BeeSpecies.Water = new BeeSpecies("Aqua", "", "umidus", BeeBranch.Elemental, 0,
+ Allele.Water = new BeeSpecies("Aqua", "", "umidus", BeeBranch.Elemental, 0,
0x36CFD9, 0x1054A1, EnumTemperature.NORMAL, EnumHumidity.DAMP,
true, hideSpecies, true, true);
- BeeSpecies.Water.addProduct(ItemManager.combs.getStackForType(CombType.WATERY), 75);
- BeeSpecies.Water.addSpecialty(new ItemStack(Block.ice), 35);
- BeeSpecies.Water.setGenome(BeeGenomeManager.getTemplateWater());
- breedingMgr.registerBeeTemplate(BeeSpecies.Water.getGenome());
+ Allele.Water.addProduct(ItemManager.combs.getStackForType(CombType.WATERY), 20);
+ Allele.Water.addSpecialty(new ItemStack(Block.ice), 8);
+ Allele.Water.setGenome(BeeGenomeManager.getTemplateWater());
+ breedingMgr.registerBeeTemplate(Allele.Water.getGenome());
- BeeSpecies.Earth = new BeeSpecies("Solum", "", "sordida", BeeBranch.Elemental, 0,
+ Allele.Earth = new BeeSpecies("Solum", "", "sordida", BeeBranch.Elemental, 0,
0x005100, 0x00a000, EnumTemperature.NORMAL, EnumHumidity.NORMAL,
true, hideSpecies, true, true);
- BeeSpecies.Earth.addProduct(ItemManager.combs.getStackForType(CombType.EARTHY), 75);
- BeeSpecies.Earth.addSpecialty(ItemManager.amber, 35);
- BeeSpecies.Earth.setGenome(BeeGenomeManager.getTemplateEarth());
- breedingMgr.registerBeeTemplate(BeeSpecies.Earth.getGenome());
+ Allele.Earth.addProduct(ItemManager.combs.getStackForType(CombType.EARTHY), 30);
+ Allele.Earth.addSpecialty(ItemManager.amber, 10);
+ Allele.Earth.setGenome(BeeGenomeManager.getTemplateEarth());
+ breedingMgr.registerBeeTemplate(Allele.Earth.getGenome());
}
private void setupBeeMutations()
{
- BeeMutation.Esoteric = new BeeMutation(BeeSpecies.getBaseSpecies("Imperial"), BeeSpecies.getBaseSpecies("Demonic"), BeeSpecies.Esoteric.getGenome(), 10, false);
- BeeMutation.Esoteric1 = new BeeMutation(BeeSpecies.getBaseSpecies("Heroic"), BeeSpecies.getBaseSpecies("Demonic"), BeeSpecies.Esoteric.getGenome(), 25, false);
- BeeMutation.Mysterious = new BeeMutation(BeeSpecies.Esoteric, BeeSpecies.getBaseSpecies("Ended"), BeeSpecies.Mysterious.getGenome(), 10, false);
- BeeMutation.Arcane = new BeeMutation(BeeSpecies.Esoteric, BeeSpecies.Mysterious, BeeSpecies.Arcane.getGenome(), 8, false);
- BeeMutation.Charmed = new BeeMutation(BeeSpecies.getBaseSpecies("Cultivated"), BeeSpecies.getBaseSpecies("Valiant"), BeeSpecies.Charmed.getGenome(), 20, false);
- BeeMutation.Enchanted = new BeeMutation(BeeSpecies.Charmed, BeeSpecies.getBaseSpecies("Valiant"), BeeSpecies.Enchanted.getGenome(), 8, false);
- BeeMutation.Supernatural = new BeeMutation(BeeSpecies.Charmed, BeeSpecies.Enchanted, BeeSpecies.Supernatural.getGenome(), 8, false);
- BeeMutation.Pupil = new BeeMutation(BeeSpecies.Arcane, BeeSpecies.Enchanted, BeeSpecies.Pupil.getGenome(), 10, false);
- BeeMutation.Scholarly = new BeeMutation(BeeSpecies.Pupil, BeeSpecies.Arcane, BeeSpecies.Scholarly.getGenome(), 8, false);
- BeeMutation.Savant = new BeeMutation(BeeSpecies.Pupil, BeeSpecies.Scholarly, BeeSpecies.Savant.getGenome(), 6, false);
- BeeMutation.Stark = new BeeMutation(BeeSpecies.Arcane, BeeSpecies.Supernatural, BeeSpecies.Stark.getGenome(), 8, false);
+ // Mutations are registered with the BreedingManager in their constructor.
+
+ BeeMutation.Esoteric = new BeeMutation(Allele.getBaseSpecies("Imperial"), Allele.getBaseSpecies("Demonic"), Allele.Esoteric.getGenome(), 10, false);
+ BeeMutation.Esoteric1 = new BeeMutation(Allele.getBaseSpecies("Heroic"), Allele.getBaseSpecies("Demonic"), Allele.Esoteric.getGenome(), 25, false);
+ BeeMutation.Mysterious = new BeeMutation(Allele.Esoteric, Allele.getBaseSpecies("Ended"), Allele.Mysterious.getGenome(), 10, false);
+ BeeMutation.Arcane = new BeeMutation(Allele.Esoteric, Allele.Mysterious, Allele.Arcane.getGenome(), 8, false);
+ BeeMutation.Charmed = new BeeMutation(Allele.getBaseSpecies("Cultivated"), Allele.getBaseSpecies("Valiant"), Allele.Charmed.getGenome(), 20, false);
+ BeeMutation.Enchanted = new BeeMutation(Allele.Charmed, Allele.getBaseSpecies("Valiant"), Allele.Enchanted.getGenome(), 8, false);
+ BeeMutation.Supernatural = new BeeMutation(Allele.Charmed, Allele.Enchanted, Allele.Supernatural.getGenome(), 8, false);
+ BeeMutation.Pupil = new BeeMutation(Allele.Arcane, Allele.Enchanted, Allele.Pupil.getGenome(), 10, false);
+ BeeMutation.Scholarly = new BeeMutation(Allele.Pupil, Allele.Arcane, Allele.Scholarly.getGenome(), 8, false);
+ BeeMutation.Savant = new BeeMutation(Allele.Pupil, Allele.Scholarly, Allele.Savant.getGenome(), 6, false);
+ BeeMutation.Stark = new BeeMutation(Allele.Arcane, Allele.Supernatural, Allele.Stark.getGenome(), 8, false);
}
public static void setupBeeInfusions(World world)
{
try
{
- ItemStack starkDrone = BeeSpecies.Stark.getBeeItem(world, EnumBeeType.DRONE);
- ItemStack starkPrincess = BeeSpecies.Stark.getBeeItem(world, EnumBeeType.PRINCESS);
- ItemStack airDrone = BeeSpecies.Air.getBeeItem(world, EnumBeeType.DRONE);
- ItemStack airPrincess = BeeSpecies.Air.getBeeItem(world, EnumBeeType.PRINCESS);
- ItemStack waterDrone = BeeSpecies.Water.getBeeItem(world, EnumBeeType.DRONE);
- ItemStack waterPrincess = BeeSpecies.Water.getBeeItem(world, EnumBeeType.PRINCESS);
- ItemStack earthDrone = BeeSpecies.Earth.getBeeItem(world, EnumBeeType.DRONE);
- ItemStack earthPrincess = BeeSpecies.Earth.getBeeItem(world, EnumBeeType.PRINCESS);
- ItemStack fireDrone = BeeSpecies.Fire.getBeeItem(world, EnumBeeType.DRONE);
- ItemStack firePrincess = BeeSpecies.Fire.getBeeItem(world, EnumBeeType.PRINCESS);
+ ItemStack starkDrone = Allele.Stark.getBeeItem(world, EnumBeeType.DRONE);
+ ItemStack starkPrincess = Allele.Stark.getBeeItem(world, EnumBeeType.PRINCESS);
+ ItemStack airDrone = Allele.Air.getBeeItem(world, EnumBeeType.DRONE);
+ ItemStack airPrincess = Allele.Air.getBeeItem(world, EnumBeeType.PRINCESS);
+ ItemStack waterDrone = Allele.Water.getBeeItem(world, EnumBeeType.DRONE);
+ ItemStack waterPrincess = Allele.Water.getBeeItem(world, EnumBeeType.PRINCESS);
+ ItemStack earthDrone = Allele.Earth.getBeeItem(world, EnumBeeType.DRONE);
+ ItemStack earthPrincess = Allele.Earth.getBeeItem(world, EnumBeeType.PRINCESS);
+ ItemStack fireDrone = Allele.Fire.getBeeItem(world, EnumBeeType.DRONE);
+ ItemStack firePrincess = Allele.Fire.getBeeItem(world, EnumBeeType.PRINCESS);
Item shard = (Item) Class.forName("thaumcraft.common.Config").getDeclaredField("itemShard").get(null);
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/Allele.java b/thaumicbees_src/thaumicbees/bees/genetics/Allele.java
index f7669be..a965867 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/Allele.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/Allele.java
@@ -1,17 +1,51 @@
package thaumicbees.bees.genetics;
+import forestry.api.apiculture.IAlleleBeeSpecies;
+import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
public class Allele implements IAllele
{
-
+ public static BeeSpecies Esoteric;
+ public static BeeSpecies Mysterious;
+ public static BeeSpecies Arcane;
+ public static BeeSpecies Charmed;
+ public static BeeSpecies Enchanted;
+ public static BeeSpecies Supernatural;
+ public static BeeSpecies Pupil;
+ public static BeeSpecies Scholarly;
+ public static BeeSpecies Savant;
+ public static BeeSpecies Stark;
+ public static BeeSpecies Air;
+ public static BeeSpecies Water;
+ public static BeeSpecies Earth;
+ public static BeeSpecies Fire;
+
+ public static AlleleFlower flowerBookshelf;
+ public static AlleleFlower flowerThaumcraft;
+
+ public static AlleleEffectCure cleansingEffect;
+ public static AlleleEffectPotion digSpeed;
+ public static AlleleEffectPotion moveSpeed;
+
private String uid;
private boolean dominant;
+
+ public static IAlleleBeeSpecies getBaseSpecies(String name)
+ {
+ return (IAlleleBeeSpecies) AlleleManager.alleleRegistry.getAllele((new StringBuilder()).append("forestry.species").append(name).toString());
+ }
+
+ public static IAllele getBaseAllele(String name)
+ {
+ return AlleleManager.alleleRegistry.getAllele("forestry." + name);
+ }
public Allele(String id, boolean isDominant)
{
this.uid = "thaumicbees." + id;
this.dominant = isDominant;
+ AlleleManager.alleleRegistry.registerAllele(this);
}
@Override
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffect.java b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffect.java
new file mode 100644
index 0000000..ae6ef19
--- /dev/null
+++ b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffect.java
@@ -0,0 +1,59 @@
+package thaumicbees.bees.genetics;
+
+import thaumicbees.main.ThaumicBees;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.genetics.IEffectData;
+
+public abstract class AlleleEffect extends Allele implements IAlleleBeeEffect
+{
+
+ public AlleleEffect(String id, boolean isDominant)
+ {
+ super(id, isDominant);
+ }
+
+ @Override
+ public boolean isCombinable()
+ {
+ return false;
+ }
+
+ @Override
+ public abstract IEffectData validateStorage(IEffectData storedData);
+
+ @Override
+ public abstract String getIdentifier();
+
+ @Override
+ public abstract IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing);
+
+ @Override
+ public IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
+ {
+ int[] area = genome.getTerritory();
+ float mod = housing.getTerritoryModifier(genome);
+ // Check to make sure territory is at least 1 with housing modifications
+ area[0] = Math.min((int)(area[0] * mod), 1);
+ area[1] = Math.min((int)(area[1] * mod), 1);
+ area[2] = Math.min((int)(area[2] * mod), 1);
+
+ ThaumicBees.proxy.drawBeeEffects(housing.getWorld(), housing.getXCoord(), housing.getYCoord(), housing.getZCoord(),
+ genome.getPrimaryAsBee().getPrimaryColor(), area[0], area[1], area[2]);
+ return storedData;
+ }
+
+ @Override
+ public String getIconTextureFile()
+ {
+ return null;
+ }
+
+ @Override
+ public int getIconIndex()
+ {
+ return -1;
+ }
+
+}
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectCure.java b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectCure.java
new file mode 100644
index 0000000..6cf608e
--- /dev/null
+++ b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectCure.java
@@ -0,0 +1,87 @@
+package thaumicbees.bees.genetics;
+
+import java.util.List;
+
+import thaumicbees.bees.EffectData;
+import thaumicbees.main.ThaumicBees;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.AxisAlignedBB;
+import forestry.api.apiculture.IAlleleBeeEffect;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.genetics.AlleleManager;
+import forestry.api.genetics.IEffectData;
+
+public class AlleleEffectCure extends AlleleEffect
+{
+
+ public AlleleEffectCure(String id, boolean isDominant)
+ {
+ super(id, isDominant);
+ }
+
+ @Override
+ public IEffectData validateStorage(IEffectData storedData)
+ {
+ if (storedData == null)
+ {
+ storedData = new EffectData(1, 0, 0);
+ }
+ return storedData;
+ }
+
+ @Override
+ public String getIdentifier()
+ {
+ return "Cleansing";
+ }
+
+ @Override
+ public IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
+ {
+ int count = storedData.getInteger(0);
+
+ if (count == 200)
+ {
+ // Get the size of the affected area
+ int[] area = genome.getTerritory();
+
+ // Calculate offset
+ int[] min = new int[3];
+ int[] max = new int[3];
+ min[0] = housing.getXCoord() - area[0] / 2;
+ max[0] = housing.getXCoord() + area[0] / 2;
+
+ min[1] = housing.getYCoord() - area[1] / 2;
+ max[1] = housing.getYCoord() + area[1] / 2;
+
+ min[2] = housing.getZCoord() - area[2] / 2;
+ max[2] = housing.getZCoord() + area[2] / 2;
+
+ AxisAlignedBB bounds = AxisAlignedBB.getAABBPool().addOrModifyAABBInPool(min[0], min[1], min[2], max[0], max[1], max[2]);
+ List entityList = housing.getWorld().getEntitiesWithinAABB(EntityPlayer.class, bounds);
+
+ for (Entity e : entityList)
+ {
+ if (e instanceof EntityPlayer)
+ {
+ EntityPlayer player = (EntityPlayer)e;
+ player.curePotionEffects(new ItemStack(Item.bucketMilk));
+ }
+ }
+ storedData.setInteger(0, 0);
+ }
+ else
+ {
+ storedData.setInteger(0, count + 1);
+ }
+
+ return storedData;
+ }
+
+}
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectPotion.java b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectPotion.java
index 15d4184..bf96317 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectPotion.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectPotion.java
@@ -1,13 +1,20 @@
package thaumicbees.bees.genetics;
+import java.util.List;
+
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.Potion;
+import net.minecraft.potion.PotionEffect;
+import net.minecraft.util.AxisAlignedBB;
import thaumicbees.bees.EffectData;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
+import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IEffectData;
-public class AlleleEffectPotion extends Allele implements IAlleleBeeEffect
+public class AlleleEffectPotion extends AlleleEffect
{
private int potionId;
private int duration;
@@ -18,19 +25,13 @@ public class AlleleEffectPotion extends Allele implements IAlleleBeeEffect
super("effect" + name, isDominant);
this.beealyzerId = readableName;
this.potionId = potionApplied.id;
- this.duration = effectDuration;
- }
-
- @Override
- public boolean isCombinable()
- {
- return false;
+ this.duration = 20 * effectDuration;
}
@Override
public IEffectData validateStorage(IEffectData storedData)
{
- if (!(storedData instanceof EffectData))
+ if (storedData == null)
{
storedData = new EffectData(1, 0, 0);
}
@@ -46,15 +47,44 @@ public class AlleleEffectPotion extends Allele implements IAlleleBeeEffect
@Override
public IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
{
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- public IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing)
- {
- // TODO Auto-generated method stub
- return null;
+ int count = storedData.getInteger(0);
+
+ if (count == 200)
+ {
+ // Get the size of the affected area
+ int[] area = genome.getTerritory();
+
+ // Calculate offset
+ int[] min = new int[3];
+ int[] max = new int[3];
+ min[0] = housing.getXCoord() - area[0] / 2;
+ max[0] = housing.getXCoord() + area[0] / 2;
+
+ min[1] = housing.getYCoord() - area[1] / 2;
+ max[1] = housing.getYCoord() + area[1] / 2;
+
+ min[2] = housing.getZCoord() - area[2] / 2;
+ max[2] = housing.getZCoord() + area[2] / 2;
+
+ AxisAlignedBB bounds = AxisAlignedBB.getAABBPool().addOrModifyAABBInPool(min[0], min[1], min[2], max[0], max[1], max[2]);
+ List entityList = housing.getWorld().getEntitiesWithinAABB(EntityPlayer.class, bounds);
+
+ for (Entity e : entityList)
+ {
+ if (e instanceof EntityPlayer)
+ {
+ EntityPlayer player = (EntityPlayer)e;
+ player.addPotionEffect(new PotionEffect(this.potionId, this.duration, 0));
+ }
+ }
+ storedData.setInteger(0, 0);
+ }
+ else
+ {
+ storedData.setInteger(0, count + 1);
+ }
+
+ return storedData;
}
@Override
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/AlleleFlower.java b/thaumicbees_src/thaumicbees/bees/genetics/AlleleFlower.java
index c9f9e12..302ff39 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/AlleleFlower.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/AlleleFlower.java
@@ -6,10 +6,6 @@ import forestry.api.genetics.AlleleManager;
public class AlleleFlower extends Allele implements IAlleleFlowers
{
-
- public static AlleleFlower alleleFlowerBookshelf;
- public static AlleleFlower alleleFlowerThaumcraft;
-
private String uid;
private IFlowerProvider provider;
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/BeeGenomeManager.java b/thaumicbees_src/thaumicbees/bees/genetics/BeeGenomeManager.java
index 16a32f7..c742207 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/BeeGenomeManager.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/BeeGenomeManager.java
@@ -17,19 +17,19 @@ public class BeeGenomeManager
{
IAllele[] genome = new IAllele[EnumBeeChromosome.values().length];
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Esoteric;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedSlowest");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanShorter");
- genome[EnumBeeChromosome.FERTILITY.ordinal()] = AlleleManager.getAllele("fertilityNormal");
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceNone");
- genome[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.getAllele("boolFalse");
- genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceNone");
- genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.getAllele("boolFalse");
- genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = AlleleManager.getAllele("boolFalse");
- genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = AlleleManager.getAllele("flowersVanilla");
- genome[EnumBeeChromosome.FLOWERING.ordinal()] = AlleleManager.getAllele("floweringSlowest");
- genome[EnumBeeChromosome.TERRITORY.ordinal()] = AlleleManager.getAllele("territoryDefault");
- genome[EnumBeeChromosome.EFFECT.ordinal()] = AlleleManager.getAllele("effectNone");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Esoteric;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedSlowest");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanShorter");
+ genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityNormal");
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceNone");
+ genome[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.getBaseAllele("boolFalse");
+ genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceNone");
+ genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolFalse");
+ genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = Allele.getBaseAllele("boolFalse");
+ genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = Allele.getBaseAllele("flowersVanilla");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringSlowest");
+ genome[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.getBaseAllele("territoryDefault");
+ genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.getBaseAllele("effectNone");
return genome;
}
@@ -39,9 +39,9 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseThaumic();
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth1");
- genome[EnumBeeChromosome.FLOWERING.ordinal()] = AlleleManager.getAllele("floweringSlow");
- genome[EnumBeeChromosome.FERTILITY.ordinal()] = AlleleManager.getAllele("fertilityHigh");
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth1");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringSlow");
+ genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityHigh");
return genome;
}
@@ -51,7 +51,7 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseArcane();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Esoteric;
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Esoteric;
return genome;
}
@@ -60,8 +60,8 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseArcane();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Mysterious;
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth2");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Mysterious;
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth2");
return genome;
}
@@ -70,10 +70,10 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseArcane();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Arcane;
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth2");
- genome[EnumBeeChromosome.FERTILITY.ordinal()] = AlleleManager.getAllele("fertilityNormal");
- genome[EnumBeeChromosome.FLOWERING.ordinal()] = AlleleManager.getAllele("floweringAverage");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Arcane;
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth2");
+ genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityNormal");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringAverage");
return genome;
}
@@ -82,9 +82,9 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseThaumic();
- genome[EnumBeeChromosome.NOCTURNAL.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedNorm");
- genome[EnumBeeChromosome.FLOWERING.ordinal()] = AlleleManager.getAllele("floweringSlowest");
+ genome[EnumBeeChromosome.NOCTURNAL.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedNorm");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringSlowest");
return genome;
}
@@ -93,7 +93,7 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseSupernatural();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Charmed;
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Charmed;
return genome;
}
@@ -102,8 +102,8 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseSupernatural();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Enchanted;
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth1");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Enchanted;
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth1");
return genome;
}
@@ -112,9 +112,9 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseSupernatural();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Supernatural;
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth2");
- genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceBoth1");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Supernatural;
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth2");
+ genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceBoth1");
return genome;
}
@@ -123,10 +123,10 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseThaumic();
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedSlow");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanElongated");
- genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = AlleleFlower.alleleFlowerBookshelf;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedSlow");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanElongated");
+ genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = AlleleFlower.flowerBookshelf;
return genome;
}
@@ -135,8 +135,8 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseScholarly();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Pupil;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedSlower");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Pupil;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedSlower");
return genome;
}
@@ -145,8 +145,8 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseScholarly();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Scholarly;
- genome[EnumBeeChromosome.FERTILITY.ordinal()] = AlleleManager.getAllele("fertilityLow");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Scholarly;
+ genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityLow");
return genome;
}
@@ -155,9 +155,9 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseScholarly();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Savant;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedNorm");
- genome[EnumBeeChromosome.FERTILITY.ordinal()] = AlleleManager.getAllele("fertilityLow");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Savant;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedNorm");
+ genome[EnumBeeChromosome.FERTILITY.ordinal()] = Allele.getBaseAllele("fertilityLow");
return genome;
}
@@ -166,7 +166,7 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseThaumic();
- genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = AlleleFlower.alleleFlowerThaumcraft;
+ genome[EnumBeeChromosome.FLOWER_PROVIDER.ordinal()] = AlleleFlower.flowerThaumcraft;
return genome;
}
@@ -175,7 +175,7 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseElemental();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Stark;
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Stark;
return genome;
}
@@ -184,12 +184,13 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseElemental();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Air;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedFastest");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanShortened");
- genome[EnumBeeChromosome.TERRITORY.ordinal()] = AlleleManager.getAllele("territoryLargest");
- genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.FLOWERING.ordinal()] = AlleleManager.getAllele("floweringFastest");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Air;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedFastest");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanShortened");
+ genome[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.getBaseAllele("territoryLargest");
+ genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringMaximum");
+ genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.moveSpeed;
return genome;
}
@@ -198,13 +199,13 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseElemental();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Fire;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedFaster");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanNormal");
- genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceDown3");
- genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceUp2");
- genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.EFFECT.ordinal()] = AlleleManager.getAllele("effectIgnition");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Fire;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedFaster");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanNormal");
+ genome[EnumBeeChromosome.TEMPERATURE_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceDown3");
+ genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceUp2");
+ genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.getBaseAllele("effectIgnition");
return genome;
}
@@ -213,12 +214,13 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseElemental();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Water;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedFast");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanLong");
- genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceDown2");
- genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.TERRITORY.ordinal()] = AlleleManager.getAllele("territoryLarge");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Water;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedFast");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanLong");
+ genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceDown2");
+ genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.TERRITORY.ordinal()] = Allele.getBaseAllele("territoryLarge");
+ genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.cleansingEffect;
return genome;
}
@@ -227,12 +229,14 @@ public class BeeGenomeManager
{
IAllele[] genome = getTemplateBaseElemental();
- genome[EnumBeeChromosome.SPECIES.ordinal()] = BeeSpecies.Earth;
- genome[EnumBeeChromosome.SPEED.ordinal()] = AlleleManager.getAllele("speedSlow");
- genome[EnumBeeChromosome.LIFESPAN.ordinal()] = AlleleManager.getAllele("lifespanLonger");
- genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = AlleleManager.getAllele("toleranceDown1");
- genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = AlleleManager.getAllele("boolTrue");
- genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = AlleleManager.getAllele("boolTrue");
+ genome[EnumBeeChromosome.SPECIES.ordinal()] = Allele.Earth;
+ genome[EnumBeeChromosome.SPEED.ordinal()] = Allele.getBaseAllele("speedSlow");
+ genome[EnumBeeChromosome.LIFESPAN.ordinal()] = Allele.getBaseAllele("lifespanLonger");
+ genome[EnumBeeChromosome.HUMIDITY_TOLERANCE.ordinal()] = Allele.getBaseAllele("toleranceDown1");
+ genome[EnumBeeChromosome.TOLERANT_FLYER.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.CAVE_DWELLING.ordinal()] = Allele.getBaseAllele("boolTrue");
+ genome[EnumBeeChromosome.FLOWERING.ordinal()] = Allele.getBaseAllele("floweringFast");
+ genome[EnumBeeChromosome.EFFECT.ordinal()] = Allele.digSpeed;
return genome;
}
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/BeeMutation.java b/thaumicbees_src/thaumicbees/bees/genetics/BeeMutation.java
index b2091a5..4478673 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/BeeMutation.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/BeeMutation.java
@@ -35,6 +35,8 @@ public class BeeMutation implements IBeeMutation
mutationTemplate = producesGenome;
baseChance = percentChance;
isSecret = hide;
+
+ BeeManager.breedingManager.registerBeeMutation(this);
}
public int getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1)
diff --git a/thaumicbees_src/thaumicbees/bees/genetics/BeeSpecies.java b/thaumicbees_src/thaumicbees/bees/genetics/BeeSpecies.java
index 8b9b2ae..6859258 100644
--- a/thaumicbees_src/thaumicbees/bees/genetics/BeeSpecies.java
+++ b/thaumicbees_src/thaumicbees/bees/genetics/BeeSpecies.java
@@ -12,22 +12,6 @@ import net.minecraft.world.World;
public class BeeSpecies extends Allele implements IAlleleBeeSpecies
{
-
- public static BeeSpecies Esoteric;
- public static BeeSpecies Mysterious;
- public static BeeSpecies Arcane;
- public static BeeSpecies Charmed;
- public static BeeSpecies Enchanted;
- public static BeeSpecies Supernatural;
- public static BeeSpecies Pupil;
- public static BeeSpecies Scholarly;
- public static BeeSpecies Savant;
- public static BeeSpecies Stark;
- public static BeeSpecies Air;
- public static BeeSpecies Water;
- public static BeeSpecies Earth;
- public static BeeSpecies Fire;
-
private String name;
private String descripton;
private String binomial;
@@ -45,11 +29,6 @@ public class BeeSpecies extends Allele implements IAlleleBeeSpecies
private HashMap specialty;
private IAllele genomeTemplate[];
- public static IAlleleBeeSpecies getBaseSpecies(String name)
- {
- return (IAlleleBeeSpecies) AlleleManager.alleleRegistry.getAllele((new StringBuilder()).append("forestry.species").append(name).toString());
- }
-
public BeeSpecies(String speciesName, String speciesDescription, String genusName, IBranch parentBranch, int firstColour, int secondColour, EnumTemperature preferredTemp, EnumHumidity preferredHumidity, boolean hasGlowEffect, boolean isSpeciesDominant)
{
this(speciesName, speciesDescription, genusName, parentBranch, 0, firstColour, secondColour, preferredTemp, preferredHumidity, hasGlowEffect, true, true, isSpeciesDominant);
@@ -73,7 +52,6 @@ public class BeeSpecies extends Allele implements IAlleleBeeSpecies
products = new HashMap();
specialty = new HashMap();
this.genomeTemplate = new IAllele[EnumBeeChromosome.values().length];
- AlleleManager.alleleRegistry.registerAllele(this);
}
public BeeSpecies setGene(EnumBeeChromosome chromosome, IAllele allele)
diff --git a/thaumicbees_src/thaumicbees/main/ClientProxy.java b/thaumicbees_src/thaumicbees/main/ClientProxy.java
index 0de90d1..67dd0c1 100644
--- a/thaumicbees_src/thaumicbees/main/ClientProxy.java
+++ b/thaumicbees_src/thaumicbees/main/ClientProxy.java
@@ -1,8 +1,12 @@
package thaumicbees.main;
+import thaumicbees.main.render.BeeRenderEffect;
+import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
+import forestry.apiculture.render.EntityBeeFX;
+import forestry.core.proxy.Proxies;
@SideOnly(Side.CLIENT)
public class ClientProxy extends CommonProxy
@@ -14,7 +18,33 @@ public class ClientProxy extends CommonProxy
public void preloadTextures()
{
// Preload the TCBees items file
- MinecraftForgeClient.preloadTexture(TCBEES_ITEMS);
+ MinecraftForgeClient.preloadTexture(TCBEES_ITEMSPNG);
+ }
+
+ @Override
+ public void drawBeeEffects(World world, double xPos, double yPos, double zPos, int colour, int rangeX, int rangeY, int rangeZ)
+ {
+ // drawParticleEffects flag pulled from Forestry after configs
+ if (ThaumicBees.object.configFlags.drawParticleEffects)
+ {
+ double spawnX = xPos;
+ double spawnY = yPos;
+ double spawnZ = zPos;
+
+ if (world.rand.nextBoolean())
+ {
+ spawnX += 0.5;
+ spawnY += 0.5;
+ spawnZ += 0.5;
+ }
+ else
+ {
+ spawnX += world.rand.nextInt(rangeX * 2) - rangeX;
+ spawnY += world.rand.nextInt(rangeY);
+ spawnZ += world.rand.nextInt(rangeZ * 2) - rangeY;
+ }
+
+ this.getClientInstance().effectRenderer.addEffect(new BeeRenderEffect(world, spawnX, spawnY, spawnZ, 0f, 0f, 0f, colour));
+ }
}
-
}
diff --git a/thaumicbees_src/thaumicbees/main/CommonProxy.java b/thaumicbees_src/thaumicbees/main/CommonProxy.java
index b2c5b4f..2a66cf9 100644
--- a/thaumicbees_src/thaumicbees/main/CommonProxy.java
+++ b/thaumicbees_src/thaumicbees/main/CommonProxy.java
@@ -1,12 +1,17 @@
package thaumicbees.main;
+import cpw.mods.fml.client.FMLClientHandler;
+import net.minecraft.client.Minecraft;
+import net.minecraft.world.World;
+
public class CommonProxy
{
- public static String TCBEES_GFX = "/gfx/thaumicbees";
- public static String TCBEES_RESEARCH = "/research/thaumicbees";
- public static String TCBEES_ITEMS = TCBEES_GFX + "/items/";
+ public static String TCBEES_GFX = "/gfx/thaumicbees/";
+ public static String TCBEES_RESEARCH = "/research/thaumicbees/";
+ public static String TCBEES_ITEMS = TCBEES_GFX + "items/";
public static String FORESTRY_GFX_ITEMS;
+ public static String FORESTRY_GFX_BEEEFFECTS;
public static String TCBEES_ITEMSPNG = TCBEES_ITEMS + "items.png";
@@ -16,5 +21,15 @@ public class CommonProxy
{
// Does nothing here.
}
+
+ public void drawBeeEffects(World world, double xPos, double yPos, double zPos, int colour, int rangeX, int rangeY, int rangeZ)
+ {
+ // Does nothing in common.
+ }
+
+ public Minecraft getClientInstance()
+ {
+ return FMLClientHandler.instance().getClient();
+ }
}
diff --git a/thaumicbees_src/thaumicbees/main/ConfigFlags.java b/thaumicbees_src/thaumicbees/main/ConfigFlags.java
new file mode 100644
index 0000000..16b0b02
--- /dev/null
+++ b/thaumicbees_src/thaumicbees/main/ConfigFlags.java
@@ -0,0 +1,7 @@
+package thaumicbees.main;
+
+public class ConfigFlags
+{
+ public boolean drawParticleEffects;
+
+}
diff --git a/thaumicbees_src/thaumicbees/main/ThaumicBees.java b/thaumicbees_src/thaumicbees/main/ThaumicBees.java
index 103563c..7aaefbc 100644
--- a/thaumicbees_src/thaumicbees/main/ThaumicBees.java
+++ b/thaumicbees_src/thaumicbees/main/ThaumicBees.java
@@ -25,7 +25,13 @@ import thaumicbees.item.ItemComb;
import thaumicbees.item.ItemWax;
import thaumicbees.item.ItemManager;
-@Mod(modid="ThaumicBees", name="Thaumic Bees", version="0.0", dependencies="required-after:Forestry;required-after:Thaumcraft")
+@Mod(
+ modid="ThaumicBees",
+ useMetadata=true,
+ acceptedMinecraftVersions="1.4.6",
+ version="@VERSION@-@BUILD_NUMBER@",
+ dependencies="required-after:Forestry@[1.6.5.4,);required-after:Thaumcraft@[3.0.1c,)"
+)
public class ThaumicBees
{
@@ -37,18 +43,18 @@ public class ThaumicBees
private boolean ThaumcraftRecipesAdded;
private Configuration config;
-
+ public ConfigFlags configFlags;
public ThaumicBees()
{
ThaumcraftRecipesAdded = false;
+ this.configFlags = new ConfigFlags();
}
@Mod.PreInit
public void preInit(FMLPreInitializationEvent event)
{
this.config = new Configuration(event.getSuggestedConfigurationFile());
- this.proxy.preloadTextures();
}
@Mod.Init
@@ -56,6 +62,7 @@ public class ThaumicBees
{
// Give ThaumcraftCompat a chance to set itself up.
ThaumcraftCompat.init();
+ this.proxy.preloadTextures();
// Grab Forestry graphics file path
proxy.FORESTRY_GFX_ITEMS = ItemInterface.getItem("beeComb").getItem().getTextureFile();
diff --git a/thaumicbees_src/thaumicbees/main/render/BeeRenderEffect.java b/thaumicbees_src/thaumicbees/main/render/BeeRenderEffect.java
new file mode 100644
index 0000000..911490f
--- /dev/null
+++ b/thaumicbees_src/thaumicbees/main/render/BeeRenderEffect.java
@@ -0,0 +1,102 @@
+package thaumicbees.main.render;
+
+import org.lwjgl.opengl.GL11;
+
+import thaumicbees.main.CommonProxy;
+import thaumicbees.main.ThaumicBees;
+
+import net.minecraft.client.particle.EntityFX;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.world.World;
+import net.minecraftforge.client.ForgeHooksClient;
+
+/**
+ * Borrowed from Forestry with some modifications.
+ */
+public class BeeRenderEffect extends EntityFX
+{
+ public int blendmode = 1;
+ private String texture = CommonProxy.FORESTRY_GFX_BEEEFFECTS;
+
+ public BeeRenderEffect(World world, double x, double y, double z, float motionScaleX, float motionScaleY, float motionScaleZ, int color)
+ {
+
+ super(world, x, y, z, 0.0D, 0.0D, 0.0D);
+
+ // Colour is stored in 4-byte int: XXRRGGBB
+ particleRed = (color >> 16 & 255) / 255.0F;
+ particleGreen = (color >> 8 & 255) / 255.0F;
+ particleBlue = (color & 255) / 255.0F;
+
+ this.setParticleTextureIndex(0);
+ this.setSize(0.1F, 0.1F);
+ this.particleScale *= 0.2F;
+ this.particleMaxAge = (int) (20.0D / (Math.random() * 0.8D + 0.2D));
+ this.noClip = true;
+
+ this.motionX *= 0.119999999552965164D;
+ this.motionY *= 0.119999999552965164D;
+ this.motionZ *= 0.119999999552965164D;
+
+ }
+
+ /**
+ * Called to update the entity's position/logic.
+ */
+ public void onUpdate()
+ {
+
+ this.prevPosX = this.posX;
+ this.prevPosY = this.posY;
+ this.prevPosZ = this.posZ;
+ this.moveEntity(this.motionX, this.motionY, this.motionZ);
+ this.motionX *= 1.08D;
+ this.motionY *= 1.08D;
+ this.motionZ *= 1.08D;
+
+ if (this.particleMaxAge-- <= 0)
+ {
+ this.setDead();
+ }
+ }
+
+ public void renderParticle(Tessellator tessellator, float f, float f1, float f2, float f3, float f4, float f5)
+ {
+
+ tessellator.draw();
+ GL11.glPushMatrix();
+
+ GL11.glDepthMask(false);
+ GL11.glEnable(3042);
+ GL11.glBlendFunc(770, blendmode);
+
+ ForgeHooksClient.bindTexture(texture, 0);
+
+ GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
+
+ float f10 = 0.1F * particleScale;
+ float f11 = (float) ((prevPosX + (posX - prevPosX) * f) - interpPosX);
+ float f12 = (float) ((prevPosY + (posY - prevPosY) * f) - interpPosY);
+ float f13 = (float) ((prevPosZ + (posZ - prevPosZ) * f) - interpPosZ);
+
+ // GL11.glRotatef(this.rand.nextFloat(), 0.0F, 1.0F, 0.0F);
+ tessellator.startDrawingQuads();
+ tessellator.setBrightness(0x0000f0);
+
+ tessellator.setColorRGBA_F(particleRed, particleGreen, particleBlue, 1.0F);
+ tessellator.addVertexWithUV(f11 - f1 * f10 - f4 * f10, f12 - f2 * f10, f13 - f3 * f10 - f5 * f10, 0, 1);
+ tessellator.addVertexWithUV((f11 - f1 * f10) + f4 * f10, f12 + f2 * f10, (f13 - f3 * f10) + f5 * f10, 1, 1);
+ tessellator.addVertexWithUV(f11 + f1 * f10 + f4 * f10, f12 + f2 * f10, f13 + f3 * f10 + f5 * f10, 1, 0);
+ tessellator.addVertexWithUV((f11 + f1 * f10) - f4 * f10, f12 - f2 * f10, (f13 + f3 * f10) - f5 * f10, 0, 0);
+
+ tessellator.draw();
+
+ GL11.glDisable(3042);
+ GL11.glDepthMask(true);
+
+ GL11.glPopMatrix();
+ GL11.glBindTexture(3553 /* GL_TEXTURE_2D *//* GL_TEXTURE_2D */, ThaumicBees.proxy.getClientInstance().renderEngine.getTexture("/particles.png"));
+ tessellator.startDrawingQuads();
+ }
+
+}