Bo3 Configs

## **Introduction**

Bo's are user-made objects that can spawn in biomes like trees, ores, dungeons, caves, rocks, lakes etc. Using a branching system, BO3's or BO4's can also be stitched together to form large structures.

BO3's and BO4's can also have NBT data attached to them to fill chests, furnaces, dispensers, and other Tile Entities. Additionally mobs and mob spawners can be generated inside.

BO2/BO3/BO4 files are text files. Notepad++ is recommended for editing. Other useful tools are Bo3\_BulkEdit (for editing multiple BO3's at once) and Bo3\_Layouter (for creating branching structures made of BO3's).

### **BO2's,** **BO3's** **and B04's** **(custom objects/structures)**

OpenTerrainGenerator uses BO3 and B04 files to add custom structures to the world such as hand built trees, rocks, caves, lakes and buildings. BO3's can be placed as either CustomObjects (< 32x32 single BO3/B04 file, commonly used for small things like trees and rocks) or as CustomStructures (Large structure made of multiple BO3's (16 x 16) that are stitched together via branches, commonly used for large buildings, mountains etc).

B02's have legacy support but can no longer be exported.

For B04 configuration, visit this page.

A B03 can be exported in game using OTG commands

Existing schematics should be spawned/pasted in the world, to be exported using OTG commandsSchematics created via WorldEdit or MCEdit can be converted to BO3's using OTGEdit or Bo3\_BulkEdit. When converting to a BO3 a block can be specified as the center point.

### **Tutorials**

The following basic tutorials on Bo3s are available:

* Creating
* Editing

* Spawning & Biome Config Resource Queue

## **The Configuration in the BO3 Object**

The Bo3 configs contain the block settings and placement rules of the objects to be spawned in the world.

The files are located in "**OpenTerrainGenerator/worlds/[world name]/World Objects**" folder. They can be arranged in any sort of folder structure but must reside in the **"World Objects"** folder

### **Author**

Author of this world. When creating a new custom object the authors name can be placed here.

### **Description**

A short description of the BO3 object. i.e. "Small Jungle Tree 1".

### **Version**

To be kept as version 3 to allow for version checks.

### **SettingsMode**

Normally, each time OTG reads the BO3 object, it also writes to it. With this setting you can change how OTG writes to this BO3. Possible modes:

 **WriteDisable** | Don't write to the comment files. Errors are not corrected, old settings are read, but they are also not corrected. Custom comments won't be removed with this mode== ==

## **Main settings**

### **Tree**

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

### **Frequency**

The frequency of the BO3 from 1 to 200. This setting manages the number of attempts to spawn the object for each chunk hen using the CustomObject resource (Tree and CustomStructure have their own parameters, Sapling always tries to spawn exactly one tree). If you have very strict spawn conditions you might want to increase this.

### **Rarity**

The rarity of the BO3 from 0 to 100. Each spawn attempt has rarity% chance to succeed when using the CustomObject(...) resource.

The rarity can be very small. 0.0001 is possible.

### **RotateRandomly**

If you set this to true, the BO3 will be placed with a random rotation. So one time the BO3 faces north, another time the BO3 faces east. This should usually be set to true.

### **SpawnHeight**

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

### **SpawnHeightOffset**

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

### **SpawnHeightVariance**

A random amount to offset the spawn location from the spawn offset height.

Example: SpawnHeightOffset = 3, SpawnHeightVariance = 3; This object will spawn 3 to 6 blocks above the original spot it would have spawned.

### **MinHeight**

The minimum and maximum height limit for the BO3 to spawn. Inclusive.

### **MaxHeight**

The minimum and maximum height limit for the BO3 to spawn. Inclusive.

## **Extrusion Settings**

### **ExtrudeMode**

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

### **MaxBranchDepth**

When spawned as a structure, objects can have other objects attached to it: branches. Branches can also have branches attached to it, which can also have branches, etc. This maximum branch depth for this object. When you aren't using branches, you won't need this.

### **ExcludedBiomes**

When spawned with the UseWorld or UseWorldAll keywords, this BO3 should NOT spawn in the following biomes.

If you don't use UseWorld or UseWorldAll to spawn this object, for example because you use CustomObject(thisObjectName) in the BiomeConfigs, this will have no effect.

ExcludedBiomes:All will make this object not spawn in UseWorld.

## **Source block settings**

### **SourceBlock**

The id of the block the BO3 should spawn in. Multiple ID's can be specified, therefore the object can be permitted to spawn in more than block type. Used in combination with the next setting.

### **MaxPercentageOutsideSourceBlock**

A percentage of how much block of the BO3 can be outside the source block.

### **OutsideSourceBlock**

What to do when the BO3 should do when it is about to place a block on a location where there is no source block.

 placeAnyway

## **Blocks**

All the blocks used in the BO3 are listed here. Possible blocks are as follows.

#### **Block**

Block(x,y,z,id[.data][,nbtfile.nbt)

Block(0,1,0,STONE:1). This will spawn a granite 1 block above the centre block.

#### **RandomBlock**

RandomBlock(x,y,z,id[:data][,nbtfile.nbt],chance[,id[:data][,nbtfile.nbt],chance[,...]])

RandomBlock(0,0,0,CHEST,chest.nbt,50,CHEST,anotherchest.nbt,100). This 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.

nbt data - tile entities

#### **Spawnable Entities**

*Entity(x,y,z,id,count[,nbtfile.txt])*

*Entity(0,1,0,Skeleton,4)*. Will spawn 4 skeletons that, by default, will not despawn.

*Entity(0,1,0,Skeleton,1,Skeleton.txt)*. This will search within the same directory as the object for a text file named skeleton.txt, and spawn 1 skeleton. Entity nbt data can be stored in a text file as well as an .nbt file.

The nbt data in the text file can be taken from any online summon command editor i.e. this one.

Example of the text found in the skeleton.text nbt file. This skeleton is wearing a leather helmet with a zero armor drop chance:

*{ArmorItems:[{},{},{},{id:leather\_helmet,Count:1b}],ArmorDropChances:[0.085F,0.085F,0.085F,0.0F]*

Here is a list of possible entities that can be spawned. These are case-insensitive and ignore underscores
so you can use any of the listed names.

* For 1.12.2
* For 1.11.2
* For 1.10.2

**Note**

**B03 only:** To ensure **entities spawn correctly**, it is best practice to place an air block in the same space as the entity. The way it would read in the block list would be:

1. Block(0,1,0,AIR)
2. Entity(0,1,0,Skeleton,Skeleton.txt,1)

#### **MinecraftObject**

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.

**Bo3 Checks**

Require a condition at a certain lodddddddddddddddddddddcation 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

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

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

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

## **History**

BO3 objects (also called custom biome objects (BOBs) version 3) are the successor of the BO2 objects.