Bo3 BulkEdit

## What is Bo3\_BulkEdit?

Bo3\_BulkEdit would be a console applicaion for Open Terrain Generator and TerrainControl Bo3 Objects. (Aswell limited for MineCraft Worlds).

Bo3\_BulkEdit would be used to convert Minecraft Schematics and modify several BO3 objects at once, according to preconfigured Rulesets.

It allows you to:

* Convert Schematics to Bo3 Files
* Convert Bo2 to Bo3 Files
* Change nearly all Common settings of an Object
* Switch out all Occurances of Specifc Blocks to Another (Also *"Block()"* to *"RandomBlock()"*)
* Remove all Occurances of Blocks
* Add BlockChecks
* Add Branches
* Add Entities
* Generate Preview Images

#### Download:

Download Most Recent Version: https://github.com/LanToaster/BO3\_BulkEdit-Release/

Will become Aviable again when the new Version is Finished.

## Usage:

### Installation:

Download and Extract Bo3\_BulkEdit in a convenient folder. After that "bo3\_bulkedit.exe" once. It will generate a Warning for a Missing Config file and Generate a new one.

The Folder should now contain:

* A Folder called: Images - These Images will be used for Preview Images.
* A Folder called: Objects - This folder needs to be filled with the Objects/Schematics you wish to Modify.
* A Folder called: Results - The Finished Objects will be placed here.
* A File called: bo3\_bulkedit.exe - To run the Application
* A File called: Bo3\_BulkEdit\_Materials.ini - This file contains the BlockNames and Ids to translate in Objects. If you which to use Modded Blocks in your Schematics you need to add them to this List so BulkEdit may correctly translate your BlockID to BlockNames.
* A File called: Bo3\_BulkEdit\_Settings.ini - This file contains all the Rules that govern the changes to your Objects.
* A File called: Bo3\_BulkEdit\_README.txt - A basic Readme file.

### Configuration:

To Configure Bo3\_BulkEdit you need to tweak "Bo3\_BulkEdit\_Settings.ini". A default Settingsfile should look somewhat like this:
Version: 1.05

Obj\_default:

 ###################

 ### Basic Settings ###

 ######################

 RemoveComments: false

 SplitObjects: true

 Description: -NONE-

 Tree: -NONE-

 Frequency: -NONE-

 Rarity: -NONE-

 RotateRandomly: -NONE-

 SpawnHeight: -NONE-

 SpawnHeightOffset: -NONE-

 SpawnHeightVariance: -NONE-

 MinHeight: -NONE-

 MaxHeight: -NONE-

 ExtrudeMode: -NONE-

 ExtrudeThroughBlocks: -NONE-

 MaxBranchDepth: -NONE-

 ExcludedBiomes: -NONE-

 SourceBlocks: -NONE-

 MaxPercentageOutsideSourceBlock: -NONE-

 OutsideSourceBlock: -NONE-

 ### Preview - BO3 Bulk Edit will generate an Object Preview ###

 Preview: false

 #################################################

 ### PlaceHolder Settings ###

 ### You may use these Settings Multiple times ###

 #################################################

 AIR\_Block: SPONGE:1

 REMOVE\_Block: IRON\_BLOCK

 CHECK\_Block: EMERALD\_BLOCK

 BRANCH\_Block: GOLD\_BLOCK

 CENTER\_Block: DIAMOND\_BLOCK

 ###############################

 ### Shift Object ###

 ### Moves the Object around ###

 ###############################

 Shift\_X: 0

 Shift\_Y: 0

 Shift\_Z: 0

 ######################################################################################################

 ### Block Changes: ###

 ### EXAMPLE: Change: Block -> RandomBlock | SMOOTH\_BRICK:1 -> SMOOTH\_BRICK:1,50,SMOOTH\_BRICK:2,100 ###

 ######################################################################################################

 Change: Block -> RandomBlock | SMOOTH\_BRICK:1 -> SMOOTH\_BRICK,40,SMOOTH\_BRICK:1,50,SMOOTH\_BRICK:2,40,COBBLESTONE,100

### Modifying the RuleSets:

The Config File can contain almost as many RuleSets as you want. A Ruleset will begin with *"Obj\_"* like the default set in the config (*"Obj\_default"*). To create additional Rulesets you may just copy the Default rules, and change *"Obj\_default"* to *"Obj\_different"*.

Bo3\_BulkEdit will choose the Ruleset according to a prefix on the Objects name. For Example, the Object: *"Obj-different\_tree.bo3"* would use the *"Obj\_different"* Ruleset. Prefixes like this, or the "we-" will be removed from the resulting Object. So it would just be *"tree.bo3"* as Result.

**Note:**
 The Config file is CaseSensitive.
 Bo3\_BulkEdit will not check for valid values. Anything you put in there, is the target Value.

