The BO3 Basics

The BO3 Basics

Hello and welcome to the Bo3 Basics Tutorial Page.

What are Bo3's?
A Bo3 is a abbreviation of Biome Objects ( Version 3 ) and are used in nearly all TerrainControl generated worlds which makes them a verry important part of the plugin. Let's imagine ourselfs walking in a vanilla world where we see a tree and walk 5 miles to the north where we see the same tree.
Pretty boring right? So lets grab some wool and make a cherry blossom tree to spice things up a bit. But hey, why not add 100 cherry blossom trees?
And while we are at it why not create 100 diffrent trees and place them all over the world making unique forest like landscapes in all shapes we could imagine!
This is where the bo3 comes in which allowes you to not even add all these trees but also rocks, structures, towns, dungeons and even cities with no limit on how big you want them to be!

What do I need to add in these Bo3's?
Are you in for making a couple of Bo3's now, yes? Well let's start with the creation of a bo3.

[Step 1] First of all shut down your server, download this plugin: ⚑ Bo3Tools ⚑ and place it in your plugins file.
                   You may start your server up again after you have completed this. Do note that you'll need a working
                   TerrainControl world for this to work!

[Step 2] Navigate to your world ( Ingame ) and create whatever you'll like. As a example we'll take a tree.

[Step 3] Select the outlines of your creation with http://dev.bukkit.org/bukkit-plugins/worldedit/

[Step 4] Now there are serval parameters you can add to the export command, you can find them here;
                    ⚑ Bo3Tools Commands ⚑

[Step 5] Export the Bo3 and navigate to your server folder: /minecraft/plugins/terraincontrol/globalobjects
                   drag the bo3 file to your desktop and open it.

[Step 6] Read the Bo3 File Example & Explaination below to get a idea on how to work with the file functions and
                   change these where desired.

[Step 7] navigate to /minecraft/plugins/terraincontrol/worlds/yourworld/WorldObjects and place your bo3 file in this
                   folder.

[Step 8] navigate to /minecraft/plugins/terraincontrol/worlds/yourworld/WorldBiomes and open up the biome config
                   where you want to place your bo3 in.

[Step 9] I highly advice to read The Biome Basics Tutorial prior to the next steps!
                   [Tutorial will come soon, so for now just proceed ;)]

[Step 10] Scroll down until you see this:

#######################################################################
# +-----------------------------------------------------------------+ #
# | Sapling resource | #
# +-----------------------------------------------------------------+ #
#######################################################################

[Step 11] Right above these lines you should see: CustomObject(UseWorld)
                   Add CustomObjects() beneath that line, like this:

CustomObject(UseWorld)
CustomObject()


[Step 12] CustomObject could also be replaced by Tree() or CustomStructure() For this I refer you to
                   The Biome Basics Tutorial once again. ( Coming soon! )

[Step 13] Fill in your Bo3 name between the () characters like this: CustomObject(MyBo3)
                   If you want to put in multiple objects it should look like this: CustomObject(MyBo3,MySecondBo3)

[Step 14] Save the file and startup your server! If you do not see your Bo3 try to adjust the Frequency setting.
                   Also double check your Blockchecks!

Bo3 File Example & Explaination

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

# 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: WriteDisable
● Expanded Explaination:
● WriteAll: OverWrites any faulty lines and adds in a basic explainatyion on the function of a setting.
● WriteWithoutComments: OverWrites any faulty lines without basic explaination on the function of a setting.
● WriteDisable: Prevents TerrainControl making any changes to the current bo3 file.


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

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

# 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: false

# The spawn height of the BO3 - randomY, highestBlock or highestSolidBlock.
SpawnHeight: higestBlock
Expanded Explaination:
● randomY: Spawns the structure anywhere inbetween 0 and 256
● higestBlock: Spawns the block on any "higest" block. ( Lava and Water blocks included )
● higestSolidBlock: spawns the object at the higest solid block, This works the exact same as higestBlock
but wont spawn on non-solid blocks like Water and Lava.

# 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
● Expanded Explaination:
● Want to spawn your structure partially underground? Use this setting!
● Example: use SpawnHeightVariance: -3 to spawn the object 3 blocks lower.

######################
# 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

# The height limits for the BO3.
MinHeight: 0

MaxHeight: 0
● Expanded Explaination:
● If you want to use this setting make sure you have the SpawnHeight: set to randomY

# 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
● Expanded Explaination:
● This setting only applies when you are creating/exporting a custom structure which allowes bo3's bigger then 32x32 blocks.
● If you are interested in exporting structures bigger then 32x32 blocks check out one of the following or all tutorials:
Text Tutorial
● Check out TerrainControl CustomStructure Village & TerrainControl Small Branching CustomStructure Tutorial at this page: Video Tutorials

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


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

# The block(s) the BO3 should spawn in.
SourceBlocks: AIR
● Expanded Explaination:
● The blocks you want the structure to spawn in. For example when used in a cave with trees you could replace AIR with all ores and stone.
● Example of using multiple sourceblocks: SourceBlocks: STONE,DIAMOND_ORE,GOLD_ORE

# 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
● Expanded Explaination:
● I advice to not use any numbers below 10 unless you are know what you are doing.

# What to do when a block is about to be placed outside the SourceBlock? (dontPlace, placeAnyway) OutsideSourceBlock: placeAnyway
● Expanded Explaination:
● PlaceAnyway: This makes the bo3 spawn under any sourceblock condition.
● dontPlace: Use this if you dont want the bo3 to spawn outside the sourceblock.


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

# All the blocks used in the BO3 are listed here. Possible blocks:
# Block(x,y,z,id[.data][,nbtfile.nbt)
# RandomBlock(x,y,z,id[:data][,nbtfile.nbt],chance[,id[:data][,nbtfile.nbt],chance[,...]])
# So RandomBlock(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.
Block(0,0,0,AIR)
● Expanded Explaination:
● This functions as the container for your structure. Dont toutch this unless you know what you are doing.


#######################################################################
# +-----------------------------------------------------------------+ #
# | 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) 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
● Expanded Explaination:
● Using these functions can become quite tricky. If you follow the below rules you should be fine
● Keep it as simple as possibile! Do not add the same blockcheck twice
● Example: Dont do it like this:

● BlockCheck(0,-1,0,GRASS,DIRT)
● BlockCheck(0,-3,0,STONE)

● But like this:

● BlockCheck(0,-1,0,GRASS,DIRT)
● It might seem pointless to explain this however when you are going to use advanced blockchecks it will come in handy!

#######################################################################
# +-----------------------------------------------------------------+ #
# | 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
● Expanded Explaination:
● This setting only applies when you are creating/exporting a custom structure which allowes bo3's bigger then 32x32 blocks.
● If you are interested in exporting structures bigger then 32x32 blocks check out one of the following or all tutorials:
Text Tutorial
● Check out TerrainControl CustomStructure Village & TerrainControl Small Branching CustomStructure Tutorial at this page: Video Tutorials