Add BOP saplings

This commit is contained in:
Cheeserolls 2015-04-03 03:33:38 +01:00
parent 353582ad3b
commit a3c8dddaf2
91 changed files with 977 additions and 24 deletions

View file

@ -68,6 +68,7 @@ public class BOPBlocks
public static Block foliage; public static Block foliage;
// leaves // leaves
// TODO: fruit tree leaves?
public static Block yellow_autumn_leaves; public static Block yellow_autumn_leaves;
public static Block orange_autumn_leaves; public static Block orange_autumn_leaves;
public static Block willow_leaves; public static Block willow_leaves;
@ -91,5 +92,31 @@ public class BOPBlocks
public static Block dark_leaves; public static Block dark_leaves;
public static Block bamboo_leaves; public static Block bamboo_leaves;
// saplings
// TODO: fruit try saplings?
public static Block yellow_autumn_sapling;
public static Block orange_autumn_sapling;
public static Block bamboo_sapling;
public static Block magic_sapling;
public static Block dark_sapling;
public static Block dead_sapling;
public static Block fir_sapling;
public static Block ethereal_sapling;
public static Block origin_sapling;
public static Block pink_cherry_sapling;
public static Block white_cherry_sapling;
public static Block maple_sapling;
public static Block hellbark_sapling;
public static Block flowering_sapling;
public static Block jacaranda_sapling;
public static Block sacred_oak_sapling;
public static Block mangrove_sapling;
public static Block palm_sapling;
public static Block redwood_sapling;
public static Block willow_sapling;
public static Block pine_sapling;
public static Block mahogany_sapling;
} }

View file

