Added saplings for trees that have been implemented
This commit is contained in:
parent
5bc01e7b8e
commit
d4f31617f6
1 changed files with 52 additions and 23 deletions
|
@ -10,11 +10,19 @@ package biomesoplenty.common.block;
|
|||
|
||||
import java.util.Random;
|
||||
|
||||
import biomesoplenty.api.block.BOPBlocks;
|
||||
import biomesoplenty.api.block.BlockQueries;
|
||||
import biomesoplenty.common.enums.BOPTrees;
|
||||
import biomesoplenty.common.enums.BOPWoods;
|
||||
import biomesoplenty.common.item.ItemBOPSapling;
|
||||
import biomesoplenty.common.util.block.VariantPagingHelper;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorBayouTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorBulbTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorPineTree;
|
||||
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockPlanks;
|
||||
import net.minecraft.block.IGrowable;
|
||||
import net.minecraft.block.properties.IProperty;
|
||||
import net.minecraft.block.properties.PropertyInteger;
|
||||
|
@ -24,7 +32,6 @@ import net.minecraft.init.Blocks;
|
|||
import net.minecraft.item.ItemBlock;
|
||||
import net.minecraft.util.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.gen.feature.WorldGenAbstractTree;
|
||||
import net.minecraft.world.gen.feature.WorldGenTrees;
|
||||
import net.minecraft.world.gen.feature.WorldGenerator;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
|
@ -142,45 +149,67 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
|
|||
|
||||
|
||||
// TODO: specify generator for each sapling
|
||||
protected WorldGenAbstractTree getSmallTreeGenerator(BOPTrees treeType)
|
||||
protected WorldGenerator getSmallTreeGenerator(BOPTrees treeType)
|
||||
{
|
||||
switch (treeType)
|
||||
{
|
||||
case YELLOW_AUTUMN:
|
||||
return new GeneratorBasicTree.Builder().log(BlockPlanks.EnumType.BIRCH).leaves(BOPTrees.YELLOW_AUTUMN).minHeight(5).maxHeight(8).create();
|
||||
case ORANGE_AUTUMN:
|
||||
return new GeneratorBasicTree.Builder().log(BlockPlanks.EnumType.BIRCH).leaves(BOPTrees.ORANGE_AUTUMN).minHeight(5).maxHeight(8).create();
|
||||
case BAMBOO:
|
||||
case MAGIC:
|
||||
case DARK:
|
||||
case DEAD:
|
||||
case FIR:
|
||||
case ETHEREAL:
|
||||
case ORIGIN:
|
||||
case PINK_CHERRY:
|
||||
case WHITE_CHERRY:
|
||||
case MAPLE:
|
||||
case HELLBARK:
|
||||
case FLOWERING:
|
||||
case JACARANDA:
|
||||
case SACRED_OAK:
|
||||
case MANGROVE:
|
||||
case PALM:
|
||||
case REDWOOD:
|
||||
case WILLOW:
|
||||
case PINE:
|
||||
case MAHOGANY:
|
||||
default:
|
||||
return new GeneratorBulbTree.Builder().minHeight(6).maxHeight(18).log(BOPBlocks.bamboo.getDefaultState()).leaves(BOPTrees.BAMBOO).create();
|
||||
case MAGIC: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case DARK: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case DEAD:
|
||||
return new GeneratorBasicTree.Builder().log(BlockPlanks.EnumType.OAK).leaves(BOPTrees.DEAD).minHeight(5).maxHeight(8).create();
|
||||
case FIR:
|
||||
return new GeneratorTaigaTree.Builder().log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(5).maxHeight(28).create();
|
||||
case ETHEREAL: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case ORIGIN:
|
||||
return new GeneratorBasicTree.Builder().amountPerChunk(4).minHeight(5).maxHeight(8).leaves(BOPTrees.ORIGIN).create();
|
||||
case PINK_CHERRY:
|
||||
new GeneratorBasicTree.Builder().log(BOPWoods.CHERRY).leaves(BOPTrees.PINK_CHERRY).create();
|
||||
case WHITE_CHERRY:
|
||||
new GeneratorBasicTree.Builder().log(BOPWoods.CHERRY).leaves(BOPTrees.WHITE_CHERRY).create();
|
||||
case MAPLE: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case HELLBARK: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case FLOWERING: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case JACARANDA:
|
||||
return new GeneratorBasicTree.Builder().minHeight(4).maxHeight(7).log(BOPWoods.JACARANDA).leaves(BOPTrees.JACARANDA).create();
|
||||
case SACRED_OAK: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case MANGROVE: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case PALM: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case REDWOOD: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
case WILLOW:
|
||||
return new GeneratorBayouTree.Builder().log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(6).maxHeight(12).minLeavesRadius(1).leavesGradient(2).create();
|
||||
case PINE:
|
||||
return new GeneratorPineTree.Builder().minHeight(6).maxHeight(20).create();
|
||||
case MAHOGANY: //Not implemented
|
||||
return new WorldGenTrees(true);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: specify generator for each sapling
|
||||
protected WorldGenAbstractTree getBigTreeGenerator(BOPTrees treeType)
|
||||
protected WorldGenerator getBigTreeGenerator(BOPTrees treeType)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
// TODO: specify generator for each sapling
|
||||
protected WorldGenAbstractTree getMegaTreeGenerator(BOPTrees treeType)
|
||||
protected WorldGenerator getMegaTreeGenerator(BOPTrees treeType)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
@ -221,9 +250,9 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
|
|||
if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(worldIn, rand, pos)) {return false;}
|
||||
|
||||
BOPTrees treeType = ((BOPTrees) state.getValue(this.variantProperty));
|
||||
WorldGenAbstractTree smallTreeGenerator = this.getSmallTreeGenerator(treeType);
|
||||
WorldGenAbstractTree bigTreeGenerator = this.getBigTreeGenerator(treeType);
|
||||
WorldGenAbstractTree megaTreeGenerator = this.getMegaTreeGenerator(treeType);
|
||||
WorldGenerator smallTreeGenerator = this.getSmallTreeGenerator(treeType);
|
||||
WorldGenerator bigTreeGenerator = this.getBigTreeGenerator(treeType);
|
||||
WorldGenerator megaTreeGenerator = this.getMegaTreeGenerator(treeType);
|
||||
|
||||
if (megaTreeGenerator != null)
|
||||
{
|
||||
|
@ -257,18 +286,18 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
|
|||
return false;
|
||||
}
|
||||
|
||||
public boolean generateSmallOrBigTree(World worldIn, BlockPos pos, IBlockState state, Random rand, WorldGenAbstractTree generator)
|
||||
public boolean generateSmallOrBigTree(World worldIn, BlockPos pos, IBlockState state, Random rand, WorldGenerator generator)
|
||||
{
|
||||
// remove the sapling
|
||||
worldIn.setBlockState(pos, Blocks.air.getDefaultState(), 4);
|
||||
// try to grow the tree
|
||||
boolean success = ((WorldGenerator)generator).generate(worldIn, rand, pos);
|
||||
boolean success = generator.generate(worldIn, rand, pos);
|
||||
// put the sapling back if we failed
|
||||
if (!success) {worldIn.setBlockState(pos, state, 4);}
|
||||
return success;
|
||||
}
|
||||
|
||||
public boolean generateMegaTree(World worldIn, BlockPos pos, IBlockState state, Random rand, WorldGenAbstractTree generator)
|
||||
public boolean generateMegaTree(World worldIn, BlockPos pos, IBlockState state, Random rand, WorldGenerator generator)
|
||||
{
|
||||
// remove the saplings
|
||||
IBlockState air = Blocks.air.getDefaultState();
|
||||
|
@ -277,7 +306,7 @@ public class BlockBOPSapling extends BlockBOPDecoration implements IGrowable {
|
|||
worldIn.setBlockState(pos.add(0, 0, 1), air, 4);
|
||||
worldIn.setBlockState(pos.add(1, 0, 1), air, 4);
|
||||
// try to grow the tree
|
||||
boolean success = ((WorldGenerator)generator).generate(worldIn, rand, pos);
|
||||
boolean success = generator.generate(worldIn, rand, pos);
|
||||
if (!success)
|
||||
{
|
||||
// put the saplings back if we failed
|
||||
|
|
Loading…
Reference in a new issue