
#######################################################################
# +-----------------------------------------------------------------+ #
# |                            BO3 object                           | #
# +-----------------------------------------------------------------+ #
#######################################################################

# This is the config file of a custom object.
# If you add this object correctly to your BiomeConfigs, it will spawn in the world.

# This is the creator of this BO3 object
Author: LordSmellyPants

# A short description of this BO3 object
Description: No description given

# The BO3 version, don't change this! It can be used by external applications to do a version check.
Version: 3

# The settings mode, WriteAll, WriteWithoutComments or WriteDisable. See WorldConfig.
SettingsMode: WriteWithoutComments


#######################################################################
# +-----------------------------------------------------------------+ #
# |                          Main settings                          | #
# +-----------------------------------------------------------------+ #
#######################################################################

# This needs to be set to true to spawn the object in the Tree and Sapling resources.
Tree: true

# The frequency of the BO3 from 1 to 200. Tries this many times to spawn this BO3 when using the CustomObject(...) resource.
# Ignored by Tree(..), Sapling(..) and CustomStructure(..)
Frequency: 1

# The rarity of the BO3 from 0 to 100. Each spawn attempt has rarity% chance to succeed when using the CustomObject(...) resource.
# Ignored by Tree(..), Sapling(..) and CustomStructure(..)
Rarity: 100.0

# If you set this to true, the BO3 will be placed with a random rotation.
RotateRandomly: true

# The spawn height of the BO3 - atMinY, randomY, highestBlock or highestSolidBlock.
SpawnHeight: highestSolidBlock

# The offset from the spawn height to spawn this BO3
# Ex. SpawnHeight = highestSolidBlock, SpawnHeightOffset = 3; This object will spawn 3 blocks above the highest solid block
SpawnHeightOffset: 0

# A random amount to offset the spawn location from the spawn offset height
# Ex. SpawnHeightOffset = 3, SpawnHeightVariance = 3; This object will spawn 3 to 6 blocks above the original spot it would have spawned
SpawnHeightVariance: 0

##############################
# Height Limits for the BO3. #
##############################

# When in randomY mode used as the minimum Y or in atMinY mode as the actual Y to spawn this BO3 at.
MinHeight: 63

# When in randomY mode used as the maximum Y to spawn this BO3 at.
MaxHeight: 70

######################
# Extrusion settings #
######################

# The style of extrusion you wish to use - BottomDown, TopUp, None (Default)
ExtrudeMode: None

# The blocks to extrude your BO3 through
ExtrudeThroughBlocks: AIR

# Objects can have other objects attacthed to it: branches. Branches can also
# have branches attached to it, which can also have branches, etc. This is the
# maximum branch depth for this objects.
MaxBranchDepth: 10

# When spawned with the UseWorld keyword, this BO3 should NOT spawn in the following biomes.
# If you write the BO3 name directly in the BiomeConfigs, this will be ignored.
ExcludedBiomes: All


#######################################################################
# +-----------------------------------------------------------------+ #
# |                      Source block settings                      | #
# +-----------------------------------------------------------------+ #
#######################################################################

# The B(s) the BO3 should spawn in.
SourceBlocks: STONE:1,STONE:3,STONE:5,DIRT:1,DIRT,SAND,GRASS,DIRT:2,STATIONARY_WATER,HARD_CLAY,STAINED_CLAY,CLAY,SANDSTONE,SAND:1,AIR,STONE,GRAVEL,LONG_GRASS,LONG_GRASS:1,LONG_GRASS:2,DEAD_BUSH,YELLOW_FLOWER,RED_ROSE,BROWN_MUSHROOM,RED_MUSHROOM,biomesoplenty:plant_0:1,biomesoplenty:plant_0:2,biomesoplenty:plant_0:3,biomesoplenty:plant_0:4,biomesoplenty:plant_0:5,biomesoplenty:plant_0:6,biomesoplenty:plant_0:7,biomesoplenty:plant_0:8,biomesoplenty:plant_0:9,biomesoplenty:plant_0:10,biomesoplenty:plant_0:11,biomesoplenty:plant_0:12,biomesoplenty:plant_0:13,biomesoplenty:plant_0:14,biomesoplenty:flower_0:1,biomesoplenty:flower_0:2,biomesoplenty:flower_0:3,biomesoplenty:flower_0:4,biomesoplenty:flower_0:5,biomesoplenty:flower_0:6,biomesoplenty:flower_0:7,biomesoplenty:flower_0:8,biomesoplenty:flower_0:9,biomesoplenty:flower_0:10,biomesoplenty:flower_0:11,biomesoplenty:flower_0:12,biomesoplenty:flower_0:13,biomesoplenty:flower_0:14,biomesoplenty:plant_1:0,biomesoplenty:grass:0,biomesoplenty:grass:1,biomesoplenty:grass:2,biomesoplenty:grass:3,biomesoplenty:grass:4,biomesoplenty:grass:5,biomesoplenty:grass:6,biomesoplenty:grass:7,biomesoplenty:dirt:0,biomesoplenty:dirt:1,biomesoplenty:dirt:2,biomesoplenty:dirt:3,biomesoplenty:dirt:4,biomesoplenty:dirt:5,biomesoplenty:dirt:6,biomesoplenty:dirt:7,biomesoplenty:dirt:8,biomesoplenty:dirt:9,biomesoplenty:dirt:10,biomesoplenty:dried_sand:0,biomesoplenty:hard_ice:0,biomesoplenty:white_sand:0,biomesoplenty:white_sandstone:0,biomesoplenty:mud:0,biomesoplenty:ash_block:0
# The maximum percentage of the BO3 that can be outside the SourceBlock.
# The BO3 won't be placed on a location with more blocks outside the SourceBlock than this percentage.
MaxPercentageOutsideSourceBlock: 100