@ -0,0 +1,213 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.block;
import java.util.Random;
import biomesoplenty.api.block.BOPBlocks;
import net.minecraft.block.Block;
import net.minecraft.block.IGrowable;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.properties.PropertyInteger;
import net.minecraft.block.state.BlockState;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenAbstractTree;
import net.minecraft.world.gen.feature.WorldGenerator;
public class BlockBOPSapling extends BlockDecoration implements IGrowable {
// add properties
public static final PropertyInteger STAGE = PropertyInteger.create("stage", 0, 1);
@Override
protected BlockState createBlockState() {return new BlockState(this, new IProperty[] { STAGE });}
protected WorldGenAbstractTree smallTreeGenerator;
protected WorldGenAbstractTree bigTreeGenerator;
protected WorldGenAbstractTree megaTreeGenerator;
public BlockBOPSapling(WorldGenAbstractTree smallTreeGenerator)
{
this(smallTreeGenerator, null, null);
}
public BlockBOPSapling(WorldGenAbstractTree smallTreeGenerator, WorldGenAbstractTree bigTreeGenerator)
{
this(smallTreeGenerator, bigTreeGenerator, null);
}
public BlockBOPSapling(WorldGenAbstractTree smallTreeGenerator, WorldGenAbstractTree bigTreeGenerator, WorldGenAbstractTree megaTreeGenerator)
{
super();
this.smallTreeGenerator = smallTreeGenerator;
this.bigTreeGenerator = bigTreeGenerator;
this.megaTreeGenerator = megaTreeGenerator;
this.setStepSound(Block.soundTypeGrass);
this.setBlockBoundsByRadiusAndHeight(0.4F, 0.8F);
this.setDefaultState(this.blockState.getBaseState().withProperty(STAGE, Integer.valueOf(0)));
}
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(STAGE, Integer.valueOf(meta));
}
public int getMetaFromState(IBlockState state)
{
return ((Integer)state.getValue(STAGE)).intValue();
}
// which types of block allow trees
// TODO: override for loftwood
@Override
public boolean canBlockStay(World world, BlockPos pos, IBlockState state)
{
IBlockState groundState = world.getBlockState(pos.down());
Block groundBlock = groundState.getBlock();
boolean onFertile = (groundBlock == Blocks.dirt || groundBlock == BOPBlocks.dirt || groundBlock == Blocks.mycelium || groundBlock == Blocks.grass);
if (groundBlock instanceof BlockBOPGrass)
{
switch ((BlockBOPGrass.BOPGrassType) groundState.getValue(BlockBOPGrass.VARIANT))
{
case SPECTRAL_MOSS: case SMOLDERING:
break;
case LOAMY: case SANDY: case SILTY: case ORIGIN: default:
onFertile = true;
break;
}
}
return onFertile;
}
@Override
public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
{
if (!worldIn.isRemote)
{
super.updateTick(worldIn, pos, state, rand);
if (worldIn.getLightFromNeighbors(pos.up()) >= 9 && rand.nextInt(7) == 0)
{
this.grow(worldIn, rand, pos, state);
}
}
}
@Override
public int damageDropped(IBlockState state)
{
return 0;
}
@Override
public boolean canGrow(World worldIn, BlockPos pos, IBlockState state, boolean isClient)
{
return true;
}
@Override
public boolean canUseBonemeal(World worldIn, Random rand, BlockPos pos, IBlockState state)
{
return (double)worldIn.rand.nextFloat() < 0.45D;
}
@Override
public void grow(World worldIn, Random rand, BlockPos pos, IBlockState state)
{
if (((Integer)state.getValue(STAGE)).intValue() == 0)
{
worldIn.setBlockState(pos, state.cycleProperty(STAGE), 4);
}
else
{
this.generateTree(worldIn, pos, state, rand);
}
}
public boolean thisSaplingHere(World world, BlockPos pos)
{
return world.getBlockState(pos).getBlock() == this;
}
// try to generate a tree at the specified location, return true on success and false on failure
public boolean generateTree(World worldIn, BlockPos pos, IBlockState state, Random rand)
{
if (!net.minecraftforge.event.terraingen.TerrainGen.saplingGrowTree(worldIn, rand, pos)) {return false;}
if (this.megaTreeGenerator != null)
{
// if we have 4 saplings in a square, then try to grow a mega tree
int i;
int j;
for (i = 0; i >= -1; --i)
{
for (j = 0; j >= -1; --j)
{
if (this.thisSaplingHere(worldIn, pos.add(i, 0, j)) && this.thisSaplingHere(worldIn, pos.add(i + 1, 0, j)) && this.thisSaplingHere(worldIn, pos.add(i, 0, j + 1)) && this.thisSaplingHere(worldIn, pos.add(i + 1, 0, j + 1)))
{
if (this.generateMegaTree(worldIn, pos.add(i, 0, j), state, rand, this.megaTreeGenerator)) {return true;}
}
}
}
}
if (this.bigTreeGenerator != null)
{
// with a one in 10 chance, try to grow a big tree
if (rand.nextInt(10) == 0)
{
if (this.generateSmallOrBigTree(worldIn, pos, state, rand, this.bigTreeGenerator)) {return true;}
}
}
// otherwise, try to grow a small tree
if (this.smallTreeGenerator != null)
{
if (this.generateSmallOrBigTree(worldIn, pos, state, rand, this.smallTreeGenerator)) {return true;}
}
return false;
}
public boolean generateSmallOrBigTree(World worldIn, BlockPos pos, IBlockState state, Random rand, WorldGenAbstractTree generator)
{
// remove the sapling
worldIn.setBlockState(pos, Blocks.air.getDefaultState(), 4);
// try to grow the tree
boolean success = ((WorldGenerator)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)
{
// remove the saplings
IBlockState air = Blocks.air.getDefaultState();
worldIn.setBlockState(pos, air, 4);
worldIn.setBlockState(pos.add(1, 0, 0), air, 4);
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);
if (!success)
{
// put the saplings back if we failed
worldIn.setBlockState(pos, air, 4);
worldIn.setBlockState(pos.add(1, 0, 0), state, 4);
worldIn.setBlockState(pos.add(0, 0, 1), state, 4);
worldIn.setBlockState(pos.add(1, 0, 1), state, 4);
}
return success;
}
}

View file

