2014-05-02 21:31:20 +02:00
/*******************************************************************************
2014-08-07 08:29:25 +02:00
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
2014-08-07 02:56:58 -07:00
* http://www.gnu.org/licenses/lgpl-3.0.txt
2015-01-26 22:26:21 -08:00
*
2014-08-07 08:29:25 +02:00
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
2014-05-02 21:31:20 +02:00
******************************************************************************/
package forestry.plugins ;
2015-06-07 01:13:34 -07:00
import com.google.common.collect.ImmutableMap ;
2014-12-26 02:13:39 -08:00
import java.util.ArrayList ;
2015-03-01 01:04:07 -08:00
import java.util.List ;
2015-01-11 19:33:37 -08:00
import java.util.Random ;
2014-12-26 02:13:39 -08:00
import net.minecraft.block.Block ;
import net.minecraft.block.material.Material ;
import net.minecraft.init.Blocks ;
import net.minecraft.init.Items ;
import net.minecraft.item.ItemStack ;
import net.minecraft.item.crafting.IRecipe ;
import net.minecraft.nbt.NBTTagCompound ;
import net.minecraft.potion.Potion ;
import net.minecraft.util.IIcon ;
import net.minecraft.util.WeightedRandomChestContent ;
2015-01-11 19:33:37 -08:00
import net.minecraft.world.World ;
import net.minecraft.world.chunk.IChunkProvider ;
2015-01-26 22:26:21 -08:00
2014-12-26 02:13:39 -08:00
import net.minecraftforge.client.event.TextureStitchEvent ;
import net.minecraftforge.common.ChestGenHooks ;
import net.minecraftforge.common.MinecraftForge ;
import net.minecraftforge.oredict.OreDictionary ;
2015-01-26 22:26:21 -08:00
2014-05-02 21:31:20 +02:00
import cpw.mods.fml.common.FMLCommonHandler ;
import cpw.mods.fml.common.SidedProxy ;
import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage ;
import cpw.mods.fml.common.eventhandler.SubscribeEvent ;
import cpw.mods.fml.common.network.IGuiHandler ;
import cpw.mods.fml.common.registry.GameData ;
import cpw.mods.fml.common.registry.GameRegistry ;
import cpw.mods.fml.common.registry.VillagerRegistry ;
import cpw.mods.fml.relauncher.Side ;
import cpw.mods.fml.relauncher.SideOnly ;
2015-01-26 22:26:21 -08:00
2014-05-02 21:31:20 +02:00
import forestry.api.apiculture.BeeManager ;
import forestry.api.apiculture.EnumBeeType ;
import forestry.api.apiculture.FlowerManager ;
import forestry.api.apiculture.IBeeGenome ;
2014-10-03 02:08:41 -07:00
import forestry.api.apiculture.hives.HiveManager ;
2014-05-02 21:31:20 +02:00
import forestry.api.core.Tabs ;
import forestry.api.genetics.AlleleManager ;
import forestry.api.genetics.IClassification ;
import forestry.api.genetics.IClassification.EnumClassLevel ;
import forestry.api.recipes.RecipeManagers ;
2014-12-26 02:13:39 -08:00
import forestry.api.storage.ICrateRegistry ;
import forestry.api.storage.StorageManager ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.GuiHandlerApiculture ;
import forestry.apiculture.SaveEventHandlerApiculture ;
import forestry.apiculture.VillageHandlerApiculture ;
2014-12-13 23:38:36 -08:00
import forestry.apiculture.commands.CommandBee ;
2015-01-17 12:49:52 +01:00
import forestry.apiculture.flowers.FlowerRegistry ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.gadgets.BlockAlveary ;
import forestry.apiculture.gadgets.BlockBeehives ;
import forestry.apiculture.gadgets.BlockCandle ;
import forestry.apiculture.gadgets.BlockStump ;
import forestry.apiculture.gadgets.StructureLogicAlveary ;
import forestry.apiculture.gadgets.TileAlvearyFan ;
import forestry.apiculture.gadgets.TileAlvearyHeater ;
import forestry.apiculture.gadgets.TileAlvearyHygroregulator ;
import forestry.apiculture.gadgets.TileAlvearyPlain ;
import forestry.apiculture.gadgets.TileAlvearySieve ;
import forestry.apiculture.gadgets.TileAlvearyStabiliser ;
import forestry.apiculture.gadgets.TileAlvearySwarmer ;
import forestry.apiculture.gadgets.TileApiaristChest ;
import forestry.apiculture.gadgets.TileApiary ;
import forestry.apiculture.gadgets.TileBeehouse ;
import forestry.apiculture.gadgets.TileCandle ;
import forestry.apiculture.gadgets.TileSwarm ;
import forestry.apiculture.genetics.AlleleEffectAggressive ;
import forestry.apiculture.genetics.AlleleEffectCreeper ;
import forestry.apiculture.genetics.AlleleEffectExploration ;
2014-12-08 21:42:22 -08:00
import forestry.apiculture.genetics.AlleleEffectFertile ;
import forestry.apiculture.genetics.AlleleEffectFungification ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.genetics.AlleleEffectGlacial ;
import forestry.apiculture.genetics.AlleleEffectHeroic ;
import forestry.apiculture.genetics.AlleleEffectIgnition ;
import forestry.apiculture.genetics.AlleleEffectMiasmic ;
import forestry.apiculture.genetics.AlleleEffectMisanthrope ;
import forestry.apiculture.genetics.AlleleEffectNone ;
import forestry.apiculture.genetics.AlleleEffectPotion ;
import forestry.apiculture.genetics.AlleleEffectRadioactive ;
import forestry.apiculture.genetics.AlleleEffectRepulsion ;
import forestry.apiculture.genetics.AlleleEffectResurrection ;
import forestry.apiculture.genetics.AlleleEffectSnowing ;
2015-05-07 22:20:34 -07:00
import forestry.apiculture.genetics.BeeBranchDefinition ;
import forestry.apiculture.genetics.BeeDefinition ;
import forestry.apiculture.genetics.BeeFactory ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.genetics.BeeHelper ;
2015-05-07 22:20:34 -07:00
import forestry.apiculture.genetics.BeeMutationFactory ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.genetics.BeekeepingMode ;
import forestry.apiculture.genetics.HiveDrop ;
2015-05-07 22:20:34 -07:00
import forestry.apiculture.genetics.JubilanceFactory ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.items.ItemAlvearyBlock ;
import forestry.apiculture.items.ItemArmorApiarist ;
import forestry.apiculture.items.ItemBeeGE ;
import forestry.apiculture.items.ItemBeealyzer ;
import forestry.apiculture.items.ItemCandleBlock ;
2015-01-25 20:00:19 -08:00
import forestry.apiculture.items.ItemHabitatLocator ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.items.ItemHiveFrame ;
import forestry.apiculture.items.ItemHoneycomb ;
import forestry.apiculture.items.ItemImprinter ;
import forestry.apiculture.items.ItemWaxCast ;
2015-03-28 23:03:52 -07:00
import forestry.apiculture.network.PacketHandlerApiculture ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.proxy.ProxyApiculture ;
2014-11-26 23:40:37 -08:00
import forestry.apiculture.trigger.ApicultureTriggers ;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.worldgen.HiveDecorator ;
2015-01-11 01:40:54 -08:00
import forestry.apiculture.worldgen.HiveDescription ;
import forestry.apiculture.worldgen.HiveGenHelper ;
import forestry.apiculture.worldgen.HiveRegistry ;
2014-05-02 21:31:20 +02:00
import forestry.core.GameMode ;
import forestry.core.config.Config ;
import forestry.core.config.Configuration ;
import forestry.core.config.Defaults ;
import forestry.core.config.ForestryBlock ;
import forestry.core.config.ForestryItem ;
import forestry.core.config.Property ;
2014-12-13 18:58:49 -08:00
import forestry.core.fluids.Fluids ;
2014-05-02 21:31:20 +02:00
import forestry.core.gadgets.BlockBase ;
import forestry.core.gadgets.MachineDefinition ;
2014-10-01 22:28:21 -07:00
import forestry.core.gadgets.TileAnalyzer ;
2015-05-07 22:20:34 -07:00
import forestry.core.genetics.alleles.Allele ;
2014-05-02 21:31:20 +02:00
import forestry.core.interfaces.ISaveEventHandler ;
import forestry.core.items.ItemForestry ;
import forestry.core.items.ItemForestryBlock ;
import forestry.core.items.ItemOverlay ;
import forestry.core.items.ItemOverlay.OverlayInfo ;
2014-10-05 21:12:06 -07:00
import forestry.core.items.ItemScoop ;
2015-05-29 22:25:54 -07:00
import forestry.core.network.IPacketHandler ;
2014-05-02 21:31:20 +02:00
import forestry.core.proxy.Proxies ;
import forestry.core.render.EntitySnowFX ;
import forestry.core.utils.ShapedRecipeCustom ;
2015-03-01 01:04:07 -08:00
import forestry.core.utils.StackUtils ;
2014-05-02 21:31:20 +02:00
2014-09-27 12:46:54 -07:00
@Plugin ( pluginID = "Apiculture" , name = "Apiculture" , author = "SirSengir" , url = Defaults . URL , unlocalizedDescription = "for.plugin.apiculture.description" )
2014-09-20 22:43:13 -07:00
public class PluginApiculture extends ForestryPlugin {
2014-05-02 21:31:20 +02:00
@SidedProxy ( clientSide = "forestry.apiculture.proxy.ClientProxyApiculture" , serverSide = "forestry.apiculture.proxy.ProxyApiculture" )
public static ProxyApiculture proxy ;
private static final String CONFIG_CATEGORY = "apiculture" ;
private Configuration apicultureConfig ;
public static String beekeepingMode = "NORMAL" ;
2015-04-24 19:49:30 -05:00
private static float secondPrincessChance = 0 ;
2014-10-04 01:25:24 -07:00
public static int ticksPerBeeWorkCycle = 550 ;
2014-05-02 21:31:20 +02:00
public static boolean apiarySideSensitive = false ;
public static boolean fancyRenderedBees = false ;
2015-04-12 21:07:49 -07:00
2015-01-11 01:40:54 -08:00
public static HiveRegistry hiveRegistry ;
2014-05-02 21:31:20 +02:00
public static MachineDefinition definitionApiary ;
public static MachineDefinition definitionChest ;
public static MachineDefinition definitionBeehouse ;
2014-10-01 22:28:21 -07:00
public static MachineDefinition definitionAnalyzer ;
2014-05-02 21:31:20 +02:00
@Override
2015-04-05 14:16:41 -07:00
@SuppressWarnings ({ "unchecked" , "rawtypes" })
protected void setupAPI () {
super . setupAPI ();
2014-05-02 21:31:20 +02:00
2015-01-11 01:40:54 -08:00
HiveManager . hiveRegistry = hiveRegistry = new HiveRegistry ();
HiveManager . genHelper = new HiveGenHelper ();
2014-05-02 21:31:20 +02:00
2015-01-17 12:49:52 +01:00
FlowerManager . flowerRegistry = new FlowerRegistry ();
2015-04-05 14:16:41 -07:00
BeeManager . villageBees = new ArrayList [] { new ArrayList < IBeeGenome > (), new ArrayList < IBeeGenome > ()};
2015-05-07 22:20:34 -07:00
BeeManager . beeFactory = new BeeFactory ();
BeeManager . beeMutationFactory = new BeeMutationFactory ();
BeeManager . jubilanceFactory = new JubilanceFactory ();
2015-04-05 14:16:41 -07:00
// Init bee interface
2015-05-07 22:20:34 -07:00
BeeManager . beeRoot = new BeeHelper ();
AlleleManager . alleleRegistry . registerSpeciesRoot ( BeeManager . beeRoot );
2015-04-05 14:16:41 -07:00
// Modes
2015-05-07 22:20:34 -07:00
BeeManager . beeRoot . registerBeekeepingMode ( BeekeepingMode . easy );
BeeManager . beeRoot . registerBeekeepingMode ( BeekeepingMode . normal );
BeeManager . beeRoot . registerBeekeepingMode ( BeekeepingMode . hard );
BeeManager . beeRoot . registerBeekeepingMode ( BeekeepingMode . hardcore );
BeeManager . beeRoot . registerBeekeepingMode ( BeekeepingMode . insane );
2015-04-05 14:16:41 -07:00
}
@Override
public void preInit () {
super . preInit ();
MinecraftForge . EVENT_BUS . register ( this );
2014-08-18 05:20:29 -07:00
ForestryBlock . apiculture . registerBlock ( new BlockBase ( Material . iron ), ItemForestryBlock . class , "apiculture" );
ForestryBlock . apiculture . block (). setCreativeTab ( Tabs . tabApiculture );
2015-03-01 00:05:31 -08:00
ForestryBlock . apiculture . block (). setHarvestLevel ( "axe" , 0 );
2014-08-18 05:20:29 -07:00
definitionApiary = (( BlockBase ) ForestryBlock . apiculture . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_APIARY_META , "forestry.Apiary" , TileApiary . class ,
ShapedRecipeCustom . createShapedRecipe ( ForestryBlock . apiculture . getItemStack ( 1 , Defaults . DEFINITION_APIARY_META ),
"XXX" ,
"#C#" ,
"###" ,
'X' , "slabWood" ,
'#' , "plankWood" ,
'C' , ForestryItem . impregnatedCasing ))
. setFaces ( 0 , 1 , 2 , 2 , 4 , 4 , 0 , 7 ));
definitionChest = (( BlockBase ) ForestryBlock . apiculture . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_APIARISTCHEST_META , "forestry.ApiaristChest" , TileApiaristChest . class ,
ShapedRecipeCustom . createShapedRecipe ( ForestryBlock . apiculture . getItemStack ( 1 , Defaults . DEFINITION_APIARISTCHEST_META ),
" # " ,
"XYX" ,
"XXX" ,
'#' , Blocks . glass ,
'X' , "beeComb" ,
'Y' , Blocks . chest ))
. setFaces ( 0 , 1 , 2 , 3 , 4 , 4 ));
definitionBeehouse = (( BlockBase ) ForestryBlock . apiculture . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_BEEHOUSE_META , "forestry.Beehouse" , TileBeehouse . class ,
ShapedRecipeCustom . createShapedRecipe ( ForestryBlock . apiculture . getItemStack ( 1 , Defaults . DEFINITION_BEEHOUSE_META ),
"XXX" ,
"#C#" ,
"###" ,
'X' , "slabWood" ,
'#' , "plankWood" ,
'C' , "beeComb" ))
. setFaces ( 0 , 1 , 2 , 2 , 4 , 4 , 0 , 7 ));
2014-10-01 22:28:21 -07:00
definitionAnalyzer = (( BlockBase ) ForestryBlock . core . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_ANALYZER_META , "forestry.Analyzer" , TileAnalyzer . class ,
PluginApiculture . proxy . getRendererAnalyzer ( Defaults . TEXTURE_PATH_BLOCKS + "/analyzer_" )));
2014-08-18 05:20:29 -07:00
ForestryBlock . beehives . registerBlock ( new BlockBeehives (), ItemForestryBlock . class , "beehives" );
2014-05-02 21:31:20 +02:00
// Candles
2014-08-18 05:20:29 -07:00
ForestryBlock . candle . registerBlock ( new BlockCandle (), ItemCandleBlock . class , "candle" );
ForestryBlock . stump . registerBlock ( new BlockStump (), ItemForestryBlock . class , "stump" );
2014-05-02 21:31:20 +02:00
// Alveary and Components
2014-08-18 05:20:29 -07:00
ForestryBlock . alveary . registerBlock ( new BlockAlveary (), ItemAlvearyBlock . class , "alveary" );
ForestryBlock . alveary . block (). setHarvestLevel ( "axe" , 0 );
2014-05-02 21:31:20 +02:00
// Add triggers
2014-11-29 19:53:40 -08:00
if ( PluginManager . Module . BUILDCRAFT_STATEMENTS . isEnabled ()) {
2014-11-26 23:40:37 -08:00
ApicultureTriggers . initialize ();
}
2014-05-02 21:31:20 +02:00
2015-01-24 00:21:20 -08:00
if ( Config . enableVillager ) {
// Register village components with the Structure registry.
VillageHandlerApiculture . registerVillageComponents ();
}
2014-11-14 22:49:26 -08:00
// Commands
2014-12-13 23:38:36 -08:00
PluginCore . rootCommand . addChildCommand ( new CommandBee ());
2014-05-02 21:31:20 +02:00
}
@Override
public void doInit () {
super . doInit ();
2015-02-08 00:04:23 -08:00
// Config
2014-05-02 21:31:20 +02:00
apicultureConfig = new Configuration ();
Property property = apicultureConfig . get ( "apiary.sidesensitive" , CONFIG_CATEGORY , apiarySideSensitive );
2014-12-20 03:59:31 -08:00
property . comment = "set to false if apiaries should output all items regardless of side a pipe is attached to" ;
apiarySideSensitive = Boolean . parseBoolean ( property . value );
2014-05-02 21:31:20 +02:00
property = apicultureConfig . get ( "render.bees.fancy" , CONFIG_CATEGORY , fancyRenderedBees );
2014-12-20 03:59:31 -08:00
property . comment = "set to true to enable a fancy butterfly-like renderer for bees. (experimental!)" ;
fancyRenderedBees = Boolean . parseBoolean ( property . value );
2014-05-02 21:31:20 +02:00
property = apicultureConfig . get ( "beekeeping.mode" , CONFIG_CATEGORY , "NORMAL" );
2014-12-20 03:59:31 -08:00
property . comment = "change beekeeping modes here. possible values EASY, NORMAL, HARD, HARDCORE, INSANE. mods may add additional modes." ;
beekeepingMode = property . value . trim ();
2014-05-02 21:31:20 +02:00
Proxies . log . finer ( "Beekeeping mode read from config: " + beekeepingMode );
2015-02-09 23:36:32 -06:00
Property secondPrincess = apicultureConfig . get ( "beekeeping.secondprincess" , CONFIG_CATEGORY , secondPrincessChance );
2015-04-24 19:49:30 -05:00
secondPrincess . comment = "percent chance of second princess drop, for limited/skyblock maps. Acceptable values up to 2 decimals." ;
secondPrincessChance = Float . parseFloat ( secondPrincess . value );
2015-02-09 23:36:32 -06:00
2014-05-02 21:31:20 +02:00
property = apicultureConfig . get ( "beekeeping.flowers.custom" , CONFIG_CATEGORY , "" );
2015-03-01 01:04:07 -08:00
property . comment = "add additional flower blocks for apiaries here in the format modid:name or modid:name:meta. separate blocks using ';'. wildcard for metadata: '*'. will be treated like vanilla flowers. not recommended for flowers implemented as tile entities." ;
2014-12-20 03:59:31 -08:00
parseAdditionalFlowers ( property . value , FlowerManager . plainFlowers );
2014-05-02 21:31:20 +02:00
property = apicultureConfig . get ( "species.blacklist" , CONFIG_CATEGORY , "" );
2014-12-20 03:59:31 -08:00
property . comment = "add species to blacklist identified by their uid and seperated with ';'." ;
parseBeeBlacklist ( property . value );
2014-05-02 21:31:20 +02:00
apicultureConfig . save ();
2015-02-08 00:04:23 -08:00
// Genetics
2014-09-23 13:37:23 -07:00
createAlleles ();
2015-04-18 12:32:09 -07:00
BeeDefinition . initBees ();
2015-02-08 00:04:23 -08:00
// Hives
createHives ();
2015-04-18 12:32:09 -07:00
registerBeehiveDrops ();
2014-05-02 21:31:20 +02:00
// Inducers for swarmer
BeeManager . inducers . put ( ForestryItem . royalJelly . getItemStack (), 10 );
GameRegistry . registerTileEntity ( TileAlvearyPlain . class , "forestry.Alveary" );
GameRegistry . registerTileEntity ( TileSwarm . class , "forestry.Swarm" );
GameRegistry . registerTileEntity ( TileAlvearySwarmer . class , "forestry.AlvearySwarmer" );
GameRegistry . registerTileEntity ( TileAlvearyHeater . class , "forestry.AlvearyHeater" );
GameRegistry . registerTileEntity ( TileAlvearyFan . class , "forestry.AlvearyFan" );
GameRegistry . registerTileEntity ( TileAlvearyHygroregulator . class , "forestry.AlvearyHygro" );
GameRegistry . registerTileEntity ( TileAlvearyStabiliser . class , "forestry.AlvearyStabiliser" );
GameRegistry . registerTileEntity ( TileAlvearySieve . class , "forestry.AlvearySieve" );
GameRegistry . registerTileEntity ( TileCandle . class , "forestry.Candle" );
2015-04-18 12:32:09 -07:00
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . FOREST . getGenome ());
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . MEADOWS . getGenome ());
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . MODEST . getGenome ());
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . MARSHY . getGenome ());
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . WINTRY . getGenome ());
BeeManager . villageBees [ 0 ] . add ( BeeDefinition . TROPICAL . getGenome ());
BeeManager . villageBees [ 1 ] . add ( BeeDefinition . FOREST . getRainResist (). getGenome ());
BeeManager . villageBees [ 1 ] . add ( BeeDefinition . COMMON . getGenome ());
BeeManager . villageBees [ 1 ] . add ( BeeDefinition . VALIANT . getGenome ());
2014-05-02 21:31:20 +02:00
2015-01-24 00:21:20 -08:00
if ( Config . enableVillager ) {
// Register villager stuff
VillageHandlerApiculture villageHandler = new VillageHandlerApiculture ();
VillagerRegistry . instance (). registerVillageCreationHandler ( villageHandler );
VillagerRegistry . instance (). registerVillagerId ( Defaults . ID_VILLAGER_BEEKEEPER );
Proxies . render . registerVillagerSkin ( Defaults . ID_VILLAGER_BEEKEEPER , Defaults . TEXTURE_SKIN_BEEKPEEPER );
VillagerRegistry . instance (). registerVillageTradeHandler ( Defaults . ID_VILLAGER_BEEKEEPER , villageHandler );
}
2014-05-02 21:31:20 +02:00
proxy . initializeRendering ();
}
@Override
public void postInit () {
super . postInit ();
registerDungeonLoot ();
}
@Override
public IGuiHandler getGuiHandler () {
return new GuiHandlerApiculture ();
}
@Override
public IPacketHandler getPacketHandler () {
return new PacketHandlerApiculture ();
}
@Override
protected void registerItems () {
// / BEES
ForestryItem . beeQueenGE . registerItem (( new ItemBeeGE ( EnumBeeType . QUEEN )), "beeQueenGE" );
ForestryItem . beeDroneGE . registerItem (( new ItemBeeGE ( EnumBeeType . DRONE )), "beeDroneGE" );
ForestryItem . beePrincessGE . registerItem (( new ItemBeeGE ( EnumBeeType . PRINCESS )), "beePrincessGE" );
ForestryItem . beeLarvaeGE . registerItem (( new ItemBeeGE ( EnumBeeType . LARVAE )), "beeLarvaeGE" );
ForestryItem . beealyzer . registerItem (( new ItemBeealyzer ()), "beealyzer" );
2015-01-25 20:00:19 -08:00
ForestryItem . habitatLocator . registerItem ( new ItemHabitatLocator (), "habitatLocator" );
2014-05-02 21:31:20 +02:00
ForestryItem . imprinter . registerItem (( new ItemImprinter ()), "imprinter" );
// / COMB FRAMES
ForestryItem . frameUntreated . registerItem ( new ItemHiveFrame ( 80 , 0 . 9f ), "frameUntreated" );
ForestryItem . frameImpregnated . registerItem ( new ItemHiveFrame ( 240 , 0 . 4f ), "frameImpregnated" );
ForestryItem . frameProven . registerItem ( new ItemHiveFrame ( 720 , 0 . 3f ), "frameProven" );
// / BEE RESOURCES
ForestryItem . honeyDrop . registerItem ( new ItemOverlay ( Tabs . tabApiculture ,
2015-04-12 22:33:28 -07:00
new OverlayInfo ( "honey" , 0xecb42d , 0xe8c814 ),
new OverlayInfo ( "charged" , 0x800505 , 0x9c0707 ). setIsSecret (),
2014-05-02 21:31:20 +02:00
new OverlayInfo ( "omega" , 0x191919 , 0x4a8ca7 ). setIsSecret ()), "honeyDrop" );
OreDictionary . registerOre ( "dropHoney" , ForestryItem . honeyDrop . getItemStack ());
2014-10-01 20:40:15 -07:00
ForestryItem . pollenCluster . registerItem ( new ItemOverlay ( Tabs . tabApiculture ,
2015-01-26 22:26:21 -08:00
new OverlayInfo ( "normal" , 0xa28a25 , 0xa28a25 ),
new OverlayInfo ( "crystalline" , 0xffffff , 0xc5feff )),
2014-05-02 21:31:20 +02:00
"pollen" );
2014-10-01 20:40:15 -07:00
OreDictionary . registerOre ( "itemPollen" , ForestryItem . pollenCluster . getItemStack ());
2014-05-02 21:31:20 +02:00
ForestryItem . propolis . registerItem ( new ItemOverlay ( Tabs . tabApiculture ,
2015-04-12 22:33:28 -07:00
new OverlayInfo ( "normal" , 0xc5b24e ),
new OverlayInfo ( "sticky" , 0xc68e57 ),
new OverlayInfo ( "pulsating" , 0x2ccdb1 ). setIsSecret (),
2015-01-26 22:26:21 -08:00
new OverlayInfo ( "silky" , 0xddff00 )),
2014-05-02 21:31:20 +02:00
"propolis" );
ForestryItem . honeydew . registerItem ( new ItemForestry (). setCreativeTab ( Tabs . tabApiculture ), "honeydew" );
OreDictionary . registerOre ( "dropHoneydew" , ForestryItem . honeydew . getItemStack ());
ForestryItem . royalJelly . registerItem ( new ItemForestry (). setCreativeTab ( Tabs . tabApiculture ), "royalJelly" );
OreDictionary . registerOre ( "dropRoyalJelly" , ForestryItem . royalJelly . getItemStack ());
ForestryItem . waxCast . registerItem ( new ItemWaxCast (). setCreativeTab ( Tabs . tabApiculture ), "waxCast" );
// / BEE COMBS
ForestryItem . beeComb . registerItem ( new ItemHoneycomb (), "beeCombs" );
2014-11-20 19:10:10 -08:00
OreDictionary . registerOre ( "beeComb" , ForestryItem . beeComb . getWildcard ());
2014-05-02 21:31:20 +02:00
// / APIARIST'S CLOTHES
ForestryItem . apiaristHat . registerItem ( new ItemArmorApiarist ( 0 ), "apiaristHelmet" );
ForestryItem . apiaristChest . registerItem ( new ItemArmorApiarist ( 1 ), "apiaristChest" );
ForestryItem . apiaristLegs . registerItem ( new ItemArmorApiarist ( 2 ), "apiaristLegs" );
ForestryItem . apiaristBoots . registerItem ( new ItemArmorApiarist ( 3 ), "apiaristBoots" );
2014-10-05 21:12:06 -07:00
// TOOLS
ForestryItem . scoop . registerItem ( new ItemScoop (), "scoop" );
ForestryItem . scoop . item (). setHarvestLevel ( "scoop" , 3 );
2014-05-02 21:31:20 +02:00
}
@Override
protected void registerCrates () {
2014-12-26 02:13:39 -08:00
ICrateRegistry crateRegistry = StorageManager . crateRegistry ;
crateRegistry . registerCrate ( ForestryItem . beeswax . getItemStack (), "cratedBeeswax" );
crateRegistry . registerCrate ( ForestryItem . pollenCluster . getItemStack (), "cratedPollen" );
crateRegistry . registerCrate ( ForestryItem . propolis . getItemStack (), "cratedPropolis" );
crateRegistry . registerCrate ( ForestryItem . honeydew . getItemStack (), "cratedHoneydew" );
crateRegistry . registerCrate ( ForestryItem . royalJelly . getItemStack (), "cratedRoyalJelly" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 0 ), "cratedHoneycombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 1 ), "cratedCocoaComb" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 2 ), "cratedSimmeringCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 3 ), "cratedStringyCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 4 ), "cratedFrozenCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 5 ), "cratedDrippingCombs" );
2015-01-29 10:40:24 -06:00
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 6 ), "cratedSilkyCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 7 ), "cratedParchedCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 8 ), "cratedMysteriousCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 10 ), "cratedPowderyCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 14 ), "cratedWheatenCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 15 ), "cratedMossyCombs" );
crateRegistry . registerCrate ( ForestryItem . beeComb . getItemStack ( 1 , 16 ), "cratedMellowCombs" );
2014-12-26 02:13:39 -08:00
crateRegistry . registerCrate ( ForestryItem . refractoryWax . getItemStack (), "cratedRefractoryWax" );
2014-05-02 21:31:20 +02:00
}
@Override
protected void registerRecipes () {
// / APIARIST'S ARMOR
2014-09-24 18:01:00 -07:00
Proxies . common . addRecipe ( ForestryItem . apiaristHat . getItemStack (),
"###" , "# #" ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 3 ));
Proxies . common . addRecipe ( ForestryItem . apiaristChest . getItemStack (),
"# #" , "###" , "###" ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 3 ));
Proxies . common . addRecipe ( ForestryItem . apiaristLegs . getItemStack (),
"###" , "# #" , "# #" ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 3 ));
Proxies . common . addRecipe ( ForestryItem . apiaristBoots . getItemStack (),
"# #" , "# #" ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 3 ));
2014-05-02 21:31:20 +02:00
// / HABITAT LOCATOR
2015-01-25 20:00:19 -08:00
Proxies . common . addRecipe ( ForestryItem . habitatLocator . getItemStack (),
" X " ,
"X#X" ,
" X " ,
'#' , Items . redstone , 'X' , "ingotBronze" );
2014-05-02 21:31:20 +02:00
// Bees
Proxies . common . addRecipe ( ForestryItem . scoop . getItemStack ( 1 ),
"#X#" , "###" , " # " ,
'#' , "stickWood" ,
'X' , Blocks . wool );
Proxies . common . addRecipe ( new ItemStack ( Items . slime_ball ),
"#X#" , "#X#" , "#X#" ,
'#' , ForestryItem . propolis ,
2014-10-01 20:40:15 -07:00
'X' , ForestryItem . pollenCluster );
2014-05-02 21:31:20 +02:00
Proxies . common . addRecipe ( new ItemStack ( Items . speckled_melon ),
"#X#" , "#Y#" , "#X#" ,
'#' , ForestryItem . honeyDrop ,
'X' , ForestryItem . honeydew ,
'Y' , Items . melon );
Proxies . common . addRecipe ( ForestryItem . frameUntreated . getItemStack (),
"###" , "#S#" , "###" ,
'#' , "stickWood" ,
'S' , Items . string );
Proxies . common . addRecipe ( ForestryItem . frameImpregnated . getItemStack (),
"###" , "#S#" , "###" ,
'#' , ForestryItem . stickImpregnated ,
'S' , Items . string );
// FOOD STUFF
2015-01-26 22:26:21 -08:00
if ( ForestryItem . honeyedSlice . item () != null ) {
2014-05-02 21:31:20 +02:00
Proxies . common . addRecipe ( ForestryItem . honeyedSlice . getItemStack ( 4 ),
"###" , "#X#" , "###" ,
'#' , ForestryItem . honeyDrop ,
'X' , Items . bread );
2015-01-26 22:26:21 -08:00
}
if ( ForestryItem . honeyPot . item () != null ) {
2014-05-02 21:31:20 +02:00
Proxies . common . addRecipe ( ForestryItem . honeyPot . getItemStack ( 1 ),
"# #" , " X " , "# #" ,
'#' , ForestryItem . honeyDrop ,
'X' , ForestryItem . waxCapsule );
2015-01-26 22:26:21 -08:00
}
if ( ForestryItem . ambrosia . item () != null ) {
2014-05-02 21:31:20 +02:00
Proxies . common . addRecipe ( ForestryItem . ambrosia . getItemStack (),
"#Y#" , "XXX" , "###" ,
'#' , ForestryItem . honeydew ,
'X' , ForestryItem . royalJelly ,
'Y' , ForestryItem . waxCapsule );
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
// / CAPSULES
Proxies . common . addRecipe ( GameMode . getGameMode (). getStackSetting ( "recipe.output.capsule" ), "###" , '#' , ForestryItem . beeswax );
Proxies . common . addRecipe ( GameMode . getGameMode (). getStackSetting ( "recipe.output.refractory" ), "###" , '#' , ForestryItem . refractoryWax );
// / BITUMINOUS PEAT
Proxies . common . addRecipe ( ForestryItem . bituminousPeat . getItemStack (),
2014-09-24 18:01:00 -07:00
" # " , "XYX" , " # " ,
'#' , "dustAsh" ,
'X' , ForestryItem . peat ,
'Y' , ForestryItem . propolis );
2015-01-07 07:07:45 -08:00
2014-05-02 21:31:20 +02:00
// / TORCHES
Proxies . common . addRecipe ( new ItemStack ( Blocks . torch , 3 ),
2014-09-24 18:01:00 -07:00
" # " , " # " , " Y " ,
'#' , ForestryItem . beeswax ,
'Y' , "stickWood" );
Proxies . common . addRecipe ( ForestryItem . craftingMaterial . getItemStack ( 1 , 1 ),
"# #" , " # " , "# #" ,
'#' , ForestryItem . propolis . getItemStack ( 1 , 2 ));
2014-05-02 21:31:20 +02:00
// / WAX CAST
Proxies . common . addRecipe ( ForestryItem . waxCast . getItemStack (),
2014-08-18 05:20:29 -07:00
"###" ,
"# #" ,
"###" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . beeswax );
// / ALVEARY
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack (),
"###" ,
"#X#" ,
"###" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryItem . impregnatedCasing ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 6 ));
// SWARMER
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , 2 ),
"#G#" ,
" X " ,
"#G#" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 5 ),
'X' , ForestryBlock . alveary ,
'G' , Items . gold_ingot );
// FAN
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , 3 ),
"I I" ,
" X " ,
"I#I" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 4 ),
'X' , ForestryBlock . alveary ,
'I' , Items . iron_ingot );
// HEATER
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , 4 ),
"#I#" ,
" X " ,
"YYY" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 4 ),
'X' , ForestryBlock . alveary ,
'I' , Items . iron_ingot , 'Y' , Blocks . stone );
// HYGROREGULATOR
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , 5 ),
"GIG" ,
"GXG" ,
"GIG" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
'I' , Items . iron_ingot ,
'G' , Blocks . glass );
// STABILISER
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , 6 ),
"G G" ,
"GXG" ,
"G G" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
'G' , Items . quartz );
// SIEVE
2014-08-18 05:20:29 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlvearySieve . BLOCK_META ),
"III" ,
" X " ,
"WWW" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
'I' , Items . iron_ingot ,
'W' , ForestryItem . craftingMaterial . getItemStack ( 1 , 3 ));
2015-01-07 07:07:45 -08:00
if ( PluginManager . Module . FACTORY . isEnabled ()) {
// / SQUEEZER
RecipeManagers . squeezerManager . addRecipe ( 10 , new ItemStack [] { ForestryItem . honeyDrop . getItemStack ()}, Fluids . HONEY . getFluid ( Defaults . FLUID_PER_HONEY_DROP ),
ForestryItem . propolis . getItemStack (), 5 );
RecipeManagers . squeezerManager . addRecipe ( 10 , new ItemStack [] { ForestryItem . honeydew . getItemStack ()}, Fluids . HONEY . getFluid ( Defaults . FLUID_PER_HONEY_DROP ));
RecipeManagers . squeezerManager . addRecipe ( 10 , new ItemStack [] { ForestryItem . phosphor . getItemStack ( 2 ), new ItemStack ( Blocks . sand )}, Fluids . LAVA . getFluid ( 2000 ));
RecipeManagers . squeezerManager . addRecipe ( 10 , new ItemStack [] { ForestryItem . phosphor . getItemStack ( 2 ), new ItemStack ( Blocks . dirt )}, Fluids . LAVA . getFluid ( 1600 ));
// / CARPENTER
RecipeManagers . carpenterManager . addRecipe ( 100 , Fluids . WATER . getFluid ( 2000 ), null , ForestryItem . beealyzer . getItemStack (),
"X#X" , "X#X" , "RDR" ,
'#' , Blocks . glass_pane ,
'X' , "ingotTin" ,
'R' , Items . redstone ,
'D' , Items . diamond );
RecipeManagers . carpenterManager . addRecipe ( 50 , Fluids . HONEY . getFluid ( 500 ), null , ForestryItem . craftingMaterial . getItemStack ( 1 , 6 ),
" J " , "###" , "WPW" ,
'#' , "plankWood" ,
'J' , ForestryItem . royalJelly ,
'W' , ForestryItem . beeswax ,
'P' , ForestryItem . pollenCluster );
RecipeManagers . carpenterManager . addRecipe ( 30 , Fluids . WATER . getFluid ( 600 ), null , ForestryBlock . candle . getItemStack ( 24 ),
" X " ,
"###" ,
"###" ,
'#' , ForestryItem . beeswax ,
'X' , Items . string );
RecipeManagers . carpenterManager . addRecipe ( 10 , Fluids . WATER . getFluid ( 200 ), null , ForestryBlock . candle . getItemStack ( 6 ),
"#X#" ,
'#' , ForestryItem . beeswax ,
'X' , ForestryItem . craftingMaterial . getItemStack ( 1 , 2 ));
Proxies . common . addShapelessRecipe ( ForestryBlock . candle . getItemStack (), ForestryBlock . candle . getItemStack ());
Proxies . common . addShapelessRecipe ( ForestryBlock . candle . getItemStack ( 1 , 1 ), ForestryBlock . candle . getItemStack ( 1 , 1 ));
// / CENTRIFUGE
// Honey combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 0 ), ImmutableMap . of (
ForestryItem . beeswax . getItemStack (), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 9f
));
2015-01-07 07:07:45 -08:00
// Cocoa combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 1 ), ImmutableMap . of (
ForestryItem . beeswax . getItemStack (), 1 . 0f ,
new ItemStack ( Items . dye , 1 , 3 ), 0 . 5f
));
2015-01-07 07:07:45 -08:00
// Simmering combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 2 ), ImmutableMap . of (
ForestryItem . refractoryWax . getItemStack (), 1 . 0f ,
ForestryItem . phosphor . getItemStack ( 2 ), 0 . 7f
));
2015-01-07 07:07:45 -08:00
// Stringy combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 3 ), ImmutableMap . of (
ForestryItem . propolis . getItemStack (), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 4f
));
2015-04-12 22:33:28 -07:00
// Dripping combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 5 ), ImmutableMap . of (
ForestryItem . honeydew . getItemStack (), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 4f
));
2015-01-07 07:07:45 -08:00
// Frozen combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 4 ), ImmutableMap . of (
ForestryItem . beeswax . getItemStack (), 0 . 8f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 7f ,
new ItemStack ( Items . snowball ), 0 . 4f ,
ForestryItem . pollenCluster . getItemStack ( 1 , 1 ), 0 . 2f
));
2015-01-07 07:07:45 -08:00
// Silky combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 6 ), ImmutableMap . of (
ForestryItem . honeyDrop . getItemStack (), 1 . 0f ,
ForestryItem . propolis . getItemStack ( 1 , 3 ), 0 . 8f
));
2015-01-07 07:07:45 -08:00
// Parched combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 7 ), ImmutableMap . of (
ForestryItem . beeswax . getItemStack (), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 9f
));
2015-01-07 07:07:45 -08:00
// Mysterious combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 8 ), ImmutableMap . of (
ForestryItem . propolis . getItemStack ( 1 , 2 ), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 4f
));
2015-01-07 07:07:45 -08:00
// Irradiated combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 9 ), ImmutableMap . < ItemStack , Float > of (
));
2015-01-07 07:07:45 -08:00
// Powdery combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 10 ), ImmutableMap . of (
ForestryItem . honeyDrop . getItemStack (), 0 . 2f ,
ForestryItem . beeswax . getItemStack (), 0 . 2f ,
new ItemStack ( Items . gunpowder ), 0 . 9f
));
2015-01-07 07:07:45 -08:00
// Wheaten Combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 14 ), ImmutableMap . of (
ForestryItem . honeyDrop . getItemStack (), 0 . 2f ,
ForestryItem . beeswax . getItemStack (), 0 . 2f ,
new ItemStack ( Items . wheat ), 0 . 8f
));
2015-01-07 07:07:45 -08:00
// Mossy Combs
2015-06-07 01:13:34 -07:00
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 15 ), ImmutableMap . of (
ForestryItem . beeswax . getItemStack (), 1 . 0f ,
ForestryItem . honeyDrop . getItemStack (), 0 . 9f
));
2015-01-07 07:07:45 -08:00
2015-06-07 01:13:34 -07:00
// Mellow Combs
RecipeManagers . centrifugeManager . addRecipe ( 20 , ForestryItem . beeComb . getItemStack ( 1 , 16 ), ImmutableMap . of (
ForestryItem . honeydew . getItemStack (), 0 . 6f ,
ForestryItem . beeswax . getItemStack (), 0 . 2f ,
new ItemStack ( Items . quartz ), 0 . 3f
));
// Silky Propolis
RecipeManagers . centrifugeManager . addRecipe ( 5 , ForestryItem . propolis . getItemStack ( 1 , 3 ), ImmutableMap . of (
ForestryItem . craftingMaterial . getItemStack ( 1 , 2 ), 0 . 6f ,
ForestryItem . propolis . getItemStack (), 0 . 1f
));
2015-01-07 07:07:45 -08:00
// / FERMENTER
RecipeManagers . fermenterManager . addRecipe ( ForestryItem . honeydew . getItemStack (), 500 , 1 . 0f , Fluids . SHORT_MEAD . getFluid ( 1 ), Fluids . HONEY . getFluid ( 1 ));
}
2014-05-02 21:31:20 +02:00
2014-10-01 22:28:21 -07:00
// ANALYZER
definitionAnalyzer . recipes = createAlyzerRecipes ( ForestryBlock . core . block (), Defaults . DEFINITION_ANALYZER_META );
2014-12-07 12:45:21 -08:00
definitionAnalyzer . register ();
definitionApiary . register ();
definitionBeehouse . register ();
definitionChest . register ();
2014-10-01 22:28:21 -07:00
}
2015-04-05 14:16:41 -07:00
public static IRecipe [] createAlyzerRecipes ( Block block , int meta ) {
2014-10-01 22:28:21 -07:00
ArrayList < IRecipe > recipes = new ArrayList < IRecipe > ();
recipes . add ( ShapedRecipeCustom . createShapedRecipe ( new ItemStack ( block , 1 , meta ), "XTX" , " Y " , "X X" , 'Y' , ForestryItem . sturdyCasing , 'T' , ForestryItem . beealyzer , 'X' , "ingotBronze" ));
recipes . add ( ShapedRecipeCustom . createShapedRecipe ( new ItemStack ( block , 1 , meta ), "XTX" , " Y " , "X X" , 'Y' , ForestryItem . sturdyCasing , 'T' , ForestryItem . treealyzer , 'X' , "ingotBronze" ));
return recipes . toArray ( new IRecipe [ recipes . size () ] );
2014-05-02 21:31:20 +02:00
}
2015-04-12 22:33:28 -07:00
private static void registerBeehiveDrops () {
ItemStack honeyComb = ForestryItem . beeComb . getItemStack ( 1 , 0 );
hiveRegistry . addDrops ( HiveRegistry . forest ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . FOREST , honeyComb ). setIgnobleShare ( 0 . 7f ),
new HiveDrop ( 8 , BeeDefinition . FOREST . getRainResist (), honeyComb ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , honeyComb )
2015-04-12 22:33:28 -07:00
);
hiveRegistry . addDrops ( HiveRegistry . meadows ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . MEADOWS , honeyComb ). setIgnobleShare ( 0 . 7f ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , honeyComb )
2015-04-12 22:33:28 -07:00
);
ItemStack parchedComb = ForestryItem . beeComb . getItemStack ( 1 , 7 );
hiveRegistry . addDrops ( HiveRegistry . desert ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . MODEST , parchedComb ). setIgnobleShare ( 0 . 7f ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , parchedComb )
2015-04-12 22:33:28 -07:00
);
ItemStack silkyComb = ForestryItem . beeComb . getItemStack ( 1 , 6 );
hiveRegistry . addDrops ( HiveRegistry . jungle ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . TROPICAL , silkyComb ). setIgnobleShare ( 0 . 7f ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , silkyComb )
2015-04-12 22:33:28 -07:00
);
ItemStack mysteriousComb = ForestryItem . beeComb . getItemStack ( 1 , 8 );
hiveRegistry . addDrops ( HiveRegistry . end ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 90 , BeeDefinition . ENDED , mysteriousComb )
2015-04-12 22:33:28 -07:00
);
ItemStack frozenComb = ForestryItem . beeComb . getItemStack ( 1 , 4 );
hiveRegistry . addDrops ( HiveRegistry . snow ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . WINTRY , frozenComb ). setIgnobleShare ( 0 . 5f ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , frozenComb )
2015-04-12 22:33:28 -07:00
);
ItemStack mossyComb = ForestryItem . beeComb . getItemStack ( 1 , 15 );
hiveRegistry . addDrops ( HiveRegistry . swamp ,
2015-04-18 12:32:09 -07:00
new HiveDrop ( 80 , BeeDefinition . MARSHY , mossyComb ). setIgnobleShare ( 0 . 4f ),
new HiveDrop ( 3 , BeeDefinition . VALIANT , mossyComb )
2015-04-12 22:33:28 -07:00
);
2014-05-02 21:31:20 +02:00
}
2015-04-05 14:16:41 -07:00
private static void registerDungeonLoot () {
2014-05-02 21:31:20 +02:00
int rarity ;
2015-01-26 22:26:21 -08:00
if ( Config . dungeonLootRare ) {
2014-05-02 21:31:20 +02:00
rarity = 5 ;
2015-01-26 22:26:21 -08:00
} else {
2014-05-02 21:31:20 +02:00
rarity = 10 ;
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
2015-04-18 12:32:09 -07:00
ChestGenHooks . addItem ( ChestGenHooks . DUNGEON_CHEST , new WeightedRandomChestContent ( BeeDefinition . STEADFAST . getMemberStack ( EnumBeeType . DRONE ), 1 , 1 , rarity ));
2014-05-02 21:31:20 +02:00
2014-08-18 05:20:29 -07:00
ItemStack stack = ForestryBlock . candle . getItemStack ();
2014-05-02 21:31:20 +02:00
NBTTagCompound tag = new NBTTagCompound ();
tag . setInteger ( BlockCandle . colourTagName , 0xffffff );
stack . setTagCompound ( tag );
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( stack , 7 , 12 , 12 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( ForestryItem . scoop . getItemStack (), 1 , 1 , 8 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( ForestryItem . propolis . getItemStack (), 2 , 4 , 6 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( ForestryItem . beeComb . getItemStack (), 4 , 12 , 7 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( ForestryItem . beeComb . getItemStack ( 1 , 4 ), 2 , 10 , 7 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( ForestryItem . beeComb . getItemStack ( 1 , 6 ), 1 , 6 , 7 ));
2015-04-18 12:32:09 -07:00
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( BeeDefinition . FOREST . getRainResist (). getMemberStack ( EnumBeeType . PRINCESS ), 1 , 1 , 5 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( BeeDefinition . COMMON . getMemberStack ( EnumBeeType . DRONE ), 1 , 2 , 8 ));
ChestGenHooks . addItem ( Defaults . CHEST_GEN_HOOK_NATURALIST_CHEST , new WeightedRandomChestContent ( BeeDefinition . MEADOWS . getMemberStack ( EnumBeeType . PRINCESS ), 1 , 1 , 5 ));
2014-05-02 21:31:20 +02:00
}
2015-04-05 14:16:41 -07:00
private static void createHives () {
2015-01-11 01:40:54 -08:00
hiveRegistry . registerHive ( HiveRegistry . forest , HiveDescription . FOREST );
hiveRegistry . registerHive ( HiveRegistry . meadows , HiveDescription . MEADOWS );
hiveRegistry . registerHive ( HiveRegistry . desert , HiveDescription . DESERT );
hiveRegistry . registerHive ( HiveRegistry . jungle , HiveDescription . JUNGLE );
hiveRegistry . registerHive ( HiveRegistry . end , HiveDescription . END );
hiveRegistry . registerHive ( HiveRegistry . snow , HiveDescription . SNOW );
hiveRegistry . registerHive ( HiveRegistry . swamp , HiveDescription . SWAMP );
2014-10-03 02:08:41 -07:00
}
2015-04-05 14:16:41 -07:00
private static void createAlleles () {
2014-05-02 21:31:20 +02:00
IClassification hymnoptera = AlleleManager . alleleRegistry . createAndRegisterClassification ( EnumClassLevel . ORDER , "hymnoptera" , "Hymnoptera" );
AlleleManager . alleleRegistry . getClassification ( "class.insecta" ). addMemberGroup ( hymnoptera );
IClassification apidae = AlleleManager . alleleRegistry . createAndRegisterClassification ( EnumClassLevel . FAMILY , "apidae" , "Apidae" );
hymnoptera . addMemberGroup ( apidae );
2015-04-22 23:14:42 -07:00
for ( BeeBranchDefinition beeBranch : BeeBranchDefinition . values ()) {
2015-04-18 12:32:09 -07:00
apidae . addMemberGroup ( beeBranch . getBranch ());
}
2014-05-02 21:31:20 +02:00
// / BEES // EFFECTS 1800 - 1899
2015-05-07 22:20:34 -07:00
Allele . effectNone = new AlleleEffectNone ( "none" );
Allele . effectAggressive = new AlleleEffectAggressive ();
Allele . effectHeroic = new AlleleEffectHeroic ();
Allele . effectBeatific = new AlleleEffectPotion ( "beatific" , false , Potion . regeneration , 100 , true );
Allele . effectMiasmic = new AlleleEffectMiasmic ();
Allele . effectMisanthrope = new AlleleEffectMisanthrope ();
Allele . effectGlacial = new AlleleEffectGlacial ();
Allele . effectRadioactive = new AlleleEffectRadioactive ();
Allele . effectCreeper = new AlleleEffectCreeper ();
Allele . effectIgnition = new AlleleEffectIgnition ();
Allele . effectExploration = new AlleleEffectExploration ();
Allele . effectFestiveEaster = new AlleleEffectNone ( "festiveEaster" );
Allele . effectSnowing = new AlleleEffectSnowing ();
Allele . effectDrunkard = new AlleleEffectPotion ( "drunkard" , false , Potion . confusion , 100 , false );
Allele . effectReanimation = new AlleleEffectResurrection ( "reanimation" , AlleleEffectResurrection . getReanimationList ());
Allele . effectResurrection = new AlleleEffectResurrection ( "resurrection" , AlleleEffectResurrection . getResurrectionList ());
Allele . effectRepulsion = new AlleleEffectRepulsion ();
Allele . effectFertile = new AlleleEffectFertile ();
Allele . effectMycophilic = new AlleleEffectFungification ();
2014-05-02 21:31:20 +02:00
}
2015-04-24 19:49:30 -05:00
public static float getSecondPrincessChance () {
2015-02-09 23:36:32 -06:00
return secondPrincessChance ;
}
2015-04-12 22:33:28 -07:00
private static void parseAdditionalFlowers ( String list , ArrayList < ItemStack > target ) {
2015-06-17 01:21:32 -07:00
List < ItemStack > flowers = StackUtils . parseItemStackStrings ( list , 0 );
2015-03-01 01:04:07 -08:00
target . addAll ( flowers );
2014-05-02 21:31:20 +02:00
}
2015-04-12 22:33:28 -07:00
private static void parseBeeBlacklist ( String list ) {
2014-05-02 21:31:20 +02:00
String [] items = list . split ( "[;]+" );
for ( String item : items ) {
2015-01-26 22:26:21 -08:00
if ( item . isEmpty ()) {
2014-05-02 21:31:20 +02:00
continue ;
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
FMLCommonHandler . instance (). getFMLLogger (). debug ( "Blacklisting bee species identified by " + item );
AlleleManager . alleleRegistry . blacklistAllele ( item );
}
}
@Override
public ISaveEventHandler getSaveEventHandler () {
return new SaveEventHandlerApiculture ();
}
2015-01-11 19:33:37 -08:00
@Override
public void populateChunk ( IChunkProvider chunkProvider , World world , Random rand , int chunkX , int chunkZ , boolean hasVillageGenerated ) {
2015-01-26 22:26:21 -08:00
if ( Config . generateBeehives ) {
2015-01-11 19:33:37 -08:00
HiveDecorator . instance (). decorateHives ( chunkProvider , world , rand , chunkX , chunkZ , hasVillageGenerated );
2015-01-26 22:26:21 -08:00
}
2015-01-11 19:33:37 -08:00
}
@Override
public void populateChunkRetroGen ( World world , Random rand , int chunkX , int chunkZ ) {
2015-01-26 22:26:21 -08:00
if ( Config . generateBeehives ) {
2015-01-11 19:33:37 -08:00
HiveDecorator . instance (). decorateHives ( world , rand , chunkX , chunkZ );
2015-01-26 22:26:21 -08:00
}
2015-01-11 19:33:37 -08:00
}
2014-05-02 21:31:20 +02:00
@Override
public boolean processIMCMessage ( IMCMessage message ) {
if ( message . key . equals ( "add-candle-lighting-id" )) {
ItemStack value = message . getItemStackValue ();
2015-01-26 22:26:21 -08:00
if ( value != null ) {
2015-06-13 16:36:46 -07:00
BlockCandle . addItemToLightingList ( value . getItem ());
2015-01-26 22:26:21 -08:00
} else {
2015-06-13 16:36:46 -07:00
logInvalidIMCMessage ( message );
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
return true ;
2015-01-26 22:26:21 -08:00
} else if ( message . key . equals ( "add-alveary-slab" ) && message . isStringMessage ()) {
2014-05-02 21:31:20 +02:00
try {
2014-07-12 07:55:59 +02:00
Block block = GameData . getBlockRegistry (). getRaw ( message . getStringValue ());
2014-05-02 21:31:20 +02:00
2015-06-13 16:36:46 -07:00
if ( block != null && block != Blocks . air ) {
StructureLogicAlveary . addSlabBlock ( block );
2015-01-26 22:26:21 -08:00
} else {
2015-06-13 16:36:46 -07:00
logInvalidIMCMessage ( message );
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
} catch ( Exception e ) {
2015-06-13 16:36:46 -07:00
logInvalidIMCMessage ( message );
2014-05-02 21:31:20 +02:00
}
2015-06-13 16:36:46 -07:00
return true ;
2015-01-26 22:26:21 -08:00
}
2015-06-13 16:36:46 -07:00
2014-05-02 21:31:20 +02:00
return super . processIMCMessage ( message );
}
@SubscribeEvent
@SideOnly ( Side . CLIENT )
public void textureHook ( TextureStitchEvent . Pre event ) {
if ( event . map . getTextureType () == 1 ) {
EntitySnowFX . icons = new IIcon [ 3 ] ;
2015-01-26 22:26:21 -08:00
for ( int i = 0 ; i < EntitySnowFX . icons . length ; i ++ ) {
2014-05-02 21:31:20 +02:00
EntitySnowFX . icons [ i ] = event . map . registerIcon ( "forestry:particles/snow." + ( i + 1 ));
2015-01-26 22:26:21 -08:00
}
2014-05-02 21:31:20 +02:00
}
}
}