From f91dd7f625f7e3e352fc61c47d7dd76ddade804d Mon Sep 17 00:00:00 2001 From: MysteriousAges Date: Sat, 29 Dec 2012 17:50:58 -0800 Subject: [PATCH] Brushing up some rough ends, re-adding bee texture effects for new effects, adjusting drop rates. --- thaumicbees_res/build.number | 4 +- thaumicbees_res/build.xml | 3 +- thaumicbees_res/mcmod.info | 10 +- .../thaumicbees/bees/ThaumicBeesPlugin.java | 197 ++++++++++-------- .../thaumicbees/bees/genetics/Allele.java | 36 +++- .../bees/genetics/AlleleEffect.java | 59 ++++++ .../bees/genetics/AlleleEffectCure.java | 87 ++++++++ .../bees/genetics/AlleleEffectPotion.java | 66 ++++-- .../bees/genetics/AlleleFlower.java | 4 - .../bees/genetics/BeeGenomeManager.java | 144 ++++++------- .../bees/genetics/BeeMutation.java | 2 + .../thaumicbees/bees/genetics/BeeSpecies.java | 22 -- .../thaumicbees/main/ClientProxy.java | 34 ++- .../thaumicbees/main/CommonProxy.java | 21 +- .../thaumicbees/main/ConfigFlags.java | 7 + .../thaumicbees/main/ThaumicBees.java | 13 +- .../main/render/BeeRenderEffect.java | 102 +++++++++ 17 files changed, 595 insertions(+), 216 deletions(-) create mode 100644 thaumicbees_src/thaumicbees/bees/genetics/AlleleEffect.java create mode 100644 thaumicbees_src/thaumicbees/bees/genetics/AlleleEffectCure.java create mode 100644 thaumicbees_src/thaumicbees/main/ConfigFlags.java create mode 100644 thaumicbees_src/thaumicbees/main/render/BeeRenderEffect.java 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(); + } + +}