@ -16,12 +16,12 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.creativetab.CreativeTabs; import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemBlock;
import net.minecraft.item.ItemDoor; import net.minecraft.item.ItemDoor;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.world.gen.feature.WorldGenTrees;
import net.minecraftforge.fml.common.registry.GameRegistry; import net.minecraftforge.fml.common.registry.GameRegistry;
import biomesoplenty.api.block.BOPWoodType; import biomesoplenty.api.block.BOPWoodType;
import biomesoplenty.api.block.IBOPBlock; import biomesoplenty.api.block.IBOPBlock;
@ -38,6 +38,7 @@ import biomesoplenty.common.block.BlockBOPLeaves;
import biomesoplenty.common.block.BlockBOPLilypad; import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPLog; import biomesoplenty.common.block.BlockBOPLog;
import biomesoplenty.common.block.BlockBOPMushroom; import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPSapling;
import biomesoplenty.common.block.BlockBOPStairs; import biomesoplenty.common.block.BlockBOPStairs;
import biomesoplenty.common.block.BlockBOPStone; import biomesoplenty.common.block.BlockBOPStone;
import biomesoplenty.common.block.BlockBOPVine; import biomesoplenty.common.block.BlockBOPVine;
@ -176,32 +177,62 @@ public class ModBlocks
foliage = registerBlock( new BlockFoliage(), "foliage" ); foliage = registerBlock( new BlockFoliage(), "foliage" );
// saplings
// TODO: implement the tree generators (at the moment all saplings generate vanilla small oak trees)
// TODO: check bamboo implementation
yellow_autumn_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "yellow_autumn_sapling" );
orange_autumn_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "orange_autumn_sapling" );
bamboo_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "bamboo_sapling" );
magic_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "magic_sapling" );
dark_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "dark_sapling" );
dead_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "dead_sapling" );
fir_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "fir_sapling" );
ethereal_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "ethereal_sapling" );
origin_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "origin_sapling" );
pink_cherry_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "pink_cherry_sapling" );
white_cherry_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "white_cherry_sapling" );
maple_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "maple_sapling" );
hellbark_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "hellbark_sapling" );
flowering_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "flowering_sapling" );
jacaranda_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "jacaranda_sapling" );
sacred_oak_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "sacred_oak_sapling" );
mangrove_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "mangrove_sapling" );
palm_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "palm_sapling" );
redwood_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "redwood_sapling" );
willow_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "willow_sapling" );
pine_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "pine_sapling" );
mahogany_sapling = registerBlock( new BlockBOPSapling( new WorldGenTrees(true) ), "mahogany_sapling" );
// leaves // leaves
// TODO: bamboo leaves to grow automatically? // TODO: bamboo leaves to grow automatically?
// TODO: add correct saplings
// TODO: add correct fruit (or change this implementation completely) // TODO: add correct fruit (or change this implementation completely)
yellow_autumn_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "yellow_autumn_leaves" ); yellow_autumn_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(yellow_autumn_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "yellow_autumn_leaves" );
orange_autumn_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "orange_autumn_leaves" ); orange_autumn_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(orange_autumn_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "orange_autumn_leaves" );
willow_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "willow_leaves" ); willow_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(willow_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "willow_leaves" );
white_cherry_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "white_cherry_leaves" ); white_cherry_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(white_cherry_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "white_cherry_leaves" );
pink_cherry_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "pink_cherry_leaves" ); pink_cherry_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(pink_cherry_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "pink_cherry_leaves" );
sacred_oak_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "sacred_oak_leaves" ); sacred_oak_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(sacred_oak_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "sacred_oak_leaves" );
redwood_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "redwood_leaves" ); redwood_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(redwood_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "redwood_leaves" );
pine_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "pine_leaves" ); pine_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(pine_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "pine_leaves" );
palm_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "palm_leaves" ); palm_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(palm_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "palm_leaves" );
origin_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "origin_leaves" ); origin_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(origin_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "origin_leaves" );
maple_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "maple_leaves" ); maple_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(maple_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "maple_leaves" );
mangrove_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "mangrove_leaves" ); mangrove_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(mangrove_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "mangrove_leaves" );
mahogany_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "mahogany_leaves" ); mahogany_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(mahogany_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "mahogany_leaves" );
magic_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "magic_leaves" ); magic_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(magic_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "magic_leaves" );
jacaranda_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "jacaranda_leaves" ); jacaranda_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(jacaranda_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "jacaranda_leaves" );
hellbark_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, false ), "hellbark_leaves" ); hellbark_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(hellbark_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, false ), "hellbark_leaves" );
flowering_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "flowering_leaves" ); flowering_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(flowering_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "flowering_leaves" );
fir_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "fir_leaves" ); fir_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(fir_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "fir_leaves" );
ethereal_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "ethereal_leaves" ); ethereal_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(ethereal_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "ethereal_leaves" );
dead_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "dead_leaves" ); dead_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(dead_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "dead_leaves" );
dark_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "dark_leaves" ); dark_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(dark_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "dark_leaves" );
bamboo_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(Blocks.sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "bamboo_leaves" ); bamboo_leaves = registerBlock( new BlockBOPLeaves( new ItemStack(bamboo_sapling, 1, 0), new ItemStack(Items.apple, 1, 0), 20, true ), "bamboo_leaves" );
} }

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:bamboo_sapling" },
"stage=1": { "model": "biomesoplenty:bamboo_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:dark_sapling" },
"stage=1": { "model": "biomesoplenty:dark_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:dead_sapling" },
"stage=1": { "model": "biomesoplenty:dead_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:ethereal_sapling" },
"stage=1": { "model": "biomesoplenty:ethereal_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:fir_sapling" },
"stage=1": { "model": "biomesoplenty:fir_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:flowering_sapling" },
"stage=1": { "model": "biomesoplenty:flowering_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:hellbark_sapling" },
"stage=1": { "model": "biomesoplenty:hellbark_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:jacaranda_sapling" },
"stage=1": { "model": "biomesoplenty:jacaranda_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:magic_sapling" },
"stage=1": { "model": "biomesoplenty:magic_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:mahogany_sapling" },
"stage=1": { "model": "biomesoplenty:mahogany_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:mangrove_sapling" },
"stage=1": { "model": "biomesoplenty:mangrove_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:maple_sapling" },
"stage=1": { "model": "biomesoplenty:maple_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:orange_autumn_sapling" },
"stage=1": { "model": "biomesoplenty:orange_autumn_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:origin_sapling" },
"stage=1": { "model": "biomesoplenty:origin_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:palm_sapling" },
"stage=1": { "model": "biomesoplenty:palm_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:pine_sapling" },
"stage=1": { "model": "biomesoplenty:pine_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:pink_cherry_sapling" },
"stage=1": { "model": "biomesoplenty:pink_cherry_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:redwood_sapling" },
"stage=1": { "model": "biomesoplenty:redwood_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:sacred_oak_sapling" },
"stage=1": { "model": "biomesoplenty:sacred_oak_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:white_cherry_sapling" },
"stage=1": { "model": "biomesoplenty:white_cherry_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:willow_sapling" },
"stage=1": { "model": "biomesoplenty:willow_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"variants": {
"stage=0": { "model": "biomesoplenty:yellow_autumn_sapling" },
"stage=1": { "model": "biomesoplenty:yellow_autumn_sapling" }
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_bamboo"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_dark"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_dead"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_ethereal"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_fir"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_flowering"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_hellbark"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_jacaranda"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_magic"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_mahogany"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_mangrove"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_maple"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_orange_autumn"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_origin"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_palm"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_pine"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_pink_cherry"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_redwood"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_sacred_oak"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_white_cherry"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_willow"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cross",
"textures": {
"cross": "biomesoplenty:blocks/sapling_yellow_autumn"
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_bamboo"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_dark"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_dead"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_ethereal"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_fir"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_flowering"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_hellbark"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_jacaranda"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_magic"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_mahogany"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_mangrove"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_maple"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_orange_autumn"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_origin"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_palm"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_pine"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_pink_cherry"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_redwood"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_sacred_oak"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_white_cherry"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_willow"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

View file

@ -0,0 +1,19 @@
{
"parent": "builtin/generated",
"textures": {
"layer0": "biomesoplenty:blocks/sapling_yellow_autumn"
},
"display": {
"thirdperson": {
"rotation": [ -90, 0, 0 ],
"translation": [ 0, 1, -3 ],
"scale": [ 0.55, 0.55, 0.55 ]
},
"firstperson": {
"rotation": [ 0, -135, 25 ],
"translation": [ 0, 4, 2 ],
"scale": [ 1.7, 1.7, 1.7 ]
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 603 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 600 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 413 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 316 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 359 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 365 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 893 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 532 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 382 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 323 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 478 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 397 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 697 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 388 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 451 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 364 B