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 ;
2015-06-20 23:57:33 -07:00
import java.io.File ;
2014-12-26 02:13:39 -08:00
import java.util.ArrayList ;
2015-06-20 23:57:33 -07:00
import java.util.HashMap ;
2015-03-01 01:04:07 -08:00
import java.util.List ;
2015-06-20 23:57:33 -07:00
import java.util.Map ;
2015-01-11 19:33:37 -08:00
import java.util.Random ;
2015-06-29 22:15:39 -07:00
import java.util.Set ;
2014-12-26 02:13:39 -08:00
2015-09-20 12:20:45 +02:00
import forestry.apiculture.ArmorApiaristHelper ;
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 ;
2015-06-20 23:57:33 -07:00
import net.minecraftforge.common.config.Property ;
2014-12-26 02:13:39 -08:00
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 ;
2015-08-15 19:01:30 -07:00
import cpw.mods.fml.common.registry.GameData ;
2014-05-02 21:31:20 +02:00
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
2015-06-20 23:57:33 -07:00
import forestry.Forestry ;
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 ;
2015-06-20 23:57:33 -07:00
import forestry.api.apiculture.IBeekeepingMode ;
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 ;
2015-06-20 23:57:33 -07:00
import forestry.api.genetics.IFlower ;
import forestry.api.genetics.IFlowerRegistry ;
2014-05-02 21:31:20 +02:00
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.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.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-06-29 22:15:39 -07:00
import forestry.apiculture.multiblock.TileAlveary ;
import forestry.apiculture.multiblock.TileAlvearyFan ;
import forestry.apiculture.multiblock.TileAlvearyHeater ;
import forestry.apiculture.multiblock.TileAlvearyHygroregulator ;
import forestry.apiculture.multiblock.TileAlvearyPlain ;
import forestry.apiculture.multiblock.TileAlvearySieve ;
import forestry.apiculture.multiblock.TileAlvearyStabiliser ;
import forestry.apiculture.multiblock.TileAlvearySwarmer ;
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.Defaults ;
import forestry.core.config.ForestryBlock ;
import forestry.core.config.ForestryItem ;
2015-06-21 22:34:42 -07:00
import forestry.core.config.LocalizedConfiguration ;
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 ;
2015-08-26 01:17:42 +01:00
import forestry.core.render.RenderNaturalistChest ;
2014-05-02 21:31:20 +02:00
import forestry.core.utils.ShapedRecipeCustom ;
2015-03-01 01:04:07 -08:00
import forestry.core.utils.StackUtils ;
2015-06-21 22:34:42 -07:00
import forestry.core.utils.StringUtil ;
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" ;
2015-08-02 01:15:41 -07:00
private static final String [] EMPTY_STRINGS = new String [ 0 ] ;
2014-05-02 21:31:20 +02:00
public static String beekeepingMode = "NORMAL" ;
2015-06-21 22:34:42 -07:00
private static float secondPrincessChance = 0 ;
2015-06-29 22:15:39 -07:00
public static final int ticksPerBeeWorkCycle = 550 ;
2014-05-02 21:31:20 +02:00
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 ;
2015-08-02 01:15:41 -07:00
private static MachineDefinition definitionApiary ;
2015-09-23 00:24:48 -07:00
private static MachineDefinition definitionChestLegacy ;
2015-08-02 01:15:41 -07:00
private static MachineDefinition definitionChest ;
private static MachineDefinition definitionBeehouse ;
private static MachineDefinition definitionAnalyzer ;
2014-05-02 21:31:20 +02:00
2015-06-20 23:57:33 -07:00
private final Map < String , String []> defaultAcceptedFlowers = new HashMap < String , String []> ();
private final Map < String , String []> defaultPlantableFlowers = new HashMap < String , String []> ();
2014-05-02 21:31:20 +02:00
@Override
2015-08-26 01:17:42 +01:00
@SuppressWarnings ({ "unchecked" })
2015-04-05 14:16:41 -07:00
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-09-20 12:20:45 +02:00
BeeManager . armorApiaristHelper = new ArmorApiaristHelper ();
2015-05-07 22:20:34 -07:00
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 );
2015-09-23 00:24:48 -07:00
ForestryBlock . apiculture . registerBlock ( new BlockBase ( Material . iron ), ItemForestryBlock . class , "apiculture" );
2014-08-18 05:20:29 -07:00
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
2015-09-23 00:24:48 -07:00
ForestryBlock . apicultureChest . registerBlock ( new BlockBase ( Material . iron , true ), ItemForestryBlock . class , "apicultureChest" );
ForestryBlock . apicultureChest . block (). setCreativeTab ( Tabs . tabApiculture );
ForestryBlock . apicultureChest . 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 ));
2015-09-23 00:24:48 -07:00
definitionChestLegacy = (( BlockBase ) ForestryBlock . apiculture . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_APIARISTCHEST_LEGACY_META , "forestry.ApiaristChest" , TileApiaristChest . class ). setLegacy ());
definitionChest = (( BlockBase ) ForestryBlock . apicultureChest . block ()). addDefinition ( new MachineDefinition ( Defaults . DEFINITION_APIARISTCHEST_META , "forestry.ApiaristChestNew" , TileApiaristChest . class , new RenderNaturalistChest ( "apiaristchest" ),
ShapedRecipeCustom . createShapedRecipe ( ForestryBlock . apicultureChest . getItemStack ( 1 , Defaults . DEFINITION_APIARISTCHEST_META ),
2014-08-18 05:20:29 -07:00
" # " ,
"XYX" ,
"XXX" ,
2015-08-21 01:45:09 -05:00
'#' , "blockGlass" ,
2014-08-18 05:20:29 -07:00
'X' , "beeComb" ,
2015-08-21 02:01:41 -05:00
'Y' , "chestWood" ))
2015-08-26 01:17:42 +01:00
. setBoundingBox ( 0 . 0625F , 0 . 0F , 0 . 0625F , 0 . 9375F , 0 . 875F , 0 . 9375F ));
2014-08-18 05:20:29 -07:00
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-06-21 22:34:42 -07:00
if ( Config . enableVillagers ) {
2015-01-24 00:21:20 -08:00
// 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 () {
2015-06-20 23:57:33 -07:00
final String oldConfig = CONFIG_CATEGORY + ".conf" ;
final String newConfig = CONFIG_CATEGORY + ".cfg" ;
2014-05-02 21:31:20 +02:00
2015-06-20 23:57:33 -07:00
File configFile = new File ( Forestry . instance . getConfigFolder (), newConfig );
if ( ! configFile . exists ()) {
setDefaultsForConfig ();
}
File oldConfigFile = new File ( Forestry . instance . getConfigFolder (), oldConfig );
if ( oldConfigFile . exists ()) {
loadOldConfig ();
final String oldConfigRenamed = CONFIG_CATEGORY + ".conf.old" ;
File oldConfigFileRenamed = new File ( Forestry . instance . getConfigFolder (), oldConfigRenamed );
if ( oldConfigFile . renameTo ( oldConfigFileRenamed )) {
Proxies . log . info ( "Migrated " + CONFIG_CATEGORY + " settings to the new file '" + newConfig + "' and renamed '" + oldConfig + "' to '" + oldConfigRenamed + "'." );
}
}
2015-07-24 23:08:17 -07:00
LocalizedConfiguration config = new LocalizedConfiguration ( configFile , "2.0.0" );
if ( ! config . getLoadedConfigVersion (). equals ( config . getDefinedConfigVersion ())) {
boolean deleted = configFile . delete ();
if ( deleted ) {
config = new LocalizedConfiguration ( configFile , "2.0.0" );
setDefaultsForConfig ();
}
}
2014-05-02 21:31:20 +02:00
2015-06-20 23:57:33 -07:00
List < IBeekeepingMode > beekeepingModes = BeeManager . beeRoot . getBeekeepingModes ();
String [] validBeekeepingModeNames = new String [ beekeepingModes . size () ] ;
for ( int i = 0 ; i < beekeepingModes . size (); i ++ ) {
validBeekeepingModeNames [ i ] = beekeepingModes . get ( i ). getName ();
}
2015-06-21 22:34:42 -07:00
beekeepingMode = config . getStringLocalized ( "beekeeping" , "mode" , "NORMAL" , validBeekeepingModeNames );
2014-05-02 21:31:20 +02:00
Proxies . log . finer ( "Beekeeping mode read from config: " + beekeepingMode );
2015-06-21 22:34:42 -07:00
secondPrincessChance = config . getFloatLocalized ( "beekeeping" , "second.princess" , secondPrincessChance , 0 . 0f , 100 . 0f );
String acceptedFlowerMessage = StringUtil . localize ( "config.beekeeping.flowers.accepted.comment" );
String plantableFlowerMessage = StringUtil . localize ( "config.beekeeping.flowers.plantable.comment" );
2015-02-09 23:36:32 -06:00
2015-06-20 23:57:33 -07:00
for ( String flowerType : FlowerManager . flowerRegistry . getFlowerTypes ()) {
String [] defaultAccepted = defaultAcceptedFlowers . get ( flowerType );
if ( defaultAccepted == null ) {
defaultAccepted = EMPTY_STRINGS ;
}
2015-06-21 22:34:42 -07:00
Property property = config . get ( "beekeeping.flowers." + flowerType , "accepted" , defaultAccepted );
property . comment = acceptedFlowerMessage ;
2015-08-08 15:51:43 -07:00
parseAcceptedFlowers ( property . getStringList (), flowerType );
2014-05-02 21:31:20 +02:00
2015-06-20 23:57:33 -07:00
String [] defaultPlantable = defaultPlantableFlowers . get ( flowerType );
if ( defaultPlantable == null ) {
defaultPlantable = EMPTY_STRINGS ;
}
property = config . get ( "beekeeping.flowers." + flowerType , "plantable" , defaultPlantable );
2015-06-21 22:34:42 -07:00
property . comment = plantableFlowerMessage ;
2015-06-20 23:57:33 -07:00
parsePlantableFlowers ( property , flowerType );
2015-06-28 13:56:54 -07:00
2015-06-29 22:15:39 -07:00
Set < IFlower > acceptableFlowers = FlowerManager . flowerRegistry . getAcceptableFlowers ( flowerType );
2015-06-28 13:56:54 -07:00
if ( acceptableFlowers == null || acceptableFlowers . size () == 0 ) {
Proxies . log . severe ( "Flower type '" + flowerType + "' has no valid flowers set in apiculture.cfg. Add valid flowers or delete the config to set it to default." );
}
2015-06-20 23:57:33 -07:00
}
2014-05-02 21:31:20 +02:00
2015-06-21 22:34:42 -07:00
String [] blacklist = config . getStringListLocalized ( "species" , "blacklist" , EMPTY_STRINGS );
parseBeeBlacklist ( blacklist );
2015-06-20 23:57:33 -07:00
config . save ();
2014-05-02 21:31:20 +02:00
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
2015-07-13 20:51:45 -07:00
AlleleManager . alleleRegistry . registerDeprecatedAlleleReplacement ( "forestry.speciesArgrarian" , BeeDefinition . AGRARIAN . getGenome (). getPrimary ());
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-06-21 22:34:42 -07:00
if ( Config . enableVillagers ) {
2015-01-24 00:21:20 -08:00
// 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 ();
}
2015-06-20 23:57:33 -07:00
private void setDefaultsForConfig () {
IFlowerRegistry flowerRegistry = FlowerManager . flowerRegistry ;
// Register acceptable plants
flowerRegistry . registerAcceptableFlower ( Blocks . dragon_egg , FlowerManager . FlowerTypeEnd );
flowerRegistry . registerAcceptableFlower ( Blocks . vine , FlowerManager . FlowerTypeJungle );
flowerRegistry . registerAcceptableFlower ( Blocks . tallgrass , FlowerManager . FlowerTypeJungle );
flowerRegistry . registerAcceptableFlower ( Blocks . wheat , FlowerManager . FlowerTypeWheat );
flowerRegistry . registerAcceptableFlower ( Blocks . pumpkin_stem , FlowerManager . FlowerTypeGourd );
flowerRegistry . registerAcceptableFlower ( Blocks . melon_stem , FlowerManager . FlowerTypeGourd );
flowerRegistry . registerAcceptableFlower ( Blocks . nether_wart , FlowerManager . FlowerTypeNether );
2015-06-26 19:36:36 -07:00
flowerRegistry . registerAcceptableFlower ( Blocks . cactus , FlowerManager . FlowerTypeCacti );
2015-06-20 23:57:33 -07:00
flowerRegistry . registerAcceptableFlower ( Blocks . double_plant , 0 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
flowerRegistry . registerAcceptableFlower ( Blocks . double_plant , 1 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
flowerRegistry . registerAcceptableFlower ( Blocks . double_plant , 4 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
flowerRegistry . registerAcceptableFlower ( Blocks . double_plant , 5 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
// Register plantable plants
for ( int meta = 0 ; meta <= 8 ; meta ++ ) {
flowerRegistry . registerPlantableFlower ( Blocks . red_flower , meta , 1 . 0 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
}
flowerRegistry . registerPlantableFlower ( Blocks . yellow_flower , 0 , 1 . 0 , FlowerManager . FlowerTypeVanilla , FlowerManager . FlowerTypeSnow );
flowerRegistry . registerPlantableFlower ( Blocks . brown_mushroom , 0 , 1 . 0 , FlowerManager . FlowerTypeMushrooms );
flowerRegistry . registerPlantableFlower ( Blocks . red_mushroom , 0 , 1 . 0 , FlowerManager . FlowerTypeMushrooms );
flowerRegistry . registerPlantableFlower ( Blocks . cactus , 0 , 1 . 0 , FlowerManager . FlowerTypeCacti );
for ( String flowerType : FlowerManager . flowerRegistry . getFlowerTypes ()) {
2015-06-29 22:15:39 -07:00
Set < IFlower > flowers = FlowerManager . flowerRegistry . getAcceptableFlowers ( flowerType );
2015-06-20 23:57:33 -07:00
List < String > acceptedFlowerNames = new ArrayList < String > ();
List < String > plantableFlowerNames = new ArrayList < String > ();
if ( flowers != null ) {
for ( IFlower flower : flowers ) {
2015-08-15 19:01:30 -07:00
String name = GameData . getBlockRegistry (). getNameForObject ( flower . getBlock ());
2015-08-08 15:51:43 -07:00
if ( name == null ) {
2015-08-09 15:53:48 -07:00
Proxies . log . severe ( "Could not find name for flower: " + flower + " with type: " + flowerType );
2015-08-08 15:51:43 -07:00
continue ;
}
2015-06-20 23:57:33 -07:00
int meta = flower . getMeta ();
if ( flower . getMeta () != OreDictionary . WILDCARD_VALUE ) {
name = name + ':' + meta ;
}
if ( flower . isPlantable ()) {
2015-07-24 23:08:17 -07:00
plantableFlowerNames . add ( name );
2015-06-20 23:57:33 -07:00
} else {
acceptedFlowerNames . add ( name );
}
}
}
String [] acceptedFlowerNamesArray = acceptedFlowerNames . toArray ( new String [ acceptedFlowerNames . size () ] );
defaultAcceptedFlowers . put ( flowerType , acceptedFlowerNamesArray );
String [] plantableFlowerNamesArray = plantableFlowerNames . toArray ( new String [ plantableFlowerNames . size () ] );
defaultPlantableFlowers . put ( flowerType , plantableFlowerNamesArray );
}
}
2015-07-24 23:08:17 -07:00
private static void loadOldConfig () {
2015-06-20 23:57:33 -07:00
// Config
2015-06-21 00:22:13 -07:00
forestry . core . config . deprecated . Configuration apicultureConfig = new forestry . core . config . deprecated . Configuration ();
2015-06-20 23:57:33 -07:00
2015-08-02 01:15:41 -07:00
forestry . core . config . deprecated . Property property = apicultureConfig . get ( "render.bees.fancy" , CONFIG_CATEGORY , fancyRenderedBees );
2015-06-20 23:57:33 -07:00
property . comment = "set to true to enable a fancy butterfly-like renderer for bees. (experimental!)" ;
fancyRenderedBees = Boolean . parseBoolean ( property . value );
property = apicultureConfig . get ( "beekeeping.mode" , CONFIG_CATEGORY , "NORMAL" );
property . comment = "change beekeeping modes here. possible values EASY, NORMAL, HARD, HARDCORE, INSANE. mods may add additional modes." ;
beekeepingMode = property . value . trim ();
Proxies . log . finer ( "Beekeeping mode read from config: " + beekeepingMode );
2015-06-21 22:34:42 -07:00
property = apicultureConfig . get ( "beekeeping.secondprincess" , CONFIG_CATEGORY , secondPrincessChance );
2015-06-20 23:57:33 -07:00
property . comment = "percent chance of second princess drop, for limited/skyblock maps. Acceptable values up to 2 decimals." ;
secondPrincessChance = Float . parseFloat ( property . value );
property = apicultureConfig . get ( "species.blacklist" , CONFIG_CATEGORY , "" );
property . comment = "add species to blacklist identified by their uid and seperated with ';'." ;
parseBeeBlacklist ( property . value );
}
2014-05-02 21:31:20 +02:00
@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 " ,
2015-08-21 01:45:09 -05:00
'#' , "dustRedstone" , '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
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . PLAIN_META ),
2014-08-18 05:20:29 -07:00
"###" ,
"#X#" ,
"###" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryItem . impregnatedCasing ,
'#' , ForestryItem . craftingMaterial . getItemStack ( 1 , 6 ));
// SWARMER
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . SWARMER_META ),
2014-08-18 05:20:29 -07:00
"#G#" ,
" X " ,
"#G#" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 5 ),
'X' , ForestryBlock . alveary ,
2015-08-21 01:45:09 -05:00
'G' , "ingotGold" );
2014-05-02 21:31:20 +02:00
// FAN
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . FAN_META ),
2014-08-18 05:20:29 -07:00
"I I" ,
" X " ,
"I#I" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 4 ),
'X' , ForestryBlock . alveary ,
2015-08-21 01:45:09 -05:00
'I' , "ingotIron" );
2014-05-02 21:31:20 +02:00
// HEATER
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . HEATER_META ),
2014-08-18 05:20:29 -07:00
"#I#" ,
" X " ,
"YYY" ,
2014-05-02 21:31:20 +02:00
'#' , ForestryItem . tubes . getItemStack ( 1 , 4 ),
'X' , ForestryBlock . alveary ,
2015-08-21 02:34:49 -05:00
'I' , "ingotIron" , 'Y' , "stone" );
2014-05-02 21:31:20 +02:00
// HYGROREGULATOR
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . HYGRO_META ),
2014-08-18 05:20:29 -07:00
"GIG" ,
"GXG" ,
"GIG" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
2015-08-21 01:45:09 -05:00
'I' , "ingotIron" ,
'G' , "blockGlass" );
2014-05-02 21:31:20 +02:00
// STABILISER
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . STABILIZER_META ),
2014-08-18 05:20:29 -07:00
"G G" ,
"GXG" ,
"G G" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
2015-08-21 01:45:09 -05:00
'G' , "gemQuartz" );
2014-05-02 21:31:20 +02:00
// SIEVE
2015-06-29 22:15:39 -07:00
Proxies . common . addRecipe ( ForestryBlock . alveary . getItemStack ( 1 , TileAlveary . SIEVE_META ),
2014-08-18 05:20:29 -07:00
"III" ,
" X " ,
"WWW" ,
2014-05-02 21:31:20 +02:00
'X' , ForestryBlock . alveary ,
2015-08-21 01:45:09 -05:00
'I' , "ingotIron" ,
2014-05-02 21:31:20 +02:00
'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 ));
2015-08-21 01:45:09 -05:00
RecipeManagers . squeezerManager . addRecipe ( 10 , new ItemStack [] { ForestryItem . phosphor . getItemStack ( 2 ), new ItemStack ( Blocks . sand , 1 , 1 )}, Fluids . LAVA . getFluid ( 2000 ));
2015-01-07 07:07:45 -08:00
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" ,
2015-08-21 01:45:09 -05:00
'#' , "paneGlass" ,
2015-01-07 07:07:45 -08:00
'X' , "ingotTin" ,
2015-08-21 01:45:09 -05:00
'R' , "dustRedstone" ,
'D' , "gemDiamond" );
2015-01-07 07:07:45 -08:00
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 ();
2015-09-23 00:24:48 -07:00
definitionChestLegacy . register ();
2014-12-07 12:45:21 -08:00
definitionChest . register ();
2014-10-01 22:28:21 -07:00
}
2015-08-02 01:15:41 -07:00
private 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-08-02 00:43:23 -07:00
Allele . effectNone = new AlleleEffectNone ( "none" , true );
2015-05-07 22:20:34 -07:00
Allele . effectAggressive = new AlleleEffectAggressive ();
Allele . effectHeroic = new AlleleEffectHeroic ();
2015-08-02 00:43:23 -07:00
Allele . effectBeatific = new AlleleEffectPotion ( "beatific" , false , Potion . regeneration , 100 );
Allele . effectMiasmic = new AlleleEffectPotion ( "miasmic" , false , Potion . poison , 600 , 100 , 0 . 1f );
2015-05-07 22:20:34 -07:00
Allele . effectMisanthrope = new AlleleEffectMisanthrope ();
Allele . effectGlacial = new AlleleEffectGlacial ();
Allele . effectRadioactive = new AlleleEffectRadioactive ();
Allele . effectCreeper = new AlleleEffectCreeper ();
Allele . effectIgnition = new AlleleEffectIgnition ();
Allele . effectExploration = new AlleleEffectExploration ();
2015-08-02 00:43:23 -07:00
Allele . effectFestiveEaster = new AlleleEffectNone ( "festiveEaster" , true );
2015-05-07 22:20:34 -07:00
Allele . effectSnowing = new AlleleEffectSnowing ();
2015-08-02 00:43:23 -07:00
Allele . effectDrunkard = new AlleleEffectPotion ( "drunkard" , false , Potion . confusion , 100 );
2015-05-07 22:20:34 -07:00
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-06-20 23:57:33 -07:00
public static double 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 ( "[;]+" );
2015-06-20 23:57:33 -07:00
parseBeeBlacklist ( items );
}
2014-05-02 21:31:20 +02:00
2015-06-20 23:57:33 -07:00
private static void parseBeeBlacklist ( String [] items ) {
2014-05-02 21:31:20 +02:00
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 );
}
}
2015-08-08 15:51:43 -07:00
private static void parseAcceptedFlowers ( String [] acceptedFlowers , String flowerType ) {
List < StackUtils . Stack > acceptedFlowerItemStacks = StackUtils . parseStackStrings ( acceptedFlowers , OreDictionary . WILDCARD_VALUE );
2015-06-24 22:03:06 -07:00
for ( StackUtils . Stack acceptedFlower : acceptedFlowerItemStacks ) {
Block acceptedFlowerBlock = acceptedFlower . getBlock ();
int meta = acceptedFlower . getMeta ();
2015-06-20 23:57:33 -07:00
if ( acceptedFlowerBlock != null ) {
FlowerManager . flowerRegistry . registerAcceptableFlower ( acceptedFlowerBlock , meta , flowerType );
} else {
2015-08-08 15:51:43 -07:00
Proxies . log . warning ( "No block found for '" + acceptedFlower + "' in apiculture config for '" + flowerType + "'." );
2015-06-20 23:57:33 -07:00
}
}
}
private static void parsePlantableFlowers ( Property property , String flowerType ) {
for ( String string : property . getStringList ()) {
2015-07-24 23:31:52 -07:00
StackUtils . Stack plantableFlower = StackUtils . parseStackString ( string , OreDictionary . WILDCARD_VALUE );
2015-06-20 23:57:33 -07:00
if ( plantableFlower == null ) {
continue ;
}
2015-06-24 22:03:06 -07:00
Block plantableFlowerBlock = plantableFlower . getBlock ();
int meta = plantableFlower . getMeta ();
2015-06-20 23:57:33 -07:00
if ( plantableFlowerBlock != null ) {
2015-07-24 23:08:17 -07:00
FlowerManager . flowerRegistry . registerPlantableFlower ( plantableFlowerBlock , meta , 1 . 0 , flowerType );
2015-06-20 23:57:33 -07:00
} else {
2015-09-23 01:14:37 -07:00
Proxies . log . warning ( "No block found for '" + string + "' in config '" + property . getName () + "'." );
2015-06-20 23:57:33 -07:00
}
}
}
2014-05-02 21:31:20 +02:00
@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-06-21 00:22:13 -07:00
if ( Config . getBeehivesAmount () > 0 . 0 ) {
2015-08-02 01:15:41 -07:00
HiveDecorator . 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-06-21 00:22:13 -07:00
if ( Config . getBeehivesAmount () > 0 . 0 ) {
2015-08-02 01:15:41 -07:00
HiveDecorator . 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 ()) {
2015-06-29 22:15:39 -07:00
String messageString = String . format ( "Received a '%s' request from mod '%s'. This IMC message has been replaced with the oreDictionary for 'slabWood'. Please contact the author and report this issue." , message . key , message . getSender ());
Proxies . log . warning ( messageString );
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
}
}
}