**Common Settings:**

These Settings reflect the Main Settings of your Bo3 Object. As Mentioned Earlier: Settings set to: -NONE- wil not change your Object.

* RemoveComments: false *<- Will Remove any Comments and Empty lines of the Object (Possible: true/false)*
* SplitObjects: true <- Will Split Objects larger than 32x32 Blocks into 16x16 parts.

* Description: -NONE-
* Tree: -NONE-
* Frequency: -NONE-
* Rarity: -NONE-
* RotateRandomly: -NONE-
* SpawnHeight: -NONE-
* SpawnHeightOffset: -NONE-
* SpawnHeightVariance: -NONE-
* MinHeight: -NONE-
* MaxHeight: -NONE-
* ExtrudeMode: -NONE-
* ExtrudeThroughBlocks: -NONE-
* MaxBranchDepth: -NONE-
* ExcludedBiomes: -NONE-
* SourceBlocks: -NONE-
* MaxPercentageOutsideSourceBlock: -NONE-
* OutsideSourceBlock: -NONE-

**Object Changes:**

These are Generic Changes applied to your Object.

* Preview: false *<- Will Generate a Preview Image of the Object. This will drastically increase Processing time. And needs valid Images for each Block.*
* AIR\_Block: SPONGE:1 *<- Will Replace the Set Block with AIR. (This Setting can be used twice or more)*
* REMOVE\_Block: IRON\_BLOCK *<- Will just remove these Blocks from the Object.*
* CHECK\_Block: EMERALD\_BLOCK *<- Will add A Generic BlockCheck at this Position, and remove the Block Itself*
* BRANCH\_Block: GOLD\_BLOCK *<- Will add a Generic Branch at this Position, and remove the Block Itself*
* CENTER\_Block: DIAMOND\_BLOCK *<- Will move the Entire Object so this Block would Center the Object. (It is advised to ensure this Blocks is Unique in the Object, or the Result will be weird.)*
* Shift\_X: 0 *<- Moves the Entire Object on the X axis. (Additional to the Center Blockcheck)*
* Shift\_Y: 0 *<- Moves the Entire Object on the Y axis. (Additional to the Center Blockcheck)*
* Shift\_Z: 0 *<- Moves the Entire Object on the Z axis. (Additional to the Center Blockcheck)*

**Block Changes:**

The Last lines of your RuleSet are BlockChanges. Each line starts with: *"    Change: "* then the BlockType you wish to Change. ("*Block"* or "*RandomBlock"*) then the target BlockType ("*Block",* "*RandomBlock"* or *"Entity")* after that, the Block string you whish to Change, and the Target String.

Note however, as Bo3\_BulkEdit cannot possibly know all Blocks you may have Modded or beeing added in the Future, it takes whatever you write as Block.

Also, replacing a Block to an Entity, will change the Source to AIR.

For Example:

```
Change: RandomBlock -> Block | SMOOTH_BRICK,10,SMOOTH_BRICK:1,100 -> SMOOTH_BRICK

```

```
Change: RandomBlock -> Block | SMOOTH_BRICK,20,SMOOTH_BRICK:1,100 -> SMOOTH_BRICK

```

While they tweak kind of the same Blocks. It will only Change the Exact same occurance you have set up.

In truth, you wont have RandomBlocks in fresh exportet Objects, so this is just a small matter.

Here is an Example of a larger set of Changes you could set up:

```
    Change: Block -> RandomBlock | SMOOTH_BRICK:1 -> SMOOTH_BRICK,40,SMOOTH_BRICK:1,50,SMOOTH_BRICK:2,40,COBBLESTONE,100

    Change: Block -> RandomBlock | SMOOTH_BRICK:2 -> SMOOTH_BRICK:2,40,SMOOTH_BRICK:1,40,SMOOTH_BRICK,60,COBBLESTONE,50

    Change: Block -> RandomBlock | STEP:3 -> STEP:3,2,COBBLESTONE,1,GRAVEL,1,AIR,100

    Change: Block -> RandomBlock | STONE:6 -> STONE:6,50,STONE:5,43,STONE,50,COBBLESTONE,75,STEP:3,100

    Change: Block -> RandomBlock | STONE:3 -> STONE,85

    Change: Block -> RandomBlock | BOOKSHELF -> BOOKSHELF,70,WOOD,75,WEB,100

    Change: Block -> RandomBlock | WEB -> WEB,8,AIR,100

    Change: Block -> RandomBlock | IRON_FENCE -> IRON_FENCE,75,AIR,100

    Change: Block -> RandomBlock | GLOWSTONE -> GLOWSTONE,10,AIR,100

    Change: Block -> RandomBlock | CHEST -> CHEST,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | CHEST:1 -> CHEST:1,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | CHEST:2 -> CHEST:2,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | CHEST:3 -> CHEST:3,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | CHEST:4 -> CHEST:4,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | CHEST:5 -> CHEST:5,NBT/Dungeon_Loot.nbt,30,AIR,100

    Change: Block -> RandomBlock | SPONGE -> AIR,33

    Change: Block -> RandomBlock | BREWING_STAND -> BREWING_STAND,33,AIR,100

    Change: Block -> RandomBlock | MOB_SPAWNER -> MOB_SPAWNER,100

    Change: Block -> Block | DIRT:1 -> GRASS_PATH

    Change: Block -> RandomBlock | DIRT:2 -> DIRT,25,AIR,100

    Change: Block -> Block | RAILS -> RAILS,50,AIR,100

    Change: Block -> Block | RAILS:1 -> RAILS:1,50,AIR,100

    Change: Block -> RandomBlock | DIRT:2 -> GRASS_PATH,25

    Change: Block -> RandomBlock | DIRT:2 -> GRASS_PATH,25

    Change: Block -> RandomBlock | UNOBTANIUM -> STONE,60,PRISMARINE:0,50,SEA_LANTERN,50,PRISMARINE:0,100

    Change: Block -> Entity | REDSTONE_BLOCK -> Sheep,1

```

