diff --git a/api b/api index 933e55067..d71affa96 160000 --- a/api +++ b/api @@ -1 +1 @@ -Subproject commit 933e550673e3329bc4ed658938aefe5b707e113c +Subproject commit d71affa969ffeb6cb9b2ceab41be5bb611d7f62e diff --git a/src/main/java/forestry/apiculture/worldgen/HiveDecorator.java b/src/main/java/forestry/apiculture/worldgen/HiveDecorator.java index f6ad3c96c..b0981553e 100755 --- a/src/main/java/forestry/apiculture/worldgen/HiveDecorator.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveDecorator.java @@ -10,17 +10,22 @@ ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - -import net.minecraft.world.World; - import cpw.mods.fml.common.eventhandler.SubscribeEvent; - +import forestry.api.apiculture.hives.HiveManager; +import forestry.api.apiculture.hives.IHive; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; +import forestry.core.config.Defaults; +import net.minecraft.block.Block; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; import net.minecraftforge.common.util.EnumHelper; import net.minecraftforge.event.terraingen.PopulateChunkEvent; import net.minecraftforge.event.terraingen.PopulateChunkEvent.Populate.EventType; import net.minecraftforge.event.terraingen.TerrainGen; +import java.util.Random; + /** * * @author CovertJaguar @@ -30,13 +35,6 @@ public class HiveDecorator { @SuppressWarnings("rawtypes") public static final EventType EVENT_TYPE = EnumHelper.addEnum(EventType.class, "FORESTRY_HIVES", new Class[0], new Object[0]); private static HiveDecorator instance; - private final WorldGenHiveForest forest = new WorldGenHiveForest(); - private final WorldGenHiveJungle jungle = new WorldGenHiveJungle(); - private final WorldGenHiveMeadows meadows = new WorldGenHiveMeadows(); - private final WorldGenHiveParched parched = new WorldGenHiveParched(); - private final WorldGenHiveEnd end = new WorldGenHiveEnd(); - private final WorldGenHiveSnow snow = new WorldGenHiveSnow(); - private final WorldGenHiveSwamp swamp = new WorldGenHiveSwamp(); public static HiveDecorator instance() { if (instance == null) { @@ -57,25 +55,60 @@ public class HiveDecorator { } private void decorateHives(World world, Random rand, int worldX, int worldZ) { - genHive(world, rand, worldX, worldZ, 3, forest); - genHive(world, rand, worldX, worldZ, 4, jungle); - genHive(world, rand, worldX, worldZ, 1, meadows); - genHive(world, rand, worldX, worldZ, 1, parched); - genHive(world, rand, worldX, worldZ, 4, end); - genHive(world, rand, worldX, worldZ, 2, snow); - genHive(world, rand, worldX, worldZ, 2, swamp); + for (IHive hive : HiveManager.getHives()) + genHive(world, rand, worldX, worldZ, hive); } - private void genHive(World world, Random rand, int worldX, int worldZ, int probability, WorldGenHive gen) { - if (probability < rand.nextInt(128)) + private void genHive(World world, Random rand, int worldX, int worldZ, IHive hive) { + if (hive.genChance() < rand.nextFloat() * 128.0f) + return; + + BiomeGenBase biome = world.getBiomeGenForCoords(worldX, worldZ); + EnumTemperature temperature = EnumTemperature.getFromValue(biome.temperature); + EnumHumidity humidity = EnumHumidity.getFromValue(biome.rainfall); + + if (!hive.isGoodClimate(biome, temperature, humidity)) return; for (int tries = 0; tries < 4; tries ++) { - int randPosX = worldX + rand.nextInt(16); - int randPosZ = worldZ + rand.nextInt(16); + int x = worldX + rand.nextInt(16); + int z = worldZ + rand.nextInt(16); - if (gen.generate(world, rand, randPosX, 0, randPosZ)) + if (tryGenHive(world, x, z, hive)) return; } } + + private boolean tryGenHive(World world, int x, int z, IHive hive) { + + int y = hive.getYForHive(world, x, z); + + if (y < 0) + return false; + + if (!hive.canReplace(world, x, y, z)) + return false; + + if (!hive.isGoodLocation(world, x, y, z)) + return false; + + return setHive(world, x, y, z, hive); + } + + protected boolean setHive(World world, int x, int y, int z, IHive hive) { + Block hiveBlock = hive.getHiveBlock(); + boolean placed = world.setBlock(x, y, z, hiveBlock, hive.getHiveMeta(), Defaults.FLAG_BLOCK_SYNCH); + if (!placed) + return false; + + Block placedBlock = world.getBlock(x, y, z); + if (!Block.isEqualTo(hiveBlock, placedBlock)) + return false; + + hiveBlock.onBlockAdded(world, x, y, z); + world.markBlockForUpdate(x, y, z); + + hive.postGen(world, x, y, z); + return true; + } } diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveJungle.java b/src/main/java/forestry/apiculture/worldgen/HiveEnd.java old mode 100755 new mode 100644 similarity index 61% rename from src/main/java/forestry/apiculture/worldgen/WorldGenHiveJungle.java rename to src/main/java/forestry/apiculture/worldgen/HiveEnd.java index 206592d8d..92af0a3e8 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveJungle.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveEnd.java @@ -4,30 +4,27 @@ * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt - * + * * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - +import forestry.api.apiculture.hives.HiveGround; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.init.Blocks; +import net.minecraft.world.biome.BiomeGenBase; -public class WorldGenHiveJungle extends WorldGenHive { +public class HiveEnd extends HiveGround { + + public HiveEnd(float genChance) { + super(ForestryBlock.beehives.block(), 5, genChance, Blocks.end_stone); + } @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.WARM - || EnumHumidity.getFromValue(biome.rainfall) != EnumHumidity.DAMP) - return false; - - return tryPlaceTreeHive(world, x, z, 4); + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return biome.biomeID == BiomeGenBase.sky.biomeID; } } diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveForest.java b/src/main/java/forestry/apiculture/worldgen/HiveForest.java old mode 100755 new mode 100644 similarity index 61% rename from src/main/java/forestry/apiculture/worldgen/WorldGenHiveForest.java rename to src/main/java/forestry/apiculture/worldgen/HiveForest.java index cb6c94395..53347742b --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveForest.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveForest.java @@ -4,31 +4,26 @@ * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt - * + * * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - +import forestry.api.apiculture.hives.HiveTree; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.world.biome.BiomeGenBase; -public class WorldGenHiveForest extends WorldGenHive { +public class HiveForest extends HiveTree { - @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.NORMAL || - EnumHumidity.getFromValue(biome.rainfall) != EnumHumidity.NORMAL) - return false; - - return tryPlaceTreeHive(world, x, z, 1); + public HiveForest(float genChance) { + super(ForestryBlock.beehives.block(), 1, genChance); } + @Override + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.NORMAL && humidity == EnumHumidity.NORMAL; + } } diff --git a/src/main/java/forestry/apiculture/worldgen/HiveJungle.java b/src/main/java/forestry/apiculture/worldgen/HiveJungle.java new file mode 100644 index 000000000..06bcc02f9 --- /dev/null +++ b/src/main/java/forestry/apiculture/worldgen/HiveJungle.java @@ -0,0 +1,29 @@ +/******************************************************************************* + * 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 + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.apiculture.worldgen; + +import forestry.api.apiculture.hives.HiveTree; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.world.biome.BiomeGenBase; + +public class HiveJungle extends HiveTree { + + public HiveJungle(float genChance) { + super(ForestryBlock.beehives.block(), 4, genChance); + } + + @Override + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.WARM && humidity == EnumHumidity.DAMP; + } +} diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveSwamp.java b/src/main/java/forestry/apiculture/worldgen/HiveMeadows.java old mode 100755 new mode 100644 similarity index 60% rename from src/main/java/forestry/apiculture/worldgen/WorldGenHiveSwamp.java rename to src/main/java/forestry/apiculture/worldgen/HiveMeadows.java index 3abaac104..4bb8da9e2 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveSwamp.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveMeadows.java @@ -4,31 +4,27 @@ * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt - * + * * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - +import forestry.api.apiculture.hives.HiveGround; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.init.Blocks; +import net.minecraft.world.biome.BiomeGenBase; -public class WorldGenHiveSwamp extends WorldGenHive { +public class HiveMeadows extends HiveGround { + + public HiveMeadows(float genChance) { + super(ForestryBlock.beehives.block(), 2, genChance, Blocks.dirt, Blocks.grass); + } @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.NORMAL - || EnumHumidity.getFromValue(biome.rainfall) != EnumHumidity.DAMP) - return false; - - return tryPlaceGroundHive(world, x, z, 7, Blocks.dirt, Blocks.grass); + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.NORMAL && humidity == EnumHumidity.NORMAL; } } diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveParched.java b/src/main/java/forestry/apiculture/worldgen/HiveParched.java old mode 100755 new mode 100644 similarity index 60% rename from src/main/java/forestry/apiculture/worldgen/WorldGenHiveParched.java rename to src/main/java/forestry/apiculture/worldgen/HiveParched.java index 78ae3add7..0f4ebaa4e --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveParched.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveParched.java @@ -4,31 +4,27 @@ * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt - * + * * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - +import forestry.api.apiculture.hives.HiveGround; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.init.Blocks; +import net.minecraft.world.biome.BiomeGenBase; -public class WorldGenHiveParched extends WorldGenHive { +public class HiveParched extends HiveGround { + + public HiveParched(float genChance) { + super(ForestryBlock.beehives.block(), 3, genChance, Blocks.sand, Blocks.sandstone); + } @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.HOT - || EnumHumidity.getFromValue(biome.rainfall) != EnumHumidity.ARID) - return false; - - return tryPlaceGroundHive(world, x, z, 3, Blocks.sand, Blocks.sandstone); + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.HOT && humidity == EnumHumidity.ARID; } } diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveSnow.java b/src/main/java/forestry/apiculture/worldgen/HiveSnow.java old mode 100755 new mode 100644 similarity index 59% rename from src/main/java/forestry/apiculture/worldgen/WorldGenHiveSnow.java rename to src/main/java/forestry/apiculture/worldgen/HiveSnow.java index dd73bfe46..45a04f8a2 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveSnow.java +++ b/src/main/java/forestry/apiculture/worldgen/HiveSnow.java @@ -4,36 +4,33 @@ * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0.txt - * + * * Various Contributors including, but not limited to: * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges ******************************************************************************/ package forestry.apiculture.worldgen; -import java.util.Random; - +import forestry.api.apiculture.hives.HiveGround; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; import net.minecraft.init.Blocks; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -import forestry.api.core.EnumTemperature; +public class HiveSnow extends HiveGround { -public class WorldGenHiveSnow extends WorldGenHive { - - @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.ICY - && EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.COLD) - return false; - - return tryPlaceGroundHive(world, x, z, 6, Blocks.dirt, Blocks.grass, Blocks.snow); + public HiveSnow(float genChance) { + super(ForestryBlock.beehives.block(), 6, genChance, Blocks.dirt, Blocks.grass, Blocks.snow); } @Override - protected void postGen(World world, int x, int y, int z, int meta) { - super.postGen(world, x, y, z, meta); + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.COLD || temperature == EnumTemperature.ICY; + } + + @Override + public void postGen(World world, int x, int y, int z) { if (world.isAirBlock(x, y + 1, z)) world.setBlock(x, y + 1, z, Blocks.snow_layer, 0, 0); } diff --git a/src/main/java/forestry/apiculture/worldgen/HiveSwamp.java b/src/main/java/forestry/apiculture/worldgen/HiveSwamp.java new file mode 100644 index 000000000..e968fd45e --- /dev/null +++ b/src/main/java/forestry/apiculture/worldgen/HiveSwamp.java @@ -0,0 +1,30 @@ +/******************************************************************************* + * 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 + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package forestry.apiculture.worldgen; + +import forestry.api.apiculture.hives.HiveGround; +import forestry.api.core.EnumHumidity; +import forestry.api.core.EnumTemperature; +import forestry.core.config.ForestryBlock; +import net.minecraft.init.Blocks; +import net.minecraft.world.biome.BiomeGenBase; + +public class HiveSwamp extends HiveGround { + + public HiveSwamp(float genChance) { + super(ForestryBlock.beehives.block(), 7, genChance, Blocks.dirt, Blocks.grass); + } + + @Override + public boolean isGoodClimate(BiomeGenBase biome, EnumTemperature temperature, EnumHumidity humidity) { + return temperature == EnumTemperature.NORMAL && humidity == EnumHumidity.DAMP; + } +} diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHive.java b/src/main/java/forestry/apiculture/worldgen/WorldGenHive.java index 915e34d6a..91b8ee9a1 100755 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHive.java +++ b/src/main/java/forestry/apiculture/worldgen/WorldGenHive.java @@ -12,8 +12,6 @@ package forestry.apiculture.worldgen; import java.util.Random; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; import net.minecraft.world.World; import net.minecraft.world.gen.feature.WorldGenerator; @@ -25,60 +23,6 @@ public abstract class WorldGenHive extends WorldGenerator { @Override public abstract boolean generate(World world, Random random, int x, int y, int z); - protected boolean tryPlaceTreeHive(World world, int x, int z, int meta) { - - int y = getTopLeafHeight(world, x, z); - if (y == -1) - return false; - - // get to the bottom of the leaves - do { y--; } while (world.getBlock(x, y, z).isLeaves(world, x, y, z)); - - if (isReplaceableByHive(world, x, y, z)) { - setHive(world, x, y, z, meta); - return true; - } - - return false; - } - - private int getTopLeafHeight(World world, int x, int z) { - int y = world.getHeightValue(x, z) - 1; - if (world.getBlock(x, y, z).isLeaves(world, x, y, z)) - return y; - return -1; - } - - protected boolean tryPlaceGroundHive(World world, int x, int z, int meta, Block... groundBlocks) { - - int y = world.getHeightValue(x, z); - - if (isReplaceableByHive(world, x, y, z) && isAcceptableGround(world, x, y - 1, z, groundBlocks)) { - setHive(world, x, y, z, meta); - return true; - } - return false; - } - - protected boolean isReplaceableByHive(World world, int x, int y, int z) { - Block block = world.getBlock(x, y, z); - Material material = block.getMaterial(); - return (material.isReplaceable() && !material.isLiquid()) || - material == Material.air || - material == Material.grass || - material == Material.plants; - } - - private boolean isAcceptableGround(World world, int x, int y, int z, Block... blocks) { - Block block = world.getBlock(x, y, z); - if (block == null) - return false; - for (Block testBlock : blocks) - if (block.getMaterial() == testBlock.getMaterial()) - return true; - return false; - } - protected void setHive(World world, int x, int y, int z, int meta) { boolean placed = world.setBlock(x, y, z, ForestryBlock.beehives.block(), meta, Defaults.FLAG_BLOCK_SYNCH); if (!placed) diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveEnd.java b/src/main/java/forestry/apiculture/worldgen/WorldGenHiveEnd.java deleted file mode 100755 index f12ede7df..000000000 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveEnd.java +++ /dev/null @@ -1,30 +0,0 @@ -/******************************************************************************* - * 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 - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.worldgen; - -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - -public class WorldGenHiveEnd extends WorldGenHive { - - @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (biome.biomeID != BiomeGenBase.sky.biomeID) - return false; - - return tryPlaceGroundHive(world, x, z, 5, Blocks.end_stone); - } -} diff --git a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveMeadows.java b/src/main/java/forestry/apiculture/worldgen/WorldGenHiveMeadows.java deleted file mode 100755 index 0acfc3f72..000000000 --- a/src/main/java/forestry/apiculture/worldgen/WorldGenHiveMeadows.java +++ /dev/null @@ -1,34 +0,0 @@ -/******************************************************************************* - * 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 - * http://www.gnu.org/licenses/lgpl-3.0.txt - * - * Various Contributors including, but not limited to: - * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges - ******************************************************************************/ -package forestry.apiculture.worldgen; - -import java.util.Random; - -import net.minecraft.init.Blocks; -import net.minecraft.world.World; -import net.minecraft.world.biome.BiomeGenBase; - -import forestry.api.core.EnumHumidity; -import forestry.api.core.EnumTemperature; - -public class WorldGenHiveMeadows extends WorldGenHive { - - @Override - public boolean generate(World world, Random random, int x, int y, int z) { - - BiomeGenBase biome = world.getWorldChunkManager().getBiomeGenAt(x, z); - if (EnumTemperature.getFromValue(biome.temperature) != EnumTemperature.NORMAL - || EnumHumidity.getFromValue(biome.rainfall) != EnumHumidity.NORMAL) - return false; - - return tryPlaceGroundHive(world, x, z, 2, Blocks.dirt, Blocks.grass); - } -} diff --git a/src/main/java/forestry/plugins/PluginApiculture.java b/src/main/java/forestry/plugins/PluginApiculture.java index 9aae83fcd..ec5c4c642 100644 --- a/src/main/java/forestry/plugins/PluginApiculture.java +++ b/src/main/java/forestry/plugins/PluginApiculture.java @@ -10,23 +10,6 @@ ******************************************************************************/ package forestry.plugins; -import java.util.ArrayList; -import java.util.logging.Level; -import java.util.logging.Logger; - -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.command.ICommand; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -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; - import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInterModComms.IMCMessage; @@ -37,13 +20,6 @@ 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 net.minecraftforge.client.event.TextureStitchEvent; -import net.minecraftforge.common.BiomeDictionary; -import net.minecraftforge.common.ChestGenHooks; -import net.minecraftforge.common.MinecraftForge; -import net.minecraftforge.oredict.OreDictionary; - import forestry.api.apiculture.BeeManager; import forestry.api.apiculture.EnumBeeType; import forestry.api.apiculture.FlowerManager; @@ -51,6 +27,8 @@ import forestry.api.apiculture.IBee; import forestry.api.apiculture.IBeeGenome; import forestry.api.apiculture.IBeeRoot; import forestry.api.apiculture.IHiveDrop; +import forestry.api.apiculture.hives.HiveManager; +import forestry.api.apiculture.hives.IHive; import forestry.api.core.EnumHumidity; import forestry.api.core.EnumTemperature; import forestry.api.core.Tabs; @@ -128,6 +106,13 @@ import forestry.apiculture.items.ItemWaxCast; import forestry.apiculture.proxy.ProxyApiculture; import forestry.apiculture.trigger.TriggerNoFrames; import forestry.apiculture.worldgen.HiveDecorator; +import forestry.apiculture.worldgen.HiveEnd; +import forestry.apiculture.worldgen.HiveForest; +import forestry.apiculture.worldgen.HiveJungle; +import forestry.apiculture.worldgen.HiveMeadows; +import forestry.apiculture.worldgen.HiveParched; +import forestry.apiculture.worldgen.HiveSnow; +import forestry.apiculture.worldgen.HiveSwamp; import forestry.core.GameMode; import forestry.core.config.Config; import forestry.core.config.Configuration; @@ -152,6 +137,27 @@ import forestry.core.render.EntitySnowFX; import forestry.core.triggers.Trigger; import forestry.core.utils.LiquidHelper; import forestry.core.utils.ShapedRecipeCustom; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.command.ICommand; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +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; +import net.minecraftforge.client.event.TextureStitchEvent; +import net.minecraftforge.common.BiomeDictionary; +import net.minecraftforge.common.ChestGenHooks; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.oredict.OreDictionary; + +import java.util.ArrayList; +import java.util.logging.Level; +import java.util.logging.Logger; @Plugin(pluginID = "Apiculture", name = "Apiculture", author = "SirSengir", url = Defaults.URL, unlocalizedDescription = "for.plugin.apiculture.description") public class PluginApiculture extends ForestryPlugin { @@ -238,6 +244,8 @@ public class PluginApiculture extends ForestryPlugin { ForestryBlock.beehives.block().setHarvestLevel("scoop", 0, 7); ForestryBlock.beehives.block().setHarvestLevel("scoop", 0, 8); + createHives(); + // Init bee interface AlleleManager.alleleRegistry.registerSpeciesRoot(PluginApiculture.beeInterface = new BeeHelper()); BeeManager.villageBees = new ArrayList[]{new ArrayList(), new ArrayList()}; @@ -345,7 +353,7 @@ public class PluginApiculture extends ForestryPlugin { public void postInit() { super.postInit(); registerDungeonLoot(); - + updateHiveDrops(); } @Override @@ -777,6 +785,7 @@ public class PluginApiculture extends ForestryPlugin { } @SuppressWarnings({"unchecked", "rawtypes"}) + @Deprecated // deprecated since 3.1. remove when BeeManager.hiveDrops is removed private void createHiveDropArrays() { BeeManager.hiveDrops = new ArrayList[8]; @@ -806,6 +815,47 @@ public class PluginApiculture extends ForestryPlugin { BeeManager.hiveDrops[7] = swarmDrops; } + private void createHives() { + HiveManager.addHive(new HiveForest(3)); + HiveManager.addHive(new HiveMeadows(1)); + HiveManager.addHive(new HiveParched(1)); + HiveManager.addHive(new HiveJungle(4)); + HiveManager.addHive(new HiveEnd(4)); + HiveManager.addHive(new HiveSnow(2)); + HiveManager.addHive(new HiveSwamp(2)); + } + + @Deprecated // deprecated since 3.1. remove when BeeManager.hiveDrops is removed + private void updateHiveDrops() { + IHive hive = HiveManager.getForestHive(); + for (IHiveDrop drop : forestDrops) + hive.addDrop(drop); + + hive = HiveManager.getMeadowsHive(); + for (IHiveDrop drop : meadowsDrops) + hive.addDrop(drop); + + hive = HiveManager.getDesertHive(); + for (IHiveDrop drop : desertDrops) + hive.addDrop(drop); + + hive = HiveManager.getJungleHive(); + for (IHiveDrop drop : jungleDrops) + hive.addDrop(drop); + + hive = HiveManager.getEndHive(); + for (IHiveDrop drop : endDrops) + hive.addDrop(drop); + + hive = HiveManager.getSnowHive(); + for (IHiveDrop drop : snowDrops) + hive.addDrop(drop); + + hive = HiveManager.getSwampHive(); + for (IHiveDrop drop : swampDrops) + hive.addDrop(drop); + } + private void createAlleles() { IClassification hymnoptera = AlleleManager.alleleRegistry.createAndRegisterClassification(EnumClassLevel.ORDER, "hymnoptera", "Hymnoptera");