# What to do when a block is about to be placed outside the SourceBlock? (dontPlace, placeAnyway)
OutsideSourceBlock: placeAnyway


#######################################################################
# +-----------------------------------------------------------------+ #
# |                              Blocks                             | #
# +-----------------------------------------------------------------+ #
#######################################################################

# All the blocks used in the BO3 are listed here. Possible blocks:
# B(x,y,z,id[.data][,nbtfile.nbt)
# RB(x,y,z,id[:data][,nbtfile.nbt],chance[,id[:data][,nbtfile.nbt],chance[,...]])
#  So RB(0,0,0,CHEST,chest.nbt,50,CHEST,anotherchest.nbt,100) will spawn a chest at
#  the BO3 origin, and give it a 50% chance to have the contents of chest.nbt, or, if that
#  fails, a 100% percent chance to have the contents of anotherchest.nbt.
# MinecraftObject(x,y,z,name)
#  Spawns an object in the Mojang NBT structure format. For example, 
#  MinecraftObject(0,0,0,minecraft:igloo/igloo_bottom)
#  spawns the bottom part of an igloo.
B(-5,7,-1,ICE)
B(-5,8,-1,PACKED_ICE)
B(-5,9,-1,PACKED_ICE)
B(-5,10,-1,LOG:13)
B(-4,8,-6,PACKED_ICE)
B(-4,9,-6,PACKED_ICE)
B(-4,10,-6,LOG:13)
B(-4,10,-5,LOG:13)
B(-4,11,-2,LOG:13)
B(-4,11,1,PACKED_ICE)
B(-4,12,1,PACKED_ICE)
B(-4,13,1,LOG:13)
B(-3,10,4,ICE)
B(-3,11,-4,LOG:13)
B(-3,11,-2,LOG:13)
B(-3,11,4,PACKED_ICE)
B(-3,12,4,PACKED_ICE)
B(-3,13,-3,ICE)
B(-3,13,2,LOG:13)
B(-3,13,4,LOG:13)
B(-3,14,-3,PACKED_ICE)
B(-3,14,3,LOG:13)
B(-3,15,-3,PACKED_ICE)
B(-3,16,-3,LOG:13)
B(-2,-5,-3,LOG:13)
B(-2,-5,-1,LOG:13)
B(-2,-5,1,LOG:13)
B(-2,-5,2,LOG:13)
B(-2,-4,-1,LOG:13)
B(-2,-4,1,LOG:13)
B(-2,-3,-1,LOG:5)
B(-2,3,-5,ICE)
B(-2,4,-5,PACKED_ICE)
B(-2,5,-5,PACKED_ICE)
B(-2,6,-5,LOG:13)
B(-2,6,-4,LOG:13)
B(-2,9,-3,ICE)
B(-2,10,-3,PACKED_ICE)
B(-2,11,-3,LOG:13)
B(-2,14,2,LOG:13)
B(-2,17,-3,LOG:13)
B(-2,17,0,ICE)
B(-2,18,0,PACKED_ICE)
B(-2,19,0,PACKED_ICE)
B(-2,20,0,LOG:13)
B(-2,21,-1,LOG:13)
B(-1,-5,-3,LOG:13)
B(-1,-5,-1,LOG:13)
B(-1,-5,1,LOG:13)
B(-1,-4,-3,LOG:13)
B(-1,-4,-2,LOG:13)
B(-1,-4,-1,LOG:13)
B(-1,-4,0,LOG:13)
B(-1,-4,1,LOG:13)
B(-1,-3,-2,LOG:13)
B(-1,-3,-1,LOG:13)
B(-1,-3,0,LOG:13)
B(-1,-3,1,LOG:1)
B(-1,-2,-2,LOG:1)
B(-1,-2,-1,LOG:13)
B(-1,-2,0,LOG:13)
B(-1,-1,-1,LOG:13)
B(-1,-1,0,LOG:13)
B(-1,0,-1,LOG:13)
B(-1,0,0,LOG:13)
B(-1,1,-1,LOG:13)
B(-1,1,0,LOG:13)
B(-1,2,-1,LOG:13)
B(-1,3,-1,LOG:13)
B(-1,3,7,ICE)
B(-1,4,-1,LOG:13)
B(-1,4,7,PACKED_ICE)
B(-1,5,7,PACKED_ICE)
B(-1,6,6,LOG:13)
B(-1,6,7,LOG:13)
B(-1,7,-3,LOG:13)
B(-1,12,-2,LOG:13)
B(-1,15,1,LOG:13)
B(-1,16,-2,PACKED_ICE)
B(-1,17,-2,LOG:13)
B(-1,18,-2,LOG:13)
B(-1,22,-3,PACKED_ICE)
B(-1,22,-1,LOG:13)
B(-1,23,-3,PACKED_ICE)
B(-1,24,-3,LOG:13)
B(0,-5,1,LOG:13)
B(0,-4,-1,LOG:13)
B(0,-4,1,LOG:13)
B(0,-3,-1,LOG:13)
B(0,-3,1,LOG:13)
B(0,-2,-1,LOG:13)
B(0,-2,1,LOG:13)
B(0,-1,-1,LOG:13)
B(0,-1,1,LOG:13)
B(0,0,-1,LOG:13)
B(0,0,0,LOG:13)
B(0,0,1,LOG:13)
B(0,1,-1,LOG:13)
B(0,1,0,LOG:13)
B(0,1,1,LOG:13)
B(0,2,-1,LOG:13)
B(0,2,0,LOG:13)
B(0,2,1,LOG:13)
B(0,3,-1,LOG:13)
B(0,3,0,LOG:13)
B(0,3,1,LOG:13)
B(0,4,-1,LOG:13)
B(0,4,0,LOG:13)
B(0,4,5,ICE)
B(0,5,-1,LOG:13)
B(0,5,0,LOG:13)
B(0,5,2,ICE)
B(0,5,5,PACKED_ICE)
B(0,6,-2,LOG:13)
B(0,6,-1,LOG:13)
B(0,6,0,LOG:13)
B(0,6,2,PACKED_ICE)
B(0,6,5,LOG:13)
B(0,7,-2,LOG:13)
B(0,7,-1,LOG:13)
B(0,7,0,LOG:13)
B(0,7,2,PACKED_ICE)
B(0,7,3,LOG:13)
B(0,8,0,LOG:13)
B(0,8,1,LOG:13)
B(0,8,2,LOG:13)
B(0,9,0,LOG:13)
B(0,9,1,LOG:13)
B(0,9,3,ICE)
B(0,10,0,LOG:13)
B(0,10,3,PACKED_ICE)
B(0,11,-6,ICE)
B(0,11,0,LOG:13)
B(0,11,3,PACKED_ICE)
B(0,12,-6,PACKED_ICE)
B(0,12,-1,LOG:13)
B(0,12,0,LOG:13)
B(0,12,3,LOG:13)
B(0,13,-6,LOG:13)
B(0,13,-1,LOG:13)
B(0,13,0,LOG:13)
B(0,14,-1,LOG:13)
B(0,14,0,LOG:13)
B(0,15,-1,LOG:13)
B(0,15,0,LOG:13)
B(0,16,-1,LOG:13)
B(0,16,0,LOG:13)
B(0,17,-1,LOG:13)
B(0,17,0,LOG:13)
B(0,18,-1,LOG:13)
B(0,18,0,LOG:13)
B(0,18,2,LOG:13)
B(0,19,-1,LOG:13)
B(0,19,0,LOG:13)
B(0,19,1,LOG:13)
B(0,20,-1,LOG:13)
B(0,21,-1,LOG:13)
B(0,22,-1,LOG:13)
B(0,23,-1,LOG:13)
B(0,25,-2,LOG:13)
B(1,-5,-3,LOG:13)
B(1,-5,-2,LOG:13)
B(1,-5,-1,LOG:13)
B(1,-5,0,LOG:13)
B(1,-5,2,LOG:13)
B(1,-5,3,LOG:13)
B(1,-4,-3,LOG:1)
B(1,-4,-2,LOG:13)
B(1,-4,-1,LOG:13)
B(1,-4,0,LOG:13)
B(1,-4,2,LOG:13)
B(1,-3,-1,LOG:13)
B(1,-3,0,LOG:13)
B(1,-3,2,LOG:1)
B(1,-2,0,LOG:13)
B(1,-1,0,LOG:13)
B(1,0,0,LOG:13)
B(1,1,0,LOG:13)
B(1,2,0,LOG:13)
B(1,3,0,LOG:13)
B(1,4,0,LOG:13)
B(1,5,-1,LOG:13)
B(1,5,0,LOG:13)
B(1,6,-1,LOG:13)
B(1,6,0,LOG:13)
B(1,6,4,PACKED_ICE)
B(1,7,-1,LOG:13)
B(1,7,0,LOG:13)
B(1,7,4,LOG:13)
B(1,8,-1,LOG:13)
B(1,8,0,LOG:13)
B(1,9,-1,LOG:13)
B(1,9,0,LOG:13)
B(1,10,-5,PACKED_ICE)
B(1,10,-1,LOG:13)
B(1,10,0,LOG:13)
B(1,11,-5,PACKED_ICE)
B(1,11,-1,LOG:13)
B(1,11,0,LOG:13)
B(1,12,-5,PACKED_ICE)
B(1,12,-1,LOG:13)
B(1,12,0,LOG:13)
B(1,12,2,LOG:13)
B(1,13,-5,LOG:13)
B(1,13,-1,LOG:13)
B(1,13,0,LOG:13)
B(1,13,1,LOG:13)
B(1,14,-1,LOG:13)
B(1,14,0,LOG:13)
B(1,15,-1,LOG:13)
B(1,16,-1,LOG:13)
B(1,16,3,PACKED_ICE)
B(1,17,-1,LOG:13)
B(1,17,3,PACKED_ICE)
B(1,18,-1,LOG:13)
B(1,18,3,LOG:13)
B(1,19,-3,PACKED_ICE)
B(1,19,-1,LOG:13)
B(1,20,-3,PACKED_ICE)
B(1,20,-1,LOG:13)
B(1,21,-3,LOG:13)
B(1,21,-1,LOG:13)
B(1,22,-2,LOG:13)
B(1,22,-1,LOG:13)
B(1,23,-1,LOG:13)
B(1,23,1,ICE)
B(1,24,-1,LOG:13)
B(1,24,1,PACKED_ICE)
B(1,25,-1,LOG:13)
B(1,25,1,PACKED_ICE)
B(1,26,-1,LOG:13)
B(1,26,1,LOG:13)
B(1,27,-1,LOG:13)
B(1,27,0,LOG:13)
B(1,28,-1,LOG:13)
B(1,29,-1,LOG:13)
B(1,30,-1,LOG:13)
B(2,-5,-3,LOG:13)
B(2,-5,0,LOG:13)
B(2,-4,0,LOG:13)
B(2,-3,0,LOG:1)
B(2,7,-4,PACKED_ICE)
B(2,7,5,LOG:13)
B(2,8,-4,LOG:13)
B(2,9,-3,LOG:13)
B(2,9,-2,LOG:13)
B(2,10,-2,LOG:13)
B(2,13,1,LOG:13)
B(2,14,-4,LOG:13)
B(2,14,-3,LOG:13)
B(2,15,-2,LOG:13)
B(2,20,-1,LOG:13)
B(2,25,-1,LOG:13)
B(3,-5,0,LOG:13)
B(3,4,-6,ICE)
B(3,5,-6,PACKED_ICE)
B(3,6,-6,PACKED_ICE)
B(3,6,5,LOG:13)
B(3,7,-7,LOG:13)
B(3,7,-6,LOG:13)
B(3,8,-5,LOG:13)
B(3,9,-2,LOG:13)
B(3,11,-3,ICE)
B(3,11,1,PACKED_ICE)
B(3,12,-3,PACKED_ICE)
B(3,12,1,LOG:13)
B(3,13,-3,LOG:13)
B(3,16,-1,ICE)
B(3,17,-1,PACKED_ICE)
B(3,18,-1,PACKED_ICE)
B(3,19,-1,LOG:13)
B(4,4,6,PACKED_ICE)
B(4,5,-2,ICE)
B(4,5,6,PACKED_ICE)
B(4,6,-2,PACKED_ICE)
B(4,6,6,LOG:13)
B(4,7,-5,LOG:13)
B(4,7,-2,PACKED_ICE)
B(4,8,-2,LOG:13)
B(4,10,2,PACKED_ICE)
B(4,11,2,PACKED_ICE)
B(4,12,2,LOG:13)
B(4,13,-3,LOG:13)
B(4,18,0,PACKED_ICE)
B(4,19,0,LOG:13)
B(5,4,-4,PACKED_ICE)
B(5,5,-4,PACKED_ICE)
B(5,6,-4,LOG:13)
B(5,8,-2,LOG:13)
B(5,10,-2,PACKED_ICE)
B(5,11,-2,PACKED_ICE)
B(5,12,-2,LOG:13)
B(5,12,3,LOG:13)
B(6,8,-1,LOG:13)
B(6,8,3,ICE)
B(6,9,3,PACKED_ICE)
B(6,10,3,PACKED_ICE)
B(6,11,3,LOG:13)
B(7,7,-1,LOG:13)

