diff --git a/src/main/java/magicbees/main/Config.java b/src/main/java/magicbees/main/Config.java index bb8aaa4..f9efdb1 100644 --- a/src/main/java/magicbees/main/Config.java +++ b/src/main/java/magicbees/main/Config.java @@ -2,8 +2,6 @@ package magicbees.main; import java.io.File; import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; import magicbees.block.BlockEffectJar; import magicbees.block.BlockHive; @@ -34,7 +32,6 @@ import magicbees.item.types.ResourceType; import magicbees.item.types.WaxType; import magicbees.main.utils.LocalizationManager; import magicbees.main.utils.LogHelper; -import magicbees.main.utils.Tuple; import magicbees.main.utils.VersionInfo; import magicbees.main.utils.compat.BotaniaHelper; import magicbees.main.utils.compat.ThaumcraftHelper; @@ -58,7 +55,6 @@ import cpw.mods.fml.common.event.FMLInterModComms; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.registry.GameRegistry; import forestry.api.apiculture.BeeManager; -import forestry.api.apiculture.IAlleleBeeSpecies; import forestry.api.storage.BackpackManager; import forestry.api.storage.EnumBackpackType; @@ -221,11 +217,6 @@ public class Config public static ItemStack bmAquasalus; public static ItemStack bmTennebrae; - public static Block botLivingRock; - public static Block botLivingWood; - - public static Item botManaResource; - //----- Config State info ---------------------------------- public static Configuration configuration; diff --git a/src/main/java/magicbees/main/utils/compat/BotaniaHelper.java b/src/main/java/magicbees/main/utils/compat/BotaniaHelper.java index b14202a..1b7d708 100644 --- a/src/main/java/magicbees/main/utils/compat/BotaniaHelper.java +++ b/src/main/java/magicbees/main/utils/compat/BotaniaHelper.java @@ -4,13 +4,21 @@ import magicbees.bees.BeeManager; import magicbees.main.Config; import magicbees.main.utils.BlockInterface; import magicbees.main.utils.ItemInterface; +import magicbees.main.utils.compat.botania.BotaniaLexiconEntry; import magicbees.main.utils.compat.botania.BotaniaSignature; +import magicbees.main.utils.compat.botania.LexiconEntries; import magicbees.main.utils.compat.botania.SubTileBeegonia; import magicbees.main.utils.compat.botania.SubTileHiveacynth; +import net.minecraft.block.Block; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.common.config.Property; import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.lexicon.LexiconPage; +import vazkii.botania.api.recipe.RecipePetals; +import vazkii.botania.api.subtile.SubTileEntity; import cpw.mods.fml.common.Loader; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -40,6 +48,13 @@ public class BotaniaHelper { MANA_STRING, ; } + + public static Block blockLivingRock; + public static Block blockLivingWood; + + public static Item itemPetal; + public static Item itemManaPetal; + public static Item itemManaResource; private static boolean isBotaniaActive = false; public static final String Name = "Botania"; @@ -64,35 +79,57 @@ public class BotaniaHelper { getBlocks(); getItems(); - registerSubtiles(); + registerSubtile(SubTileBeegonia.NAME, SubTileBeegonia.class); + registerSubtile(SubTileHiveacynth.NAME, SubTileHiveacynth.class); } } public static void postInit() { if (isActive()) { - BotaniaAPI.registerSubTile(SubTileBeegonia.NAME, SubTileBeegonia.class); - BotaniaAPI.registerSubTileSignature(SubTileBeegonia.class, new BotaniaSignature(SubTileBeegonia.NAME)); - BotaniaAPI.addSubTileToCreativeMenu(SubTileBeegonia.NAME); - // Hiveacynth would appreciate it if this list existed. BeeManager.populateSpeciesListRarity(); - BotaniaAPI.registerSubTile(SubTileHiveacynth.NAME, SubTileHiveacynth.class); - BotaniaAPI.registerSubTileSignature(SubTileHiveacynth.class, new BotaniaSignature(SubTileHiveacynth.NAME)); - BotaniaAPI.addSubTileToCreativeMenu(SubTileHiveacynth.NAME); + + RecipePetals beegoniaRecipe = BotaniaAPI.registerPetalRecipe(BotaniaAPI.internalHandler.getSubTileAsStack(SubTileBeegonia.NAME), new Object[] { + new ItemStack(itemPetal), new ItemStack(itemManaPetal), new ItemStack(itemPetal, 1, 4), new ItemStack(itemPetal, 1, 4), + new ItemStack(itemPetal, 1, 4), new ItemStack(itemManaPetal, 1, 4), new ItemStack(itemManaPetal, 1, 15) + }); + LexiconEntries.entryBeegonia = new BotaniaLexiconEntry(SubTileBeegonia.NAME, BotaniaAPI.categoryGenerationFlowers); + LexiconEntries.entryBeegonia.setLexiconPages(new LexiconPage[] { + BotaniaAPI.internalHandler.textPage("magicbees.botania.lexicon.beegonia.0"), + BotaniaAPI.internalHandler.textPage("magicbees.botania.lexicon.beegonia.1"), + BotaniaAPI.internalHandler.petalRecipePage("magicbees.botania.lexicon.beegonia.crafting", beegoniaRecipe), + BotaniaAPI.internalHandler.textPage("magicbees.botania.lexicon.beegonia.2") + }); + + RecipePetals hiveacynthRecipe = BotaniaAPI.registerPetalRecipe(BotaniaAPI.internalHandler.getSubTileAsStack(SubTileHiveacynth.NAME), new Object[] { + new ItemStack(itemPetal, 1, 3), new ItemStack(itemPetal, 1, 9), new ItemStack(itemPetal, 1, 9), new ItemStack(itemPetal, 1, 11), + new ItemStack(itemManaPetal, 1, 3), new ItemStack(itemManaPetal, 1, 9), new ItemStack(itemManaPetal, 1, 11), + new ItemStack(itemManaPetal, 1, 11), new ItemStack(itemManaResource, 1, ManaResource.REDSTONE_ROOT.ordinal()) + }); + LexiconEntries.entryHiveacynth = new BotaniaLexiconEntry(SubTileHiveacynth.NAME, BotaniaAPI.categoryFunctionalFlowers); + LexiconEntries.entryHiveacynth.setLexiconPages(new LexiconPage[] { + BotaniaAPI.internalHandler.textPage("magicbees.botania.lexicon.hiveacynth.0"), + BotaniaAPI.internalHandler.textPage("magicbees.botania.lexicon.hiveacynth.1"), + BotaniaAPI.internalHandler.petalRecipePage("magicbees.botania.lexicon.hiveacynth.crafting", hiveacynthRecipe) + }); } } + private static void registerSubtile(String subtileName, Class tileClass) { + BotaniaAPI.registerSubTile(subtileName, tileClass); + BotaniaAPI.registerSubTileSignature(tileClass, new BotaniaSignature(subtileName)); + BotaniaAPI.addSubTileToCreativeMenu(subtileName); + } + public static void getBlocks() { - Config.botLivingRock = BlockInterface.getBlock(Name, "livingrock"); - Config.botLivingWood = BlockInterface.getBlock(Name, "livingwood"); + blockLivingRock = BlockInterface.getBlock(Name, "livingrock"); + blockLivingWood = BlockInterface.getBlock(Name, "livingwood"); } public static void getItems() { - Config.botManaResource = ItemInterface.getItem(Name, "manaResource"); - } - - private static void registerSubtiles() { - BotaniaAPI.registerSubTile(SubTileBeegonia.NAME, SubTileBeegonia.class); + itemPetal = ItemInterface.getItem(Name, "petal"); + itemManaPetal = ItemInterface.getItem(Name, "manaPetal"); + itemManaResource = ItemInterface.getItem(Name, "manaResource"); } public static void doBotaniaModuleConfigs(Configuration configuration) { diff --git a/src/main/java/magicbees/main/utils/compat/botania/BotaniaLexiconEntry.java b/src/main/java/magicbees/main/utils/compat/botania/BotaniaLexiconEntry.java new file mode 100644 index 0000000..b3fadb8 --- /dev/null +++ b/src/main/java/magicbees/main/utils/compat/botania/BotaniaLexiconEntry.java @@ -0,0 +1,26 @@ +package magicbees.main.utils.compat.botania; + +import magicbees.main.utils.LocalizationManager; +import vazkii.botania.api.BotaniaAPI; +import vazkii.botania.api.lexicon.IAddonEntry; +import vazkii.botania.api.lexicon.LexiconCategory; +import vazkii.botania.api.lexicon.LexiconEntry; + +public class BotaniaLexiconEntry extends LexiconEntry implements IAddonEntry { + + public BotaniaLexiconEntry(String unlocalizedName, LexiconCategory category) { + super(unlocalizedName, category); + BotaniaAPI.addEntry(this, category); + } + + @Override + public String getSubtitle() { + return LocalizationManager.getLocalizedString("magicbees.botania.lexicon.subtitle"); + } + + @Override + public String getUnlocalizedName() { + return "tile.botania:flower." + unlocalizedName + ".name"; + } + +} diff --git a/src/main/java/magicbees/main/utils/compat/botania/LexiconEntries.java b/src/main/java/magicbees/main/utils/compat/botania/LexiconEntries.java new file mode 100644 index 0000000..c712912 --- /dev/null +++ b/src/main/java/magicbees/main/utils/compat/botania/LexiconEntries.java @@ -0,0 +1,9 @@ +package magicbees.main.utils.compat.botania; + +import vazkii.botania.api.lexicon.LexiconEntry; + +public class LexiconEntries { + + public static LexiconEntry entryBeegonia; + public static LexiconEntry entryHiveacynth; +} diff --git a/src/main/java/magicbees/main/utils/compat/botania/SubTileHiveacynth.java b/src/main/java/magicbees/main/utils/compat/botania/SubTileHiveacynth.java index f93145a..e83543d 100644 --- a/src/main/java/magicbees/main/utils/compat/botania/SubTileHiveacynth.java +++ b/src/main/java/magicbees/main/utils/compat/botania/SubTileHiveacynth.java @@ -6,6 +6,7 @@ import magicbees.main.utils.compat.BotaniaHelper; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import java.util.Random; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.subtile.SubTileFunctional; import cpw.mods.fml.relauncher.Side; @@ -19,6 +20,7 @@ import forestry.api.genetics.IAllele; public class SubTileHiveacynth extends SubTileFunctional { public static final String NAME = "hiveacynth"; + private static final int RANGE = 3; private static final int COST = 15000; @@ -39,7 +41,12 @@ public class SubTileHiveacynth extends SubTileFunctional { ItemStack stack = BeeManager.beeRoot.getMemberStack(getRandomBee(), beeType.ordinal()); - EntityItem entity = new EntityItem(supertile.getWorldObj(), supertile.xCoord, supertile.yCoord, supertile.zCoord, stack); + Random r = supertile.getWorldObj().rand; + EntityItem entity = new EntityItem(supertile.getWorldObj(), + supertile.xCoord - RANGE + r.nextInt(RANGE * 2 + 1), supertile.yCoord + 1, supertile.zCoord - RANGE + r.nextInt(RANGE * 2 + 1), stack); + entity.motionX = 0; + entity.motionY = 0; + entity.motionZ = 0; supertile.getWorldObj().spawnEntityInWorld(entity); } } @@ -57,7 +64,7 @@ public class SubTileHiveacynth extends SubTileFunctional { } private boolean readyToProduceProduct() { - return redstoneSignal == 0 && ticksExisted % 20==0;//0 == 0 && mana >= getFinalCost(); + return redstoneSignal == 0 && ticksExisted % 200 == 0 && mana >= getFinalCost(); } private int getFinalCost() { diff --git a/src/main/resources/assets/magicbees/lang/en_US.lang b/src/main/resources/assets/magicbees/lang/en_US.lang index 7460c9a..a365072 100644 --- a/src/main/resources/assets/magicbees/lang/en_US.lang +++ b/src/main/resources/assets/magicbees/lang/en_US.lang @@ -529,4 +529,16 @@ tc.research_page.MB_EssenceOblivion.1=Breeding bees for mutations can be aggriva tc.research_name.MB_VisAuraProvider=Vis Apiary Booster tc.research_text.MB_VisAuraProvider=[MB]Vis? What about Bis? -tc.research_page.MB_VisAuraProvider.1=Blah blah blah. \ No newline at end of file +tc.research_page.MB_VisAuraProvider.1=Blah blah blah. + +#Botania Lexicon entries +magicbees.botania.lexicon.subtitle=[Magic Bees] + +magicbees.botania.lexicon.beegonia.0=Drones are the foundation of a healthy colony's future, but really, they can start just piling up to the point where you don't know what to do with them anymore.
The &1Beegonia&0 is a solution to the problem of overcrowding! Simply toss your spare drones in their vicinity, and they will reclaim the life force within the drone and convert it into mana! They aren't terribly picky, and will +magicbees.botania.lexicon.beegonia.1=produce a constant amount of mana while they work, though it does seem more "complex" bees provide more mana than mundane bees, whatever that means. +magicbees.botania.lexicon.beegonia.crafting=Syncrostrike's Elegant Solution +magicbees.botania.lexicon.beegonia.2=Well. It was this or &2Beenus Fly Trap&0, but that one has its own issues. + +magicbees.botania.lexicon.hiveacynth.0=Finding new bees for your stock can be a bit of a pain. Thankfully, we can tap into the memories of flowers to reproduce bees with up to 74% accuracy! Maybe.
The &1Hiveacynth&0 absorbs mana from a nearby mana pool, and once it has collected enough, it begins converting it into life essence and produces a bee! It seems the species is somewhat random, though only 'mundane' bees +magicbees.botania.lexicon.hiveacynth.1=will ever be produced, and roughly in proportion to how they are found in the wild.
Occasionally, the flower will give itself airs, and produce a vaunted heiress rather than a vulgar drone. A redstone signal will prevent the &1Hiveacynth&0 from converting mana into life essence. +magicbees.botania.lexicon.hiveacynth.crafting=> beesbeesbees.com \ No newline at end of file