Files
ForestryMC/src/main/java/forestry/plugins/PluginApiculture.java
T

994 lines
41 KiB
Java
Raw Normal View History

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
*
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;
import com.google.common.collect.ImmutableMap;
import java.io.File;
2014-12-26 02:13:39 -08:00
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
2015-06-29 22:15:39 -07:00
import java.util.Set;
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.util.IIcon;
import net.minecraft.util.WeightedRandomChestContent;
import net.minecraft.world.World;
import net.minecraft.world.chunk.IChunkProvider;
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.common.config.Property;
import net.minecraftforge.fluids.FluidStack;
2014-12-26 02:13:39 -08:00
import net.minecraftforge.oredict.OreDictionary;
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.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;
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.IBeekeepingMode;
2014-10-03 02:08:41 -07:00
import forestry.api.apiculture.hives.HiveManager;
import forestry.api.core.ForestryAPI;
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.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;
import forestry.apiculture.ArmorApiaristHelper;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.GuiHandlerApiculture;
import forestry.apiculture.SaveEventHandlerApiculture;
import forestry.apiculture.VillageHandlerApiculture;
import forestry.apiculture.blocks.BlockAlveary;
import forestry.apiculture.blocks.BlockBeehives;
import forestry.apiculture.blocks.BlockCandle;
import forestry.apiculture.blocks.BlockStump;
import forestry.apiculture.commands.CommandBee;
2015-11-05 21:58:01 -08:00
import forestry.apiculture.entities.EntityMinecartApiary;
2015-10-18 18:09:40 -07:00
import forestry.apiculture.entities.EntityMinecartBeehouse;
import forestry.apiculture.flowers.FlowerRegistry;
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;
import forestry.apiculture.genetics.BeeMutationFactory;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.genetics.BeekeepingMode;
import forestry.apiculture.genetics.HiveDrop;
import forestry.apiculture.genetics.JubilanceFactory;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.apiculture.items.EnumHoneyComb;
import forestry.apiculture.items.EnumPollenCluster;
import forestry.apiculture.items.EnumPropolis;
import forestry.apiculture.items.ItemBlockCandle;
import forestry.apiculture.items.ItemRegistryApiculture;
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-11-17 19:34:11 -08:00
import forestry.apiculture.network.PacketRegistryApiculture;
2014-05-02 21:31:20 +02:00
import forestry.apiculture.proxy.ProxyApiculture;
import forestry.apiculture.tiles.TileApiaristChest;
import forestry.apiculture.tiles.TileApiary;
import forestry.apiculture.tiles.TileBeehouse;
import forestry.apiculture.tiles.TileCandle;
import forestry.apiculture.tiles.TileSwarm;
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;
import forestry.apiculture.worldgen.HiveDescription;
import forestry.apiculture.worldgen.HiveGenHelper;
import forestry.apiculture.worldgen.HiveRegistry;
2015-11-08 19:24:46 -08:00
import forestry.core.GuiHandlerBase;
import forestry.core.ISaveEventHandler;
import forestry.core.blocks.BlockBase;
2014-05-02 21:31:20 +02:00
import forestry.core.config.Config;
import forestry.core.config.Constants;
2014-05-02 21:31:20 +02:00
import forestry.core.config.ForestryBlock;
import forestry.core.config.ForestryItem;
2015-06-21 22:34:42 -07:00
import forestry.core.config.LocalizedConfiguration;
import forestry.core.entities.EntityFXSnow;
2014-12-13 18:58:49 -08:00
import forestry.core.fluids.Fluids;
import forestry.core.items.EnumElectronTube;
import forestry.core.items.ItemBlockForestry;
2015-11-17 19:34:11 -08:00
import forestry.core.network.IPacketRegistry;
2014-05-02 21:31:20 +02:00
import forestry.core.proxy.Proxies;
2015-10-17 12:25:13 -07:00
import forestry.core.recipes.RecipeUtil;
import forestry.core.recipes.ShapedRecipeCustom;
import forestry.core.tiles.MachineDefinition;
import forestry.core.tiles.TileAnalyzer;
2015-10-18 18:09:40 -07:00
import forestry.core.utils.EntityUtil;
import forestry.core.utils.Log;
import forestry.core.utils.Stack;
2015-06-21 22:34:42 -07:00
import forestry.core.utils.StringUtil;
2014-05-02 21:31:20 +02:00
@Plugin(pluginID = "Apiculture", name = "Apiculture", author = "SirSengir", url = Constants.URL, unlocalizedDescription = "for.plugin.apiculture.description")
public class PluginApiculture extends ForestryPlugin {
2014-05-02 21:31:20 +02:00
@SidedProxy(clientSide = "forestry.apiculture.proxy.ProxyApicultureClient", serverSide = "forestry.apiculture.proxy.ProxyApiculture")
2014-05-02 21:31:20 +02:00
public static ProxyApiculture proxy;
private static final String CONFIG_CATEGORY = "apiculture";
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;
public static ItemRegistryApiculture items;
2015-04-12 21:07:49 -07: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-10-10 04:16:52 -07:00
private final Map<String, String[]> defaultAcceptedFlowers = new HashMap<>();
private final Map<String, String[]> defaultPlantableFlowers = new HashMap<>();
2014-05-02 21:31:20 +02:00
@Override
@SuppressWarnings({"unchecked"})
2015-04-05 14:16:41 -07:00
protected void setupAPI() {
super.setupAPI();
2014-05-02 21:31:20 +02:00
HiveManager.hiveRegistry = hiveRegistry = new HiveRegistry();
HiveManager.genHelper = new HiveGenHelper();
2014-05-02 21:31:20 +02:00
FlowerManager.flowerRegistry = new FlowerRegistry();
2015-10-10 04:16:52 -07:00
BeeManager.villageBees = new ArrayList[]{new ArrayList<>(), new ArrayList<>()};
2015-04-05 14:16:41 -07:00
BeeManager.beeFactory = new BeeFactory();
BeeManager.beeMutationFactory = new BeeMutationFactory();
BeeManager.jubilanceFactory = new JubilanceFactory();
BeeManager.armorApiaristHelper = new ArmorApiaristHelper();
2015-04-05 14:16:41 -07:00
// Init bee interface
BeeManager.beeRoot = new BeeHelper();
AlleleManager.alleleRegistry.registerSpeciesRoot(BeeManager.beeRoot);
2015-04-05 14:16:41 -07:00
// Modes
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
protected void registerItemsAndBlocks() {
items = new ItemRegistryApiculture();
2015-04-05 14:16:41 -07:00
ForestryBlock.apiculture.registerBlock(new BlockBase(Material.iron), ItemBlockForestry.class, "apiculture");
ForestryBlock.apiculture.block().setCreativeTab(Tabs.tabApiculture);
ForestryBlock.apiculture.block().setHarvestLevel("axe", 0);
ForestryBlock.apicultureChest.registerBlock(new BlockBase(Material.iron, true), ItemBlockForestry.class, "apicultureChest");
2015-09-23 00:24:48 -07:00
ForestryBlock.apicultureChest.block().setCreativeTab(Tabs.tabApiculture);
ForestryBlock.apicultureChest.block().setHarvestLevel("axe", 0);
ForestryBlock.beehives.registerBlock(new BlockBeehives(), ItemBlockForestry.class, "beehives");
// Candles
ForestryBlock.candle.registerBlock(new BlockCandle(), ItemBlockCandle.class, "candle");
ForestryBlock.stump.registerBlock(new BlockStump(), ItemBlockForestry.class, "stump");
// Alveary and Components
ForestryBlock.alveary.registerBlock(new BlockAlveary(), ItemBlockForestry.class, "alveary");
ForestryBlock.alveary.block().setHarvestLevel("axe", 0);
}
@Override
public void preInit() {
super.preInit();
MinecraftForge.EVENT_BUS.register(this);
definitionApiary = ((BlockBase) ForestryBlock.apiculture.block()).addDefinition(new MachineDefinition(Constants.DEFINITION_APIARY_META, "forestry.Apiary", TileApiary.class,
ShapedRecipeCustom.createShapedRecipe(ForestryBlock.apiculture.getItemStack(1, Constants.DEFINITION_APIARY_META),
"XXX",
"#C#",
"###",
'X', "slabWood",
'#', "plankWood",
'C', PluginCore.items.impregnatedCasing))
.setFaces(0, 1, 2, 2, 4, 4, 0, 7));
definitionChestLegacy = ((BlockBase) ForestryBlock.apiculture.block()).addDefinition(new MachineDefinition(Constants.DEFINITION_APIARISTCHEST_LEGACY_META, "forestry.ApiaristChest", TileApiaristChest.class).setLegacy());
2015-09-23 00:24:48 -07:00
definitionChest = ((BlockBase) ForestryBlock.apicultureChest.block()).addDefinition(new MachineDefinition(Constants.DEFINITION_APIARISTCHEST_META, "forestry.ApiaristChestNew", TileApiaristChest.class, Proxies.render.getRenderChest("apiaristchest"),
ShapedRecipeCustom.createShapedRecipe(ForestryBlock.apicultureChest.getItemStack(1, Constants.DEFINITION_APIARISTCHEST_META),
" # ",
"XYX",
"XXX",
2015-08-21 01:45:09 -05:00
'#', "blockGlass",
'X', "beeComb",
'Y', "chestWood"))
.setBoundingBox(0.0625F, 0.0F, 0.0625F, 0.9375F, 0.875F, 0.9375F));
definitionBeehouse = ((BlockBase) ForestryBlock.apiculture.block()).addDefinition(new MachineDefinition(Constants.DEFINITION_BEEHOUSE_META, "forestry.Beehouse", TileBeehouse.class,
ShapedRecipeCustom.createShapedRecipe(ForestryBlock.apiculture.getItemStack(1, Constants.DEFINITION_BEEHOUSE_META),
"XXX",
"#C#",
"###",
'X', "slabWood",
'#', "plankWood",
'C', "beeComb"))
.setFaces(0, 1, 2, 2, 4, 4, 0, 7));
definitionAnalyzer = ((BlockBase) ForestryBlock.core.block()).addDefinition(new MachineDefinition(Constants.DEFINITION_ANALYZER_META, "forestry.Analyzer", TileAnalyzer.class,
PluginApiculture.proxy.getRendererAnalyzer(Constants.TEXTURE_PATH_BLOCKS + "/analyzer_")));
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) {
// Register village components with the Structure registry.
VillageHandlerApiculture.registerVillageComponents();
}
2014-11-14 22:49:26 -08:00
// Commands
PluginCore.rootCommand.addChildCommand(new CommandBee());
2014-05-02 21:31:20 +02:00
}
@Override
public void doInit() {
File configFile = new File(Forestry.instance.getConfigFolder(), CONFIG_CATEGORY + ".cfg");
if (!configFile.exists()) {
setDefaultsForConfig();
}
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
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);
Log.finer("Beekeeping mode read from config: " + beekeepingMode);
2014-05-02 21:31:20 +02:00
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");
for (String flowerType : FlowerManager.flowerRegistry.getFlowerTypes()) {
String[] defaultAccepted = defaultAcceptedFlowers.get(flowerType);
if (defaultAccepted == null) {
defaultAccepted = Constants.EMPTY_STRINGS;
}
2015-06-21 22:34:42 -07:00
Property property = config.get("beekeeping.flowers." + flowerType, "accepted", defaultAccepted);
property.comment = acceptedFlowerMessage;
parseAcceptedFlowers(property.getStringList(), flowerType);
2014-05-02 21:31:20 +02:00
String[] defaultPlantable = defaultPlantableFlowers.get(flowerType);
if (defaultPlantable == null) {
defaultPlantable = Constants.EMPTY_STRINGS;
}
property = config.get("beekeeping.flowers." + flowerType, "plantable", defaultPlantable);
2015-06-21 22:34:42 -07:00
property.comment = plantableFlowerMessage;
parsePlantableFlowers(property, flowerType);
2015-06-29 22:15:39 -07:00
Set<IFlower> acceptableFlowers = FlowerManager.flowerRegistry.getAcceptableFlowers(flowerType);
if (acceptableFlowers == null || acceptableFlowers.size() == 0) {
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.");
}
}
2014-05-02 21:31:20 +02:00
String[] blacklist = config.getStringListLocalized("species", "blacklist", Constants.EMPTY_STRINGS);
2015-06-21 22:34:42 -07:00
parseBeeBlacklist(blacklist);
config.save();
2014-05-02 21:31:20 +02:00
// Genetics
createAlleles();
BeeDefinition.initBees();
AlleleManager.alleleRegistry.registerDeprecatedAlleleReplacement("forestry.speciesArgrarian", BeeDefinition.AGRARIAN.getGenome().getPrimary());
// Hives
createHives();
registerBeehiveDrops();
2014-05-02 21:31:20 +02:00
// Inducers for swarmer
BeeManager.inducers.put(items.royalJelly.getItemStack(), 10);
2014-05-02 21:31:20 +02:00
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-10-18 18:09:40 -07:00
EntityUtil.registerEntity(EntityMinecartBeehouse.class, "cart.beehouse", 1, 0x000000, 0xffffff, 256, 3, true);
2015-11-05 21:58:01 -08:00
EntityUtil.registerEntity(EntityMinecartApiary.class, "cart.apiary", 2, 0x000000, 0xffffff, 256, 3, true);
2014-05-02 21:31:20 +02: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) {
// Register villager stuff
VillageHandlerApiculture villageHandler = new VillageHandlerApiculture();
VillagerRegistry.instance().registerVillageCreationHandler(villageHandler);
VillagerRegistry.instance().registerVillagerId(Constants.ID_VILLAGER_BEEKEEPER);
Proxies.render.registerVillagerSkin(Constants.ID_VILLAGER_BEEKEEPER, Constants.TEXTURE_SKIN_BEEKPEEPER);
VillagerRegistry.instance().registerVillageTradeHandler(Constants.ID_VILLAGER_BEEKEEPER, villageHandler);
}
2014-05-02 21:31:20 +02:00
proxy.initializeRendering();
}
@Override
public void postInit() {
super.postInit();
registerDungeonLoot();
}
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);
flowerRegistry.registerAcceptableFlower(Blocks.cactus, FlowerManager.FlowerTypeCacti);
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-10-10 04:16:52 -07:00
List<String> acceptedFlowerNames = new ArrayList<>();
List<String> plantableFlowerNames = new ArrayList<>();
if (flowers != null) {
for (IFlower flower : flowers) {
String name = GameData.getBlockRegistry().getNameForObject(flower.getBlock());
if (name == null) {
Log.severe("Could not find name for flower: " + flower + " with type: " + flowerType);
continue;
}
int meta = flower.getMeta();
if (flower.getMeta() != OreDictionary.WILDCARD_VALUE) {
name = name + ':' + meta;
}
if (flower.isPlantable()) {
plantableFlowerNames.add(name);
} 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);
}
}
2014-05-02 21:31:20 +02:00
@Override
2015-11-08 19:24:46 -08:00
public GuiHandlerBase getGuiHandler() {
2014-05-02 21:31:20 +02:00
return new GuiHandlerApiculture();
}
@Override
2015-11-17 19:34:11 -08:00
public IPacketRegistry getPacketRegistry() {
return new PacketRegistryApiculture();
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(PluginCore.items.beeswax.getItemStack(), "cratedBeeswax");
crateRegistry.registerCrate(items.pollenCluster.get(EnumPollenCluster.NORMAL, 1), "cratedPollen");
crateRegistry.registerCrate(items.pollenCluster.get(EnumPollenCluster.CRYSTALLINE, 1), "cratedCrystallinePollen");
crateRegistry.registerCrate(items.propolis.getItemStack(), "cratedPropolis");
crateRegistry.registerCrate(items.honeydew.getItemStack(), "cratedHoneydew");
crateRegistry.registerCrate(items.royalJelly.getItemStack(), "cratedRoyalJelly");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.HONEY, 1), "cratedHoneycombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.COCOA, 1), "cratedCocoaComb");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.SIMMERING, 1), "cratedSimmeringCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.STRINGY, 1), "cratedStringyCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.FROZEN, 1), "cratedFrozenCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.DRIPPING, 1), "cratedDrippingCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.SILKY, 1), "cratedSilkyCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.PARCHED, 1), "cratedParchedCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1), "cratedMysteriousCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.POWDERY, 1), "cratedPowderyCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.WHEATEN, 1), "cratedWheatenCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.MOSSY, 1), "cratedMossyCombs");
crateRegistry.registerCrate(items.beeComb.get(EnumHoneyComb.MELLOW, 1), "cratedMellowCombs");
2014-12-26 02:13:39 -08:00
crateRegistry.registerCrate(PluginCore.items.refractoryWax.getItemStack(), "cratedRefractoryWax");
2014-05-02 21:31:20 +02:00
}
@Override
protected void registerRecipes() {
// / APIARIST'S ARMOR
ItemStack wovenSilk = PluginCore.items.craftingMaterial.getWovenSilk();
RecipeUtil.addRecipe(items.apiaristHat,
2014-09-24 18:01:00 -07:00
"###", "# #",
'#', wovenSilk);
RecipeUtil.addRecipe(items.apiaristChest,
2014-09-24 18:01:00 -07:00
"# #", "###", "###",
'#', wovenSilk);
RecipeUtil.addRecipe(items.apiaristLegs,
2014-09-24 18:01:00 -07:00
"###", "# #", "# #",
'#', wovenSilk);
RecipeUtil.addRecipe(items.apiaristBoots,
2014-09-24 18:01:00 -07:00
"# #", "# #",
'#', wovenSilk);
2014-05-02 21:31:20 +02:00
// / HABITAT LOCATOR
RecipeUtil.addRecipe(items.habitatLocator,
" X ",
"X#X",
" X ",
2015-08-21 01:45:09 -05:00
'#', "dustRedstone", 'X', "ingotBronze");
2014-05-02 21:31:20 +02:00
// Bees
RecipeUtil.addRecipe(items.scoop,
2014-05-02 21:31:20 +02:00
"#X#", "###", " # ",
'#', "stickWood",
'X', Blocks.wool);
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(new ItemStack(Items.slime_ball),
2014-05-02 21:31:20 +02:00
"#X#", "#X#", "#X#",
'#', items.propolis,
'X', items.pollenCluster.get(EnumPollenCluster.NORMAL, 1));
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(new ItemStack(Items.speckled_melon),
2014-05-02 21:31:20 +02:00
"#X#", "#Y#", "#X#",
'#', items.honeyDrop,
'X', items.honeydew,
2014-05-02 21:31:20 +02:00
'Y', Items.melon);
RecipeUtil.addRecipe(items.frameUntreated,
2014-05-02 21:31:20 +02:00
"###", "#S#", "###",
'#', "stickWood",
'S', Items.string);
RecipeUtil.addRecipe(items.frameImpregnated,
2014-05-02 21:31:20 +02:00
"###", "#S#", "###",
'#', PluginCore.items.stickImpregnated,
2014-05-02 21:31:20 +02:00
'S', Items.string);
RecipeUtil.addRecipe(items.minecartBeehouse.getBeeHouseMinecart(),
2015-10-18 18:09:40 -07:00
"B",
"C",
'B', ForestryBlock.apiculture.getItemStack(1, Constants.DEFINITION_BEEHOUSE_META),
'C', Items.minecart);
RecipeUtil.addRecipe(items.minecartBeehouse.getApiaryMinecart(),
2015-11-05 21:58:01 -08:00
"B",
"C",
'B', ForestryBlock.apiculture.getItemStack(1, Constants.DEFINITION_APIARY_META),
'C', Items.minecart);
2014-05-02 21:31:20 +02:00
// FOOD STUFF
if (ForestryItem.honeyedSlice.item() != null) {
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryItem.honeyedSlice.getItemStack(4),
2014-05-02 21:31:20 +02:00
"###", "#X#", "###",
'#', items.honeyDrop,
2014-05-02 21:31:20 +02:00
'X', Items.bread);
}
if (ForestryItem.honeyPot.item() != null) {
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryItem.honeyPot.getItemStack(1),
2014-05-02 21:31:20 +02:00
"# #", " X ", "# #",
'#', items.honeyDrop,
2014-05-02 21:31:20 +02:00
'X', ForestryItem.waxCapsule);
}
if (ForestryItem.ambrosia.item() != null) {
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryItem.ambrosia.getItemStack(),
2014-05-02 21:31:20 +02:00
"#Y#", "XXX", "###",
'#', items.honeydew,
'X', items.royalJelly,
2014-05-02 21:31:20 +02:00
'Y', ForestryItem.waxCapsule);
}
2014-05-02 21:31:20 +02:00
// / CAPSULES
RecipeUtil.addRecipe(ForestryAPI.activeMode.getStackSetting("recipe.output.capsule"), "###", '#', PluginCore.items.beeswax);
RecipeUtil.addRecipe(ForestryAPI.activeMode.getStackSetting("recipe.output.refractory"), "###", '#', PluginCore.items.refractoryWax);
2014-05-02 21:31:20 +02:00
// / BITUMINOUS PEAT
RecipeUtil.addRecipe(PluginCore.items.bituminousPeat.getItemStack(),
2014-09-24 18:01:00 -07:00
" # ", "XYX", " # ",
'#', "dustAsh",
'X', PluginCore.items.peat,
'Y', items.propolis);
2015-01-07 07:07:45 -08:00
2014-05-02 21:31:20 +02:00
// / TORCHES
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(new ItemStack(Blocks.torch, 3),
2014-09-24 18:01:00 -07:00
" # ", " # ", " Y ",
'#', PluginCore.items.beeswax,
2014-09-24 18:01:00 -07:00
'Y', "stickWood");
RecipeUtil.addRecipe(PluginCore.items.craftingMaterial.getPulsatingMesh(),
2014-09-24 18:01:00 -07:00
"# #", " # ", "# #",
'#', items.propolis.get(EnumPropolis.PULSATING, 1));
2014-05-02 21:31:20 +02:00
// / WAX CAST
RecipeUtil.addRecipe(items.waxCast,
"###",
"# #",
"###",
'#', PluginCore.items.beeswax);
2014-05-02 21:31:20 +02:00
// / ALVEARY
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.PLAIN_META),
"###",
"#X#",
"###",
'X', PluginCore.items.impregnatedCasing,
'#', PluginCore.items.craftingMaterial.getScentedPaneling());
2014-05-02 21:31:20 +02:00
// SWARMER
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.SWARMER_META),
"#G#",
" X ",
"#G#",
'#', PluginCore.items.tubes.get(EnumElectronTube.DIAMOND, 1),
2014-05-02 21:31:20 +02:00
'X', ForestryBlock.alveary,
2015-08-21 01:45:09 -05:00
'G', "ingotGold");
2014-05-02 21:31:20 +02:00
// FAN
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.FAN_META),
"I I",
" X ",
"I#I",
'#', PluginCore.items.tubes.get(EnumElectronTube.GOLD, 1),
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
// HEATER
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.HEATER_META),
"#I#",
" X ",
"YYY",
'#', PluginCore.items.tubes.get(EnumElectronTube.GOLD, 1),
2014-05-02 21:31:20 +02:00
'X', ForestryBlock.alveary,
'I', "ingotIron", 'Y', "stone");
2014-05-02 21:31:20 +02:00
// HYGROREGULATOR
2015-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.HYGRO_META),
"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-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.STABILIZER_META),
"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-10-17 12:25:13 -07:00
RecipeUtil.addRecipe(ForestryBlock.alveary.getItemStack(1, TileAlveary.SIEVE_META),
"III",
" X ",
"WWW",
2014-05-02 21:31:20 +02:00
'X', ForestryBlock.alveary,
2015-08-21 01:45:09 -05:00
'I', "ingotIron",
'W', PluginCore.items.craftingMaterial.getWovenSilk());
2014-05-02 21:31:20 +02:00
2015-01-07 07:07:45 -08:00
if (PluginManager.Module.FACTORY.isEnabled()) {
// / SQUEEZER
FluidStack honeyDropFluid = Fluids.HONEY.getFluid(Constants.FLUID_PER_HONEY_DROP);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{items.honeyDrop.getItemStack()}, honeyDropFluid, items.propolis.getItemStack(), 5);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{items.honeydew.getItemStack()}, honeyDropFluid);
ItemStack phosphor = PluginCore.items.phosphor.getItemStack(2);
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{phosphor, new ItemStack(Blocks.sand)}, Fluids.LAVA.getFluid(2000));
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{phosphor, new ItemStack(Blocks.sand, 1, 1)}, Fluids.LAVA.getFluid(2000));
RecipeManagers.squeezerManager.addRecipe(10, new ItemStack[]{phosphor, new ItemStack(Blocks.dirt)}, Fluids.LAVA.getFluid(1600));
2015-01-07 07:07:45 -08:00
// / CARPENTER
RecipeManagers.carpenterManager.addRecipe(100, Fluids.WATER.getFluid(2000), null, items.beealyzer.getItemStack(),
2015-01-07 07:07:45 -08:00
"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");
RecipeManagers.carpenterManager.addRecipe(50, Fluids.HONEY.getFluid(500), null, PluginCore.items.craftingMaterial.getScentedPaneling(),
2015-01-07 07:07:45 -08:00
" J ", "###", "WPW",
'#', "plankWood",
'J', items.royalJelly,
'W', PluginCore.items.beeswax,
'P', items.pollenCluster.get(EnumPollenCluster.NORMAL, 1));
2015-01-07 07:07:45 -08:00
RecipeManagers.carpenterManager.addRecipe(30, Fluids.WATER.getFluid(600), null, ForestryBlock.candle.getItemStack(24),
" X ",
"###",
"###",
'#', PluginCore.items.beeswax,
2015-01-07 07:07:45 -08:00
'X', Items.string);
RecipeManagers.carpenterManager.addRecipe(10, Fluids.WATER.getFluid(200), null, ForestryBlock.candle.getItemStack(6),
"#X#",
'#', PluginCore.items.beeswax,
'X', PluginCore.items.craftingMaterial.getSilkWisp());
2015-10-17 12:25:13 -07:00
RecipeUtil.addShapelessRecipe(ForestryBlock.candle.getItemStack(), ForestryBlock.candle.getItemStack());
RecipeUtil.addShapelessRecipe(ForestryBlock.candle.getItemStack(1, 1), ForestryBlock.candle.getItemStack(1, 1));
2015-01-07 07:07:45 -08:00
// / CENTRIFUGE
// Honey combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.HONEY, 1), ImmutableMap.of(
PluginCore.items.beeswax.getItemStack(), 1.0f,
items.honeyDrop.getItemStack(), 0.9f
));
2015-01-07 07:07:45 -08:00
// Cocoa combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.COCOA, 1), ImmutableMap.of(
PluginCore.items.beeswax.getItemStack(), 1.0f,
new ItemStack(Items.dye, 1, 3), 0.5f
));
2015-01-07 07:07:45 -08:00
// Simmering combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.SIMMERING, 1), ImmutableMap.of(
PluginCore.items.refractoryWax.getItemStack(), 1.0f,
PluginCore.items.phosphor.getItemStack(2), 0.7f
));
2015-01-07 07:07:45 -08:00
// Stringy combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.STRINGY, 1), ImmutableMap.of(
items.propolis.getItemStack(), 1.0f,
items.honeyDrop.getItemStack(), 0.4f
));
// Dripping combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.DRIPPING, 1), ImmutableMap.of(
items.honeydew.getItemStack(), 1.0f,
items.honeyDrop.getItemStack(), 0.4f
));
2015-01-07 07:07:45 -08:00
// Frozen combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.FROZEN, 1), ImmutableMap.of(
PluginCore.items.beeswax.getItemStack(), 0.8f,
items.honeyDrop.getItemStack(), 0.7f,
new ItemStack(Items.snowball), 0.4f,
items.pollenCluster.get(EnumPollenCluster.CRYSTALLINE, 1), 0.2f
));
2015-01-07 07:07:45 -08:00
// Silky combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.SILKY, 1), ImmutableMap.of(
items.honeyDrop.getItemStack(), 1.0f,
items.propolis.get(EnumPropolis.SILKY, 1), 0.8f
));
2015-01-07 07:07:45 -08:00
// Parched combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.PARCHED, 1), ImmutableMap.of(
PluginCore.items.beeswax.getItemStack(), 1.0f,
items.honeyDrop.getItemStack(), 0.9f
));
2015-01-07 07:07:45 -08:00
// Mysterious combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1), ImmutableMap.of(
items.propolis.get(EnumPropolis.PULSATING, 1), 1.0f,
items.honeyDrop.getItemStack(), 0.4f
));
2015-01-07 07:07:45 -08:00
// Irradiated combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.IRRADIATED, 1), ImmutableMap.<ItemStack, Float>of(
));
2015-01-07 07:07:45 -08:00
// Powdery combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.POWDERY, 1), ImmutableMap.of(
items.honeyDrop.getItemStack(), 0.2f,
PluginCore.items.beeswax.getItemStack(), 0.2f,
new ItemStack(Items.gunpowder), 0.9f
));
2015-01-07 07:07:45 -08:00
// Wheaten Combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.WHEATEN, 1), ImmutableMap.of(
items.honeyDrop.getItemStack(), 0.2f,
PluginCore.items.beeswax.getItemStack(), 0.2f,
new ItemStack(Items.wheat), 0.8f
));
2015-01-07 07:07:45 -08:00
// Mossy Combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.MOSSY, 1), ImmutableMap.of(
PluginCore.items.beeswax.getItemStack(), 1.0f,
items.honeyDrop.getItemStack(), 0.9f
));
2015-01-07 07:07:45 -08:00
// Mellow Combs
RecipeManagers.centrifugeManager.addRecipe(20, items.beeComb.get(EnumHoneyComb.MELLOW, 1), ImmutableMap.of(
items.honeydew.getItemStack(), 0.6f,
PluginCore.items.beeswax.getItemStack(), 0.2f,
new ItemStack(Items.quartz), 0.3f
));
// Silky Propolis
RecipeManagers.centrifugeManager.addRecipe(5, items.propolis.get(EnumPropolis.SILKY, 1), ImmutableMap.of(
PluginCore.items.craftingMaterial.getSilkWisp(), 0.6f,
items.propolis.getItemStack(), 0.1f
));
2015-01-07 07:07:45 -08:00
// / FERMENTER
RecipeManagers.fermenterManager.addRecipe(items.honeydew.getItemStack(), 500, 1.0f, Fluids.SHORT_MEAD.getFluid(1), Fluids.HONEY.getFluid(1));
2015-01-07 07:07:45 -08:00
}
2014-05-02 21:31:20 +02:00
// ANALYZER
definitionAnalyzer.recipes = createAlyzerRecipes(ForestryBlock.core.block(), Constants.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();
}
2015-08-02 01:15:41 -07:00
private static IRecipe[] createAlyzerRecipes(Block block, int meta) {
2015-10-10 04:16:52 -07:00
ArrayList<IRecipe> recipes = new ArrayList<>();
recipes.add(ShapedRecipeCustom.createShapedRecipe(new ItemStack(block, 1, meta),
"XTX",
" Y ",
"X X",
'Y', PluginCore.items.sturdyCasing,
'T', items.beealyzer,
'X', "ingotBronze"));
recipes.add(ShapedRecipeCustom.createShapedRecipe(new ItemStack(block, 1, meta),
"XTX",
" Y ",
"X X",
'Y', PluginCore.items.sturdyCasing,
'T', ForestryItem.treealyzer,
'X', "ingotBronze"));
return recipes.toArray(new IRecipe[recipes.size()]);
2014-05-02 21:31:20 +02:00
}
private static void registerBeehiveDrops() {
ItemStack honeyComb = items.beeComb.get(EnumHoneyComb.HONEY, 1);
hiveRegistry.addDrops(HiveRegistry.forest,
new HiveDrop(80, BeeDefinition.FOREST, honeyComb).setIgnobleShare(0.7f),
new HiveDrop(8, BeeDefinition.FOREST.getRainResist(), honeyComb),
new HiveDrop(3, BeeDefinition.VALIANT, honeyComb)
);
hiveRegistry.addDrops(HiveRegistry.meadows,
new HiveDrop(80, BeeDefinition.MEADOWS, honeyComb).setIgnobleShare(0.7f),
new HiveDrop(3, BeeDefinition.VALIANT, honeyComb)
);
ItemStack parchedComb = items.beeComb.get(EnumHoneyComb.PARCHED, 1);
hiveRegistry.addDrops(HiveRegistry.desert,
new HiveDrop(80, BeeDefinition.MODEST, parchedComb).setIgnobleShare(0.7f),
new HiveDrop(3, BeeDefinition.VALIANT, parchedComb)
);
ItemStack silkyComb = items.beeComb.get(EnumHoneyComb.SILKY, 1);
hiveRegistry.addDrops(HiveRegistry.jungle,
new HiveDrop(80, BeeDefinition.TROPICAL, silkyComb).setIgnobleShare(0.7f),
new HiveDrop(3, BeeDefinition.VALIANT, silkyComb)
);
ItemStack mysteriousComb = items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1);
hiveRegistry.addDrops(HiveRegistry.end,
new HiveDrop(90, BeeDefinition.ENDED, mysteriousComb)
);
ItemStack frozenComb = items.beeComb.get(EnumHoneyComb.FROZEN, 1);
hiveRegistry.addDrops(HiveRegistry.snow,
new HiveDrop(80, BeeDefinition.WINTRY, frozenComb).setIgnobleShare(0.5f),
new HiveDrop(3, BeeDefinition.VALIANT, frozenComb)
);
ItemStack mossyComb = items.beeComb.get(EnumHoneyComb.MOSSY, 1);
hiveRegistry.addDrops(HiveRegistry.swamp,
new HiveDrop(80, BeeDefinition.MARSHY, mossyComb).setIgnobleShare(0.4f),
new HiveDrop(3, BeeDefinition.VALIANT, mossyComb)
);
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;
if (Config.dungeonLootRare) {
2014-05-02 21:31:20 +02:00
rarity = 5;
} else {
2014-05-02 21:31:20 +02:00
rarity = 10;
}
2014-05-02 21:31:20 +02:00
ChestGenHooks.addItem(ChestGenHooks.DUNGEON_CHEST, new WeightedRandomChestContent(BeeDefinition.STEADFAST.getMemberStack(EnumBeeType.DRONE), 1, 1, rarity));
2014-05-02 21:31:20 +02: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(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(stack, 7, 12, 12));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(items.scoop.getItemStack(), 1, 1, 8));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(items.propolis.get(EnumPropolis.NORMAL, 1), 2, 4, 6));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(items.beeComb.get(EnumHoneyComb.HONEY, 1), 4, 12, 7));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(items.beeComb.get(EnumHoneyComb.FROZEN, 1), 2, 10, 7));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(items.beeComb.get(EnumHoneyComb.SILKY, 1), 1, 6, 7));
2014-05-02 21:31:20 +02:00
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(BeeDefinition.FOREST.getRainResist().getMemberStack(EnumBeeType.PRINCESS), 1, 1, 5));
ChestGenHooks.addItem(Constants.CHEST_GEN_HOOK_NATURALIST_CHEST, new WeightedRandomChestContent(BeeDefinition.COMMON.getMemberStack(EnumBeeType.DRONE), 1, 2, 8));
ChestGenHooks.addItem(Constants.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() {
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()) {
apidae.addMemberGroup(beeBranch.getBranch());
}
2014-05-02 21:31:20 +02:00
AlleleEffect.createAlleles();
2014-05-02 21:31:20 +02:00
}
public static double getSecondPrincessChance() {
return secondPrincessChance;
}
private static void parseBeeBlacklist(String[] items) {
2014-05-02 21:31:20 +02:00
for (String item : items) {
if (item.isEmpty()) {
2014-05-02 21:31:20 +02:00
continue;
}
2014-05-02 21:31:20 +02:00
FMLCommonHandler.instance().getFMLLogger().debug("Blacklisting bee species identified by " + item);
AlleleManager.alleleRegistry.blacklistAllele(item);
}
}
private static void parseAcceptedFlowers(String[] acceptedFlowers, String flowerType) {
List<Stack> acceptedFlowerItemStacks = Stack.parseStackStrings(acceptedFlowers, OreDictionary.WILDCARD_VALUE);
for (Stack acceptedFlower : acceptedFlowerItemStacks) {
Block acceptedFlowerBlock = acceptedFlower.getBlock();
int meta = acceptedFlower.getMeta();
if (acceptedFlowerBlock != null) {
FlowerManager.flowerRegistry.registerAcceptableFlower(acceptedFlowerBlock, meta, flowerType);
} else {
Log.warning("No block found for '" + acceptedFlower + "' in apiculture config for '" + flowerType + "'.");
}
}
}
private static void parsePlantableFlowers(Property property, String flowerType) {
for (String string : property.getStringList()) {
Stack plantableFlower = Stack.parseStackString(string, OreDictionary.WILDCARD_VALUE);
if (plantableFlower == null) {
continue;
}
Block plantableFlowerBlock = plantableFlower.getBlock();
int meta = plantableFlower.getMeta();
if (plantableFlowerBlock != null) {
FlowerManager.flowerRegistry.registerPlantableFlower(plantableFlowerBlock, meta, 1.0, flowerType);
} else {
Log.warning("No block found for '" + string + "' in config '" + property.getName() + "'.");
}
}
}
2014-05-02 21:31:20 +02:00
@Override
public ISaveEventHandler getSaveEventHandler() {
return new SaveEventHandlerApiculture();
}
@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);
}
}
@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);
}
}
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();
if (value != null) {
BlockCandle.addItemToLightingList(value.getItem());
} else {
logInvalidIMCMessage(message);
}
2014-05-02 21:31:20 +02:00
return true;
} 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());
Log.warning(messageString);
return true;
}
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) {
EntityFXSnow.icons = new IIcon[3];
for (int i = 0; i < EntityFXSnow.icons.length; i++) {
EntityFXSnow.icons[i] = event.map.registerIcon("forestry:particles/snow." + (i + 1));
}
2014-05-02 21:31:20 +02:00
}
}
}