#######################################################################
# +-----------------------------------------------------------------+ #
# |                            BO3 checks                           | #
# +-----------------------------------------------------------------+ #
#######################################################################

# Require a condition at a certain location in order for the BO3 to be spawned.
# BlockCheck(x,y,z,BlockName[,BlockName[,...]]) - one of the blocks must be at the location
# BlockCheckNot(x,y,z,BlockName[,BlockName[,...]]) - all the blocks must not be at the location
# LightCheck(x,y,z,minLightLevel,maxLightLevel) - light must be between min and max (inclusive)

# You can use "Solid" as a BlockName for matching all solid blocks or "All" to match all blocks that aren't air.

# Examples:
#   BlockCheck(0,-1,0,GRASS,DIRT,biomesoplenty:grass:0,biomesoplenty:grass:1,biomesoplenty:grass:2,biomesoplenty:grass:3,biomesoplenty:grass:4,biomesoplenty:grass:5,biomesoplenty:grass:6,biomesoplenty:grass:7,biomesoplenty:dirt:0,biomesoplenty:dirt:1,biomesoplenty:dirt:2,biomesoplenty:dirt:3,biomesoplenty:dirt:4,biomesoplenty:dirt:5,biomesoplenty:dirt:6,biomesoplenty:dirt:7,biomesoplenty:dirt:8,biomesoplenty:dirt:9,biomesoplenty:dirt:10,biomesoplenty:dried_sand:0,biomesoplenty:hard_ice:0,biomesoplenty:white_sand:0,biomesoplenty:white_sandstone:0,biomesoplenty:mud:0,biomesoplenty:ash_block:0)  Require grass or dirt just below the object
#   BlockCheck(0,-1,0,Solid)       Require any solid block just below the object
#   BlockCheck(0,-1,0,WOOL)        Require any type of wool just below the object
#   BlockCheck(0,-1,0,WOOL:0)      Require white wool just below the object
#   BlockCheckNot(0,-1,0,WOOL:0)   Require that there is no white wool below the object
#   LightCheck(0,0,0,0,1)          Require almost complete darkness just below the object

#######################################################################
# +-----------------------------------------------------------------+ #
# |                             Branches                            | #
# +-----------------------------------------------------------------+ #
#######################################################################

# Branches are objects that will spawn when this object spawns when it is used in
# the CustomStructure resource. Branches can also have branches, making complex
# structures possible. See the wiki for more details.

# Regular Branches spawn each branch with an independent chance of spawning.
# Branch(x,y,z,branchName,rotation,chance[,anotherBranchName,rotation,chance[,...]][IndividualChance])
# branchName - name of the object to spawn.
# rotation - NORTH, SOUTH, EAST or WEST.
# IndividualChance - The chance each branch has to spawn, assumed to be 100 when left blank

# Weighted Branches spawn branches with a dependent chance of spawning.
# WeightedBranch(x,y,z,branchName,rotation,chance[,anotherBranchName,rotation,chance[,...]][MaxChanceOutOf])
# MaxChanceOutOf - The chance all branches have to spawn out of, assumed to be 100 when left blank