### Block Dictionary:

While converting Schematics to Bo3s, Bulkedit will use the "Bo3\_BulkEdit\_Materials.ini" to translate numeric BlockIds used in Schematics to BlockNames.

BulkEdit ships with a Dictionary of most Vanilla Blocks. You can either add other BlockIDs manually, or copy a "level.dat" from Forge in the same Directory as BulkEdit. BulkEdit will read the "level.dat" and create a new Dictionary with any Modded Blocks you have currently used in that world.

Note however, as Forge assigns the BlockIDs dynamicly, you need to switch out the "level.dat" and generate a new Dictionary if you change your Mods.

### Running:

After setting up all the changes you want to use. Just move the Objects you wish to Process to the *"Objects"* folder, and run "*Bo3\_BulkEdit.exe"*. The Finnished objects will be placed in the Result Folder, your Source Objects wont be touched or changed. In case something goes wrong.

## Changelog:

06.01.2019:

* Fixed yet again the Default Center of Schematics.

#### 28.11.2018:

* Fixed Schematic -> Bo3 conversion. BulkEdit can now Correctly translate Modded Blocks, given they are in the "Bo3\_BulkEdit\_Materials.ini"
* BulkEdit can now create a Material Dictionary in the "Bo3\_BulkEdit\_Materials.ini". To do that just Copy the "level.dat" from your Modded world where you Exported your Schematics.This is Important as BlockIDs for modded Blocks on Forge are Dynamic and change depending on the Mods and their load order.

#### 10.07.2018:

* Fixed a Crash while Converting Schematics with block IDs that are not present in the MaterialList.
* Taught BulkEdit to think about using the Datavalue 0 on Placeholders if not specified otherwise.
* BulkEdit should again correctly center Schematics around the CenterBlock

#### 13.06.2018:

* BulkEdit can now Ignore the minecraft: prefix (or from Mods) to generate Preview Images.

#### 10.04.2018:

* Quick fix to address the Issue with Stairs that were translated to the Wrong direction.

03.04.2018:

* Fixed another Bug where BulkEdit wont set up Branches correctly when splitting Objects. Now BulkEdit should actually create a complete Structure, without missing parts.
* Fixed a bug where BulkEdit would Replace the AIR Placeholder with AIR, and immediatly remove the AIR when set to remove AIR from the Object.

31.01.2018:

* Fixed a Bug where BulkEdit wont set up Branches correctly when splitting Multiple Objects.
* BulkEdit will now Roughly Center the Object while Shematic Conversion if no Center Placeholder is found.
* Fixed the Annoyance that BulkEdit generated an Outdated ConfigFile.

07.01.2018:

* Added the Ability to Split up Larger Objects to a single Custom Structure.
* Added Configuration Option to Split up Objects, defaults to "false" if not set. [ SplitObjects: true ]
* Added version number to Configuration. BulkEdit will inform you if the Config was Changed. You can either let BulkEdit regenerate your Config, or adjust it manually. [ Version: 1.05 ]

06.01.2018:

* Taught BulkEdit to understand Short Versions of Block() and RandomBlock() used by newer Versions of OTG and BiomeBundle

19.09.2017:

* Disabled Debugging Mode. Now BulkEdit should run fine again.

08.09.2017:

* Added the Ability to Convert bo2 files.
* Added an Output for Block-IDs on Schematic/Bo2 conversion that BulkEdit doesnt understand. (So you can add them Manually)
* Added the Ability to recognize Schematics and Bo2 files with lower and uppercase Extensions.
* Fixed the Entry in the Material list for MobSpawner