diff --git a/src/Generating/ComposableGenerator.cpp b/src/Generating/ComposableGenerator.cpp index 4dd626ed4..cf736ce64 100644 --- a/src/Generating/ComposableGenerator.cpp +++ b/src/Generating/ComposableGenerator.cpp @@ -25,6 +25,7 @@ #include "Noise3DGenerator.h" #include "POCPieceGenerator.h" #include "Ravines.h" +#include "UnderwaterBaseGen.h" #include "VillageGen.h" @@ -406,6 +407,13 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile) { m_FinishGens.push_back(new cStructGenTrees(Seed, m_BiomeGen, m_HeightGen, m_CompositionGen)); } + else if (NoCaseCompare(*itr, "UnderwaterBases") == 0) + { + int GridSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseGridSize", 1024); + int MaxDepth = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxDepth", 7); + int MaxSize = a_IniFile.GetValueSetI("Generator", "UnderwaterBaseMaxSize", 128); + m_FinishGens.push_back(new cUnderwaterBaseGen(Seed, GridSize, MaxDepth, MaxSize, *m_BiomeGen)); + } else if (NoCaseCompare(*itr, "Villages") == 0) { int GridSize = a_IniFile.GetValueSetI("Generator", "VillageGridSize", 384); diff --git a/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp b/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp new file mode 100644 index 000000000..54d1b6745 --- /dev/null +++ b/src/Generating/Prefabs/UnderwaterBasePrefabs.cpp @@ -0,0 +1,1888 @@ + +// UnderwaterBasePrefabs.cpp + +// Defines the prefabs in the group UnderwaterBase + +// NOTE: This file has been generated automatically by GalExport! +// Any manual changes will be overwritten by the next automatic export! + +#include "Globals.h" +#include "UnderwaterBasePrefabs.h" + + + + + +const cPrefab::sDef g_UnderwaterBasePrefabs[] = +{ + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // Corridor16: + // The data has been exported from the gallery Water, area index 25, ID 566, created by xoft + { + // Size: + 16, 4, 4, // SizeX = 16, SizeY = 4, SizeZ = 4 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 3, 3, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 64: 2\n" /* wooddoorblock */ + "d: 64: 0\n" /* wooddoorblock */ + "e: 20: 0\n" /* glass */ + "f: 64: 9\n" /* wooddoorblock */ + "g: 76: 3\n" /* redstonetorchon */ + "h: 64: 8\n" /* wooddoorblock */ + "i: 76: 4\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "abbbbbbbbbbbbbba" + /* 2 */ "abbbbbbbbbbbbbba" + /* 3 */ "mmmmmmmmmmmmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abbbbbbbbbbbbbba" + /* 1 */ "c..............d" + /* 2 */ "c..............d" + /* 3 */ "abbbbbbbbbbbbbba" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abeebbbeebbbeeba" + /* 1 */ "f.........g....h" + /* 2 */ "h....i.........f" + /* 3 */ "abeebbbeebbbeeba" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abbbbbbbbbbbbbba" + /* 1 */ "abbbbbbbbbbbbbba" + /* 2 */ "abbbbbbbbbbbbbba" + /* 3 */ "abbbbbbbbbbbbbba", + + // Connectors: + "1: 0, 1, 1: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 2: 4\n" /* Type -1, direction X- */ + "1: 15, 1, 2: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 1: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // Corridor16 + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // CorridorCorner: + // The data has been exported from the gallery Water, area index 26, ID 569, created by xoft + { + // Size: + 10, 4, 10, // SizeX = 10, SizeY = 4, SizeZ = 10 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 9, 3, 9, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 64: 5\n" /* wooddoorblock */ + "d: 64: 2\n" /* wooddoorblock */ + "e: 64: 4\n" /* wooddoorblock */ + "f: 64: 1\n" /* wooddoorblock */ + "g: 20: 0\n" /* glass */ + "h: 64:12\n" /* wooddoorblock */ + "i: 76: 3\n" /* redstonetorchon */ + "j: 64: 8\n" /* wooddoorblock */ + "k: 76: 2\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* */ + /* * 0123456789 */ + /* 0 */ "mmmmmmmmmm" + /* 1 */ "abbbbbmmmm" + /* 2 */ "abbbbbbbmm" + /* 3 */ "mmmbbbbbmm" + /* 4 */ "mmmmmbbbbm" + /* 5 */ "mmmmmmbbbm" + /* 6 */ "mmmmmmbbbm" + /* 7 */ "mmmmmmmbbm" + /* 8 */ "mmmmmmmbbm" + /* 9 */ "mmmmmmmaam" + + // Level 1 + /* z\x* */ + /* * 0123456789 */ + /* 0 */ "abbbbbmmmm" + /* 1 */ "c.....bbmm" + /* 2 */ "d.......bm" + /* 3 */ "abb.....bm" + /* 4 */ "mmmbb....b" + /* 5 */ "mmmmmb...b" + /* 6 */ "mmmmmb...b" + /* 7 */ "mmmmmmb..b" + /* 8 */ "mmmmmmb..b" + /* 9 */ "mmmmmmaefa" + + // Level 2 + /* z\x* */ + /* * 0123456789 */ + /* 0 */ "abggbbmmmm" + /* 1 */ "h...i.bbmm" + /* 2 */ "j.......bm" + /* 3 */ "abb.....bm" + /* 4 */ "mmmbb....b" + /* 5 */ "mmmmmb..kb" + /* 6 */ "mmmmmb...g" + /* 7 */ "mmmmmmb..g" + /* 8 */ "mmmmmmb..b" + /* 9 */ "mmmmmmahja" + + // Level 3 + /* z\x* */ + /* * 0123456789 */ + /* 0 */ "abbbbbmmmm" + /* 1 */ "abbbbbbbmm" + /* 2 */ "abbbbbbbbm" + /* 3 */ "abbbbbbbbm" + /* 4 */ "mmmbbbbbbb" + /* 5 */ "mmmmmbbbbb" + /* 6 */ "mmmmmbbbbb" + /* 7 */ "mmmmmmbbbb" + /* 8 */ "mmmmmmbbbb" + /* 9 */ "mmmmmmaaaa", + + // Connectors: + "1: 7, 1, 9: 3\n" /* Type 1, direction Z+ */ + "-1: 8, 1, 9: 3\n" /* Type -1, direction Z+ */ + "1: 0, 1, 1: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 2: 4\n" /* Type -1, direction X- */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // CorridorCorner + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // CorridorCrossing: + // The data has been exported from the gallery Water, area index 31, ID 581, created by LO1ZB + { + // Size: + 16, 4, 16, // SizeX = 16, SizeY = 4, SizeZ = 16 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 3, 15, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 64: 3\n" /* wooddoorblock */ + "d: 64: 6\n" /* wooddoorblock */ + "e: 64: 5\n" /* wooddoorblock */ + "f: 64: 0\n" /* wooddoorblock */ + "g: 64: 2\n" /* wooddoorblock */ + "h: 64: 1\n" /* wooddoorblock */ + "i: 64: 8\n" /* wooddoorblock */ + "j: 64:12\n" /* wooddoorblock */ + "k: 20: 0\n" /* glass */ + "l: 76: 1\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */ + "n: 76: 3\n" /* redstonetorchon */ + "o: 76: 4\n" /* redstonetorchon */ + "p: 64: 9\n" /* wooddoorblock */ + "q: 76: 2\n" /* redstonetorchon */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmaammmmmmm" + /* 1 */ "mmmmmmmbbmmmmmmm" + /* 2 */ "mmmmmmmbbmmmmmmm" + /* 3 */ "mmmmmmmbbmmmmmmm" + /* 4 */ "mmmmmmmbbmmmmmmm" + /* 5 */ "mmmmmmmbbmmmmmmm" + /* 6 */ "mmmmmmmbbmmmmmmm" + /* 7 */ "abbbbbbbbbbbbbba" + /* 8 */ "abbbbbbbbbbbbbba" + /* 9 */ "mmmmmmmbbmmmmmmm" + /* 10 */ "mmmmmmmbbmmmmmmm" + /* 11 */ "mmmmmmmbbmmmmmmm" + /* 12 */ "mmmmmmmbbmmmmmmm" + /* 13 */ "mmmmmmmbbmmmmmmm" + /* 14 */ "mmmmmmmbbmmmmmmm" + /* 15 */ "mmmmmmmaammmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmacdammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmb..bmmmmmm" + /* 3 */ "mmmmmmb..bmmmmmm" + /* 4 */ "mmmmmmb..bmmmmmm" + /* 5 */ "mmmmmmb..bmmmmmm" + /* 6 */ "abbbbbb..bbbbbba" + /* 7 */ "e..............f" + /* 8 */ "g..............f" + /* 9 */ "abbbbbb..bbbbbba" + /* 10 */ "mmmmmmb..bmmmmmm" + /* 11 */ "mmmmmmb..bmmmmmm" + /* 12 */ "mmmmmmb..bmmmmmm" + /* 13 */ "mmmmmmb..bmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmahhammmmmm" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaijammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmk..kmmmmmm" + /* 3 */ "mmmmmmk..kmmmmmm" + /* 4 */ "mmmmmmb..bmmmmmm" + /* 5 */ "mmmmmmbl.bmmmmmm" + /* 6 */ "abkkbbb..bbbkkba" + /* 7 */ "j.........n....i" + /* 8 */ "i....o.........p" + /* 9 */ "abkkbbb..bbbkkba" + /* 10 */ "mmmmmmb.qbmmmmmm" + /* 11 */ "mmmmmmb..bmmmmmm" + /* 12 */ "mmmmmmk..kmmmmmm" + /* 13 */ "mmmmmmk..kmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmapiammmmmm" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaaaammmmmm" + /* 1 */ "mmmmmmbbbbmmmmmm" + /* 2 */ "mmmmmmbbbbmmmmmm" + /* 3 */ "mmmmmmbbbbmmmmmm" + /* 4 */ "mmmmmmbbbbmmmmmm" + /* 5 */ "mmmmmmbbbbmmmmmm" + /* 6 */ "abbbbbbbbbbbbbba" + /* 7 */ "abbbbbbbbbbbbbba" + /* 8 */ "abbbbbbbbbbbbbba" + /* 9 */ "abbbbbbbbbbbbbba" + /* 10 */ "mmmmmmbbbbmmmmmm" + /* 11 */ "mmmmmmbbbbmmmmmm" + /* 12 */ "mmmmmmbbbbmmmmmm" + /* 13 */ "mmmmmmbbbbmmmmmm" + /* 14 */ "mmmmmmbbbbmmmmmm" + /* 15 */ "mmmmmmaaaammmmmm", + + // Connectors: + "1: 0, 1, 7: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 8: 4\n" /* Type -1, direction X- */ + "1: 7, 1, 15: 3\n" /* Type 1, direction Z+ */ + "-1: 8, 1, 15: 3\n" /* Type -1, direction Z+ */ + "1: 8, 1, 0: 2\n" /* Type 1, direction Z- */ + "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */ + "1: 15, 1, 8: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 7: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // CorridorCrossing + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // CorridorStairs: + // The data has been exported from the gallery Water, area index 32, ID 582, created by LO1ZB + { + // Size: + 16, 9, 4, // SizeX = 16, SizeY = 9, SizeZ = 4 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 8, 3, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 64: 2\n" /* wooddoorblock */ + "d: 53: 0\n" /* woodstairs */ + "e: 20: 0\n" /* glass */ + "f: 64: 9\n" /* wooddoorblock */ + "g: 64: 8\n" /* wooddoorblock */ + "h: 76: 4\n" /* redstonetorchon */ + "i: 64: 0\n" /* wooddoorblock */ + "j: 64: 7\n" /* wooddoorblock */ + "k: 76: 3\n" /* redstonetorchon */ + "l: 64:12\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "abbbbbbbmmmmmmmm" + /* 2 */ "abbbbbbbmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abbbbbbbmmmmmmmm" + /* 1 */ "c.....dbbmmmmmmm" + /* 2 */ "c.....dbbmmmmmmm" + /* 3 */ "abbbbbbbmmmmmmmm" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abeebbbbbmmmmmmm" + /* 1 */ "f......dbbmmmmmm" + /* 2 */ "g...h..dbbmmmmmm" + /* 3 */ "abeebbbbbmmmmmmm" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "abbbbbbbbbmmmmmm" + /* 1 */ "abbbb...dbbmmmmm" + /* 2 */ "abbbb...dbbmmmmm" + /* 3 */ "abbbbbbbbbmmmmmm" + + // Level 4 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmbbbbbmmmmmm" + /* 1 */ "mmmmmb...dbbmmmm" + /* 2 */ "mmmmmb...dbbmmmm" + /* 3 */ "mmmmmbbbbbmmmmmm" + + // Level 5 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmbbbbbmmmmm" + /* 1 */ "mmmmmmb...dbbbba" + /* 2 */ "mmmmmmb...dbbbba" + /* 3 */ "mmmmmmbbbbbmmmmm" + + // Level 6 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmbbbbbbbba" + /* 1 */ "mmmmmmmb.......i" + /* 2 */ "mmmmmmmb.......j" + /* 3 */ "mmmmmmmbbbbbbbba" + + // Level 7 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmbbbeebba" + /* 1 */ "mmmmmmmmb.k....g" + /* 2 */ "mmmmmmmmb......l" + /* 3 */ "mmmmmmmmbbbeebba" + + // Level 8 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmbbbbbba" + /* 1 */ "mmmmmmmmmbbbbbba" + /* 2 */ "mmmmmmmmmbbbbbba" + /* 3 */ "mmmmmmmmmbbbbbba", + + // Connectors: + "1: 0, 1, 1: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 2: 4\n" /* Type -1, direction X- */ + "1: 15, 6, 2: 5\n" /* Type 1, direction X+ */ + "-1: 15, 6, 1: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // CorridorStairs + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // CorridorTee: + // The data has been exported from the gallery Water, area index 29, ID 576, created by LO1ZB + { + // Size: + 16, 4, 10, // SizeX = 16, SizeY = 4, SizeZ = 10 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 3, 9, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 64: 3\n" /* wooddoorblock */ + "d: 64: 6\n" /* wooddoorblock */ + "e: 64: 5\n" /* wooddoorblock */ + "f: 64: 0\n" /* wooddoorblock */ + "g: 64: 2\n" /* wooddoorblock */ + "h: 64: 8\n" /* wooddoorblock */ + "i: 64:12\n" /* wooddoorblock */ + "j: 20: 0\n" /* glass */ + "k: 76: 1\n" /* redstonetorchon */ + "l: 76: 3\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */ + "n: 76: 4\n" /* redstonetorchon */ + "o: 64: 9\n" /* wooddoorblock */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmaammmmmmm" + /* 1 */ "mmmmmmmbbmmmmmmm" + /* 2 */ "mmmmmmmbbmmmmmmm" + /* 3 */ "mmmmmmmbbmmmmmmm" + /* 4 */ "mmmmmmmbbmmmmmmm" + /* 5 */ "mmmmmmmbbmmmmmmm" + /* 6 */ "mmmmmmmbbmmmmmmm" + /* 7 */ "abbbbbbbbbbbbbba" + /* 8 */ "abbbbbbbbbbbbbba" + /* 9 */ "mmmmmmmmmmmmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmacdammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmb..bmmmmmm" + /* 3 */ "mmmmmmb..bmmmmmm" + /* 4 */ "mmmmmmb..bmmmmmm" + /* 5 */ "mmmmmmb..bmmmmmm" + /* 6 */ "abbbbbb..bbbbbba" + /* 7 */ "e..............f" + /* 8 */ "g..............f" + /* 9 */ "abbbbbbbbbbbbbba" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmahiammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmj..jmmmmmm" + /* 3 */ "mmmmmmj..jmmmmmm" + /* 4 */ "mmmmmmb..bmmmmmm" + /* 5 */ "mmmmmmbk.bmmmmmm" + /* 6 */ "abjjbbb..bbbjjba" + /* 7 */ "i.........l....h" + /* 8 */ "h....n.........o" + /* 9 */ "abjjbbbjjbbbjjba" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaaaammmmmm" + /* 1 */ "mmmmmmbbbbmmmmmm" + /* 2 */ "mmmmmmbbbbmmmmmm" + /* 3 */ "mmmmmmbbbbmmmmmm" + /* 4 */ "mmmmmmbbbbmmmmmm" + /* 5 */ "mmmmmmbbbbmmmmmm" + /* 6 */ "abbbbbbbbbbbbbba" + /* 7 */ "abbbbbbbbbbbbbba" + /* 8 */ "abbbbbbbbbbbbbba" + /* 9 */ "abbbbbbbbbbbbbba", + + // Connectors: + "1: 0, 1, 7: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 8: 4\n" /* Type -1, direction X- */ + "1: 8, 1, 0: 2\n" /* Type 1, direction Z- */ + "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */ + "1: 15, 1, 8: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 7: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // CorridorTee + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingCorner: + // The data has been exported from the gallery Water, area index 40, ID 613, created by LO1ZB + { + // Size: + 14, 7, 14, // SizeX = 14, SizeY = 7, SizeZ = 14 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 13, 6, 13, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 0\n" /* wood */ + "b: 20: 0\n" /* glass */ + "c: 5: 5\n" /* wood */ + "d: 64: 0\n" /* wooddoorblock */ + "e: 64: 1\n" /* wooddoorblock */ + "f: 64: 8\n" /* wooddoorblock */ + "g: 64: 9\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmaaaammmmmm" + /* 2 */ "mmmaabbaammmmm" + /* 3 */ "mmaabbbbaammmm" + /* 4 */ "maabbbbbbaammm" + /* 5 */ "mabbbbbbbbaaac" + /* 6 */ "mabbbbbbbbaaac" + /* 7 */ "maabbbbbbaammm" + /* 8 */ "mmaabbbbaammmm" + /* 9 */ "mmmaabbaammmmm" + /* 10 */ "mmmmaaaammmmmm" + /* 11 */ "mmmmmaammmmmmm" + /* 12 */ "mmmmmaammmmmmm" + /* 13 */ "mmmmmccmmmmmmm" + + // Level 1 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmaammmmmmm" + /* 1 */ "mmmaa..aammmmm" + /* 2 */ "mmaa....aammmm" + /* 3 */ "maa......aammm" + /* 4 */ "ma........aaac" + /* 5 */ "a............d" + /* 6 */ "a............d" + /* 7 */ "ma........aaac" + /* 8 */ "maa......aammm" + /* 9 */ "mmaa....aammmm" + /* 10 */ "mmmaa..aammmmm" + /* 11 */ "mmmma..ammmmmm" + /* 12 */ "mmmma..ammmmmm" + /* 13 */ "mmmmceecmmmmmm" + + // Level 2 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmbbmmmmmmm" + /* 1 */ "mmmbb..bbmmmmm" + /* 2 */ "mmbb....bbmmmm" + /* 3 */ "mbb......bbmmm" + /* 4 */ "mb........bbac" + /* 5 */ "b............f" + /* 6 */ "b............g" + /* 7 */ "mb........bbac" + /* 8 */ "mbb......bbmmm" + /* 9 */ "mmbb....bbmmmm" + /* 10 */ "mmmbb..bbmmmmm" + /* 11 */ "mmmmb..bmmmmmm" + /* 12 */ "mmmma..ammmmmm" + /* 13 */ "mmmmcgfcmmmmmm" + + // Level 3 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmbbmmmmmmm" + /* 1 */ "mmmbb..bbmmmmm" + /* 2 */ "mmbb....bbmmmm" + /* 3 */ "mbb......bbmmm" + /* 4 */ "mb........bbac" + /* 5 */ "b..........bac" + /* 6 */ "b..........bac" + /* 7 */ "mb........bbac" + /* 8 */ "mbb......bbmmm" + /* 9 */ "mmbb....bbmmmm" + /* 10 */ "mmmbb..bbmmmmm" + /* 11 */ "mmmmbbbbmmmmmm" + /* 12 */ "mmmmaaaammmmmm" + /* 13 */ "mmmmccccmmmmmm" + + // Level 4 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmbbmmmmmmm" + /* 2 */ "mmmmb..bmmmmmm" + /* 3 */ "mmmb....bmmmmm" + /* 4 */ "mmb......bmmmm" + /* 5 */ "mb........bmmm" + /* 6 */ "mb........bmmm" + /* 7 */ "mmb......bmmmm" + /* 8 */ "mmmbb...bmmmmm" + /* 9 */ "mmmmb..bmmmmmm" + /* 10 */ "mmmmmbbmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm" + + // Level 5 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmbbmmmmmmm" + /* 3 */ "mmmmb..bmmmmmm" + /* 4 */ "mmmb....bmmmmm" + /* 5 */ "mmb......bmmmm" + /* 6 */ "mmb......bmmmm" + /* 7 */ "mmmb....bmmmmm" + /* 8 */ "mmmmb.bbmmmmmm" + /* 9 */ "mmmmmbbmmmmmmm" + /* 10 */ "mmmmmmmmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm" + + // Level 6 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmm" + /* 3 */ "mmmmmbbmmmmmmm" + /* 4 */ "mmmmbbbbmmmmmm" + /* 5 */ "mmmbbbbbbmmmmm" + /* 6 */ "mmmbbbbbbmmmmm" + /* 7 */ "mmmmbbbbmmmmmm" + /* 8 */ "mmmmmbbmmmmmmm" + /* 9 */ "mmmmmmmmmmmmmm" + /* 10 */ "mmmmmmmmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm", + + // Connectors: + "1: 13, 1, 6: 5\n" /* Type 1, direction X+ */ + "-1: 13, 1, 5: 5\n" /* Type -1, direction X+ */ + "1: 5, 1, 13: 3\n" /* Type 1, direction Z+ */ + "-1: 6, 1, 13: 3\n" /* Type -1, direction Z+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingCorner + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingCorridor: + // The data has been exported from the gallery Water, area index 27, ID 571, created by LO1ZB + { + // Size: + 16, 5, 6, // SizeX = 16, SizeY = 5, SizeZ = 6 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 4, 5, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 0\n" /* wood */ + "b: 5: 5\n" /* wood */ + "c: 20: 0\n" /* glass */ + "d: 64: 1\n" /* wooddoorblock */ + "e: 64: 0\n" /* wooddoorblock */ + "f: 64: 6\n" /* wooddoorblock */ + "g: 76: 3\n" /* redstonetorchon */ + "h: 64: 8\n" /* wooddoorblock */ + "i: 64:12\n" /* wooddoorblock */ + "j: 64: 9\n" /* wooddoorblock */ + "k: 76: 4\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmaaaaaaaaaaaamm" + /* 1 */ "mmaaaaaaaaaaaamm" + /* 2 */ "baaccccccccccaab" + /* 3 */ "baaccccccccccaab" + /* 4 */ "mmaaaaaaaaaaaamm" + /* 5 */ "mmmaaaaaaaaaammm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmaccccccccccamm" + /* 1 */ "ba............ab" + /* 2 */ "d..............e" + /* 3 */ "f..............e" + /* 4 */ "ba............ab" + /* 5 */ "mmaccccccccccamm" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmaccccccccccamm" + /* 1 */ "bag..........gab" + /* 2 */ "h..............h" + /* 3 */ "i..............j" + /* 4 */ "bak..........kab" + /* 5 */ "mmaccccccccccamm" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmaccccccccccamm" + /* 1 */ "ba............ab" + /* 2 */ "ba............ab" + /* 3 */ "ba............ab" + /* 4 */ "ba............ab" + /* 5 */ "mmaccccccccccamm" + + // Level 4 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmaaaaaaaaaammm" + /* 1 */ "mmaaaaaaaaaaaamm" + /* 2 */ "mmaccccccccccamm" + /* 3 */ "mmaccccccccccamm" + /* 4 */ "mmaaaaaaaaaaaamm" + /* 5 */ "mmmaaaaaaaaaammm", + + // Connectors: + "1: 0, 1, 2: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 3: 4\n" /* Type -1, direction X- */ + "1: 15, 1, 3: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 2: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingCorridor + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingCorridorBulge: + // The data has been exported from the gallery Water, area index 42, ID 615, created by LO1ZB + { + // Size: + 12, 8, 16, // SizeX = 12, SizeY = 8, SizeZ = 16 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 11, 7, 15, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 20: 0\n" /* glass */ + "d: 64: 3\n" /* wooddoorblock */ + "e: 64: 1\n" /* wooddoorblock */ + "f: 64: 8\n" /* wooddoorblock */ + "g: 64: 9\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmmaammmmm" + /* 1 */ "mmmmmbbmmmmm" + /* 2 */ "mmmmmbbmmmmm" + /* 3 */ "mmmmbbbbmmmm" + /* 4 */ "mmmbbccbbmmm" + /* 5 */ "mmbbccccbbmm" + /* 6 */ "mbbccccccbbm" + /* 7 */ "mbccccccccbm" + /* 8 */ "mbccccccccbm" + /* 9 */ "mbbccccccbbm" + /* 10 */ "mmbbccccbbmm" + /* 11 */ "mmmbbccbbmmm" + /* 12 */ "mmmmbbbbmmmm" + /* 13 */ "mmmmmbbmmmmm" + /* 14 */ "mmmmmbbmmmmm" + /* 15 */ "mmmmmaammmmm" + + // Level 1 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmaddammmm" + /* 1 */ "mmmmb..bmmmm" + /* 2 */ "mmmmb..bmmmm" + /* 3 */ "mmmbb..bbmmm" + /* 4 */ "mmbb....bbmm" + /* 5 */ "mbb......bbm" + /* 6 */ "mb........bm" + /* 7 */ "b..........b" + /* 8 */ "b..........b" + /* 9 */ "mb........bm" + /* 10 */ "mbb......bbm" + /* 11 */ "mmbb....bbmm" + /* 12 */ "mmmbb..bbmmm" + /* 13 */ "mmmmb..bmmmm" + /* 14 */ "mmmmb..bmmmm" + /* 15 */ "mmmmaeeammmm" + + // Level 2 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmaffammmm" + /* 1 */ "mmmmb..bmmmm" + /* 2 */ "mmmmc..cmmmm" + /* 3 */ "mmmcc..ccmmm" + /* 4 */ "mmcc....ccmm" + /* 5 */ "mcc......ccm" + /* 6 */ "mc........cm" + /* 7 */ "c..........c" + /* 8 */ "c..........c" + /* 9 */ "mc........cm" + /* 10 */ "mcc......ccm" + /* 11 */ "mmcc....ccmm" + /* 12 */ "mmmcc..ccmmm" + /* 13 */ "mmmmc..cmmmm" + /* 14 */ "mmmmb..bmmmm" + /* 15 */ "mmmmagfammmm" + + // Level 3 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmaaaammmm" + /* 1 */ "mmmmbbbbmmmm" + /* 2 */ "mmmmccccmmmm" + /* 3 */ "mmmcc..ccmmm" + /* 4 */ "mmcc....ccmm" + /* 5 */ "mcc......ccm" + /* 6 */ "mc........cm" + /* 7 */ "c..........c" + /* 8 */ "c..........c" + /* 9 */ "mc........cm" + /* 10 */ "mcc......ccm" + /* 11 */ "mmcc....ccmm" + /* 12 */ "mmmcc..ccmmm" + /* 13 */ "mmmmccccmmmm" + /* 14 */ "mmmmbbbbmmmm" + /* 15 */ "mmmmaaaammmm" + + // Level 4 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmm" + /* 3 */ "mmmmmccmmmmm" + /* 4 */ "mmmmc..cmmmm" + /* 5 */ "mmmc....cmmm" + /* 6 */ "mmc......cmm" + /* 7 */ "mc........cm" + /* 8 */ "mc........cm" + /* 9 */ "mmc......cmm" + /* 10 */ "mmmcc...cmmm" + /* 11 */ "mmmmc..cmmmm" + /* 12 */ "mmmmmccmmmmm" + /* 13 */ "mmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmm" + + // Level 5 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmm" + /* 4 */ "mmmmmccmmmmm" + /* 5 */ "mmmmc..cmmmm" + /* 6 */ "mmmc....cmmm" + /* 7 */ "mmc......cmm" + /* 8 */ "mmc......cmm" + /* 9 */ "mmmc....cmmm" + /* 10 */ "mmmmc.ccmmmm" + /* 11 */ "mmmmmccmmmmm" + /* 12 */ "mmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmm" + + // Level 6 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmm" + /* 4 */ "mmmmmmmmmmmm" + /* 5 */ "mmmmmccmmmmm" + /* 6 */ "mmmmccccmmmm" + /* 7 */ "mmmccccccmmm" + /* 8 */ "mmmccccccmmm" + /* 9 */ "mmmmccccmmmm" + /* 10 */ "mmmmmccmmmmm" + /* 11 */ "mmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmm" + + // Level 7 + /* z\x* 11 */ + /* * 012345678901 */ + /* 0 */ "mmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmm" + /* 4 */ "mmmmmmmmmmmm" + /* 5 */ "mmmmmmmmmmmm" + /* 6 */ "mmmmmmmmmmmm" + /* 7 */ "mmmmmmmmmmmm" + /* 8 */ "mmmmmmmmmmmm" + /* 9 */ "mmmmmmmmmmmm" + /* 10 */ "mmmmmmmmmmmm" + /* 11 */ "mmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmm", + + // Connectors: + "1: 6, 1, 0: 2\n" /* Type 1, direction Z- */ + "-1: 5, 1, 0: 2\n" /* Type -1, direction Z- */ + "1: 5, 1, 15: 3\n" /* Type 1, direction Z+ */ + "-1: 6, 1, 15: 3\n" /* Type -1, direction Z+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingCorridorBulge + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingCrossing: + // The data has been exported from the gallery Water, area index 38, ID 611, created by LO1ZB + { + // Size: + 16, 7, 16, // SizeX = 16, SizeY = 7, SizeZ = 16 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 6, 15, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 20: 0\n" /* glass */ + "d: 64: 3\n" /* wooddoorblock */ + "e: 64: 2\n" /* wooddoorblock */ + "f: 64: 0\n" /* wooddoorblock */ + "g: 64: 1\n" /* wooddoorblock */ + "h: 64: 8\n" /* wooddoorblock */ + "i: 64: 9\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmaammmmmmm" + /* 1 */ "mmmmmmmbbmmmmmmm" + /* 2 */ "mmmmmmmbbmmmmmmm" + /* 3 */ "mmmmmmbbbbmmmmmm" + /* 4 */ "mmmmmbbccbbmmmmm" + /* 5 */ "mmmmbbccccbbmmmm" + /* 6 */ "mmmbbccccccbbmmm" + /* 7 */ "abbbccccccccbbba" + /* 8 */ "abbbccccccccbbba" + /* 9 */ "mmmbbccccccbbmmm" + /* 10 */ "mmmmbbccccbbmmmm" + /* 11 */ "mmmmmbbccbbmmmmm" + /* 12 */ "mmmmmmbbbbmmmmmm" + /* 13 */ "mmmmmmmbbmmmmmmm" + /* 14 */ "mmmmmmmbbmmmmmmm" + /* 15 */ "mmmmmmmaammmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaddammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmb..bmmmmmm" + /* 3 */ "mmmmmbb..bbmmmmm" + /* 4 */ "mmmmbb....bbmmmm" + /* 5 */ "mmmbb......bbmmm" + /* 6 */ "abbb........bbba" + /* 7 */ "e..............f" + /* 8 */ "e..............f" + /* 9 */ "abbb........bbba" + /* 10 */ "mmmbb......bbmmm" + /* 11 */ "mmmmbb....bbmmmm" + /* 12 */ "mmmmmbb..bbmmmmm" + /* 13 */ "mmmmmmb..bmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmaggammmmmm" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmahiammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmc..cmmmmmm" + /* 3 */ "mmmmmcc..ccmmmmm" + /* 4 */ "mmmmcc....ccmmmm" + /* 5 */ "mmmcc......ccmmm" + /* 6 */ "abcc........ccba" + /* 7 */ "i..............h" + /* 8 */ "h..............i" + /* 9 */ "abcc........ccba" + /* 10 */ "mmmcc......ccmmm" + /* 11 */ "mmmmcc....ccmmmm" + /* 12 */ "mmmmmcc..ccmmmmm" + /* 13 */ "mmmmmmc..cmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmaihammmmmm" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaaaammmmmm" + /* 1 */ "mmmmmmbbbbmmmmmm" + /* 2 */ "mmmmmmccccmmmmmm" + /* 3 */ "mmmmmcc..ccmmmmm" + /* 4 */ "mmmmcc....ccmmmm" + /* 5 */ "mmmcc......ccmmm" + /* 6 */ "abcc........ccba" + /* 7 */ "abc..........cba" + /* 8 */ "abc..........cba" + /* 9 */ "abcc........ccba" + /* 10 */ "mmmcc......ccmmm" + /* 11 */ "mmmmcc....ccmmmm" + /* 12 */ "mmmmmcc..ccmmmmm" + /* 13 */ "mmmmmmccccmmmmmm" + /* 14 */ "mmmmmmbbbbmmmmmm" + /* 15 */ "mmmmmmaaaammmmmm" + + // Level 4 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmccmmmmmmm" + /* 4 */ "mmmmmmc..cmmmmmm" + /* 5 */ "mmmmmc....cmmmmm" + /* 6 */ "mmmmc......cmmmm" + /* 7 */ "mmmc........cmmm" + /* 8 */ "mmmc........cmmm" + /* 9 */ "mmmmc......cmmmm" + /* 10 */ "mmmmmcc...cmmmmm" + /* 11 */ "mmmmmmc..cmmmmmm" + /* 12 */ "mmmmmmmccmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm" + + // Level 5 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmmmm" + /* 4 */ "mmmmmmmccmmmmmmm" + /* 5 */ "mmmmmmc..cmmmmmm" + /* 6 */ "mmmmmc....cmmmmm" + /* 7 */ "mmmmc......cmmmm" + /* 8 */ "mmmmc......cmmmm" + /* 9 */ "mmmmmc....cmmmmm" + /* 10 */ "mmmmmmc.ccmmmmmm" + /* 11 */ "mmmmmmmccmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm" + + // Level 6 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmmmm" + /* 4 */ "mmmmmmmmmmmmmmmm" + /* 5 */ "mmmmmmmccmmmmmmm" + /* 6 */ "mmmmmmccccmmmmmm" + /* 7 */ "mmmmmccccccmmmmm" + /* 8 */ "mmmmmccccccmmmmm" + /* 9 */ "mmmmmmccccmmmmmm" + /* 10 */ "mmmmmmmccmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm", + + // Connectors: + "1: 0, 1, 7: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 8: 4\n" /* Type -1, direction X- */ + "1: 8, 1, 0: 2\n" /* Type 1, direction Z- */ + "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */ + "1: 15, 1, 8: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 7: 5\n" /* Type -1, direction X+ */ + "1: 7, 1, 15: 3\n" /* Type 1, direction Z+ */ + "-1: 8, 1, 15: 3\n" /* Type -1, direction Z+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingCrossing + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingEnd: + // The data has been exported from the gallery Water, area index 41, ID 614, created by LO1ZB + { + // Size: + 14, 7, 12, // SizeX = 14, SizeY = 7, SizeZ = 12 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 13, 6, 11, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 0\n" /* wood */ + "b: 20: 0\n" /* glass */ + "c: 5: 5\n" /* wood */ + "d: 64: 0\n" /* wooddoorblock */ + "e: 64: 8\n" /* wooddoorblock */ + "f: 64: 9\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmaaaammmmmm" + /* 2 */ "mmmaabbaammmmm" + /* 3 */ "mmaabbbbaammmm" + /* 4 */ "maabbbbbbaammm" + /* 5 */ "mabbbbbbbbaaac" + /* 6 */ "mabbbbbbbbaaac" + /* 7 */ "maabbbbbbaammm" + /* 8 */ "mmaabbbbaammmm" + /* 9 */ "mmmaabbaammmmm" + /* 10 */ "mmmmaaaammmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + + // Level 1 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmaammmmmmm" + /* 1 */ "mmmaa..aammmmm" + /* 2 */ "mmaa....aammmm" + /* 3 */ "maa......aammm" + /* 4 */ "ma........aaac" + /* 5 */ "a............d" + /* 6 */ "a............d" + /* 7 */ "ma........aaac" + /* 8 */ "maa......aammm" + /* 9 */ "mmaa....aammmm" + /* 10 */ "mmmaa..aammmmm" + /* 11 */ "mmmmmaammmmmmm" + + // Level 2 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmbbmmmmmmm" + /* 1 */ "mmmbb..bbmmmmm" + /* 2 */ "mmbb....bbmmmm" + /* 3 */ "mbb......bbmmm" + /* 4 */ "mb........bbac" + /* 5 */ "b............e" + /* 6 */ "b............f" + /* 7 */ "mb........bbac" + /* 8 */ "mbb......bbmmm" + /* 9 */ "mmbb....bbmmmm" + /* 10 */ "mmmbb..bbmmmmm" + /* 11 */ "mmmmmbbmmmmmmm" + + // Level 3 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmbbmmmmmmm" + /* 1 */ "mmmbb..bbmmmmm" + /* 2 */ "mmbb....bbmmmm" + /* 3 */ "mbb......bbmmm" + /* 4 */ "mb........bbac" + /* 5 */ "b..........bac" + /* 6 */ "b..........bac" + /* 7 */ "mb........bbac" + /* 8 */ "mbb......bbmmm" + /* 9 */ "mmbb....bbmmmm" + /* 10 */ "mmmbb..bbmmmmm" + /* 11 */ "mmmmmbbmmmmmmm" + + // Level 4 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmbbmmmmmmm" + /* 2 */ "mmmmb..bmmmmmm" + /* 3 */ "mmmb....bmmmmm" + /* 4 */ "mmb......bmmmm" + /* 5 */ "mb........bmmm" + /* 6 */ "mb........bmmm" + /* 7 */ "mmb......bmmmm" + /* 8 */ "mmmbb...bmmmmm" + /* 9 */ "mmmmb..bmmmmmm" + /* 10 */ "mmmmmbbmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + + // Level 5 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmbbmmmmmmm" + /* 3 */ "mmmmb..bmmmmmm" + /* 4 */ "mmmb....bmmmmm" + /* 5 */ "mmb......bmmmm" + /* 6 */ "mmb......bmmmm" + /* 7 */ "mmmb....bmmmmm" + /* 8 */ "mmmmb.bbmmmmmm" + /* 9 */ "mmmmmbbmmmmmmm" + /* 10 */ "mmmmmmmmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + + // Level 6 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmm" + /* 3 */ "mmmmmbbmmmmmmm" + /* 4 */ "mmmmbbbbmmmmmm" + /* 5 */ "mmmbbbbbbmmmmm" + /* 6 */ "mmmbbbbbbmmmmm" + /* 7 */ "mmmmbbbbmmmmmm" + /* 8 */ "mmmmmbbmmmmmmm" + /* 9 */ "mmmmmmmmmmmmmm" + /* 10 */ "mmmmmmmmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm", + + // Connectors: + "1: 13, 1, 6: 5\n" /* Type 1, direction X+ */ + "-1: 13, 1, 5: 5\n" /* Type -1, direction X+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingEnd + + + + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // ViewingTee: + // The data has been exported from the gallery Water, area index 39, ID 612, created by LO1ZB + { + // Size: + 14, 7, 17, // SizeX = 14, SizeY = 7, SizeZ = 17 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 13, 6, 16, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 20: 0\n" /* glass */ + "d: 1: 0\n" /* stone */ + "e: 64: 3\n" /* wooddoorblock */ + "f: 64: 0\n" /* wooddoorblock */ + "g: 64: 1\n" /* wooddoorblock */ + "h: 64: 8\n" /* wooddoorblock */ + "m: 19: 0\n" /* sponge */, + + // Block data: + // Level 0 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmaammmmmmm" + /* 1 */ "mmmmmbbmmmmmmm" + /* 2 */ "mmmmmbbmmmmmmm" + /* 3 */ "mmmmbbbbmmmmmm" + /* 4 */ "mmmbbccbbmmmmm" + /* 5 */ "mmbbccccbbmmmm" + /* 6 */ "mbbccccccbbmmm" + /* 7 */ "mbccccccccbbba" + /* 8 */ "mbccccccccbbba" + /* 9 */ "mbbccccccbbmmm" + /* 10 */ "mmbbccccbbmmmm" + /* 11 */ "mmmbbccbbmmmmm" + /* 12 */ "mmmmbbbbmmmmmm" + /* 13 */ "mmmmmbbmmmmmmm" + /* 14 */ "mmmmmbbmmmmmmm" + /* 15 */ "mmmmmaammmmmmm" + /* 16 */ "dddddddddddddd" + + // Level 1 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmaeeammmmmm" + /* 1 */ "mmmmb..bmmmmmm" + /* 2 */ "mmmmb..bmmmmmm" + /* 3 */ "mmmbb..bbmmmmm" + /* 4 */ "mmbb....bbmmmm" + /* 5 */ "mbb......bbmmm" + /* 6 */ "mb........bbba" + /* 7 */ "b............f" + /* 8 */ "b............f" + /* 9 */ "mb........bbba" + /* 10 */ "mbb......bbmmm" + /* 11 */ "mmbb....bbmmmm" + /* 12 */ "mmmbb..bbmmmmm" + /* 13 */ "mmmmb..bmmmmmm" + /* 14 */ "mmmmb..bmmmmmm" + /* 15 */ "mmmmaggammmmmm" + /* 16 */ "dddddddddddddd" + + // Level 2 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmahhammmmmm" + /* 1 */ "mmmmb..bmmmmmm" + /* 2 */ "mmmmc..cmmmmmm" + /* 3 */ "mmmcc..ccmmmmm" + /* 4 */ "mmcc....ccmmmm" + /* 5 */ "mcc......ccmmm" + /* 6 */ "mc........ccba" + /* 7 */ "c............h" + /* 8 */ "c............h" + /* 9 */ "mc........ccba" + /* 10 */ "mcc......ccmmm" + /* 11 */ "mmcc....ccmmmm" + /* 12 */ "mmmcc..ccmmmmm" + /* 13 */ "mmmmc..cmmmmmm" + /* 14 */ "mmmmb..bmmmmmm" + /* 15 */ "mmmmahhammmmmm" + /* 16 */ "dddddddddddddd" + + // Level 3 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmaaaammmmmm" + /* 1 */ "mmmmbbbbmmmmmm" + /* 2 */ "mmmmccccmmmmmm" + /* 3 */ "mmmcc..ccmmmmm" + /* 4 */ "mmcc....ccmmmm" + /* 5 */ "mcc......ccmmm" + /* 6 */ "mc........ccba" + /* 7 */ "c..........cba" + /* 8 */ "c..........cba" + /* 9 */ "mc........ccba" + /* 10 */ "mcc......ccmmm" + /* 11 */ "mmcc....ccmmmm" + /* 12 */ "mmmcc..ccmmmmm" + /* 13 */ "mmmmccccmmmmmm" + /* 14 */ "mmmmbbbbmmmmmm" + /* 15 */ "mmmmaaaammmmmm" + /* 16 */ "dddddddddddddd" + + // Level 4 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmm" + /* 3 */ "mmmmmccmmmmmmm" + /* 4 */ "mmmmc..cmmmmmm" + /* 5 */ "mmmc....cmmmmm" + /* 6 */ "mmc......cmmmm" + /* 7 */ "mc........cmmm" + /* 8 */ "mc........cmmm" + /* 9 */ "mmc......cmmmm" + /* 10 */ "mmmcc...cmmmmm" + /* 11 */ "mmmmc..cmmmmmm" + /* 12 */ "mmmmmccmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmm" + /* 16 */ "dddddddddddddd" + + // Level 5 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmm" + /* 4 */ "mmmmmccmmmmmmm" + /* 5 */ "mmmmc..cmmmmmm" + /* 6 */ "mmmc....cmmmmm" + /* 7 */ "mmc......cmmmm" + /* 8 */ "mmc......cmmmm" + /* 9 */ "mmmc....cmmmmm" + /* 10 */ "mmmmc.ccmmmmmm" + /* 11 */ "mmmmmccmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmm" + /* 16 */ "dddddddddddddd" + + // Level 6 + /* z\x* 1111 */ + /* * 01234567890123 */ + /* 0 */ "mmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmm" + /* 4 */ "mmmmmmmmmmmmmm" + /* 5 */ "mmmmmccmmmmmmm" + /* 6 */ "mmmmccccmmmmmm" + /* 7 */ "mmmccccccmmmmm" + /* 8 */ "mmmccccccmmmmm" + /* 9 */ "mmmmccccmmmmmm" + /* 10 */ "mmmmmccmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmm" + /* 16 */ "dddddddddddddd", + + // Connectors: + "", + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // ViewingTee +}; // g_UnderwaterBasePrefabs + + + + + + +const cPrefab::sDef g_UnderwaterBaseStartingPrefabs[] = +{ + /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + // CentralRoom: + // The data has been exported from the gallery Water, area index 24, ID 564, created by xoft + { + // Size: + 16, 7, 16, // SizeX = 16, SizeY = 7, SizeZ = 16 + + // Hitbox (relative to bounding box): + 0, 0, 0, // MinX, MinY, MinZ + 15, 6, 15, // MaxX, MaxY, MaxZ + + // Block definitions: + ".: 0: 0\n" /* air */ + "a: 5: 5\n" /* wood */ + "b: 5: 0\n" /* wood */ + "c: 20: 0\n" /* glass */ + "d: 64: 3\n" /* wooddoorblock */ + "e: 64: 2\n" /* wooddoorblock */ + "f: 64: 0\n" /* wooddoorblock */ + "g: 64: 1\n" /* wooddoorblock */ + "h: 64: 8\n" /* wooddoorblock */ + "i: 64: 9\n" /* wooddoorblock */ + "j: 76: 3\n" /* redstonetorchon */ + "k: 76: 1\n" /* redstonetorchon */ + "l: 76: 2\n" /* redstonetorchon */ + "m: 19: 0\n" /* sponge */ + "n: 76: 4\n" /* redstonetorchon */ + "o:125: 8\n" /* woodendoubleslab */, + + // Block data: + // Level 0 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmaammmmmmm" + /* 1 */ "mmmmmmmbbmmmmmmm" + /* 2 */ "mmmmmmmbbmmmmmmm" + /* 3 */ "mmmmmmbbbbmmmmmm" + /* 4 */ "mmmmmbbbbbbmmmmm" + /* 5 */ "mmmmbbbccbbbmmmm" + /* 6 */ "mmmbbbccccbbbmmm" + /* 7 */ "abbbbccccccbbbba" + /* 8 */ "abbbbccccccbbbba" + /* 9 */ "mmmbbbccccbbbmmm" + /* 10 */ "mmmmbbbccbbbmmmm" + /* 11 */ "mmmmmbbbbbbmmmmm" + /* 12 */ "mmmmmmbbbbmmmmmm" + /* 13 */ "mmmmmmmbbmmmmmmm" + /* 14 */ "mmmmmmmbbmmmmmmm" + /* 15 */ "mmmmmmmaammmmmmm" + + // Level 1 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaddammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmb..bmmmmmm" + /* 3 */ "mmmmmbb..bbmmmmm" + /* 4 */ "mmmmbb....bbmmmm" + /* 5 */ "mmmbb......bbmmm" + /* 6 */ "abbb........bbba" + /* 7 */ "e..............f" + /* 8 */ "e..............f" + /* 9 */ "abbb........bbba" + /* 10 */ "mmmbb......bbmmm" + /* 11 */ "mmmmbb....bbmmmm" + /* 12 */ "mmmmmbb..bbmmmmm" + /* 13 */ "mmmmmmb..bmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmaggammmmmm" + + // Level 2 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmahiammmmmm" + /* 1 */ "mmmmmmb..bmmmmmm" + /* 2 */ "mmmmmmb..bmmmmmm" + /* 3 */ "mmmmmcc..ccmmmmm" + /* 4 */ "mmmmcc....ccmmmm" + /* 5 */ "mmmcc......ccmmm" + /* 6 */ "abbc........cbba" + /* 7 */ "h..............h" + /* 8 */ "h..............i" + /* 9 */ "abbc........cbba" + /* 10 */ "mmmcc......ccmmm" + /* 11 */ "mmmmcc....ccmmmm" + /* 12 */ "mmmmmcc..ccmmmmm" + /* 13 */ "mmmmmmb..bmmmmmm" + /* 14 */ "mmmmmmb..bmmmmmm" + /* 15 */ "mmmmmmaihammmmmm" + + // Level 3 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmaaaammmmmm" + /* 1 */ "mmmmmmbbbbmmmmmm" + /* 2 */ "mmmmmmbbbbmmmmmm" + /* 3 */ "mmmmmbb..bbmmmmm" + /* 4 */ "mmmmbb....bbmmmm" + /* 5 */ "mmmbb......bbmmm" + /* 6 */ "abbb........bbba" + /* 7 */ "abb..........bba" + /* 8 */ "abb..........bba" + /* 9 */ "abbb........bbba" + /* 10 */ "mmmbb......bbmmm" + /* 11 */ "mmmmbb....bbmmmm" + /* 12 */ "mmmmmbb..bbmmmmm" + /* 13 */ "mmmmmmbbbbmmmmmm" + /* 14 */ "mmmmmmbbbbmmmmmm" + /* 15 */ "mmmmmmaaaammmmmm" + + // Level 4 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmbbmmmmmmm" + /* 4 */ "mmmmmmbjjbmmmmmm" + /* 5 */ "mmmmmb....bmmmmm" + /* 6 */ "mmmmb......bmmmm" + /* 7 */ "mmmbk......lbmmm" + /* 8 */ "mmmbk......lbmmm" + /* 9 */ "mmmmb......bmmmm" + /* 10 */ "mmmmmb....bmmmmm" + /* 11 */ "mmmmmmbnnbmmmmmm" + /* 12 */ "mmmmmmmbbmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm" + + // Level 5 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmmmm" + /* 4 */ "mmmmmmmbbmmmmmmm" + /* 5 */ "mmmmmmb..bmmmmmm" + /* 6 */ "mmmmmb....bmmmmm" + /* 7 */ "mmmmb......bmmmm" + /* 8 */ "mmmmb......bmmmm" + /* 9 */ "mmmmmb....bmmmmm" + /* 10 */ "mmmmmmboobmmmmmm" + /* 11 */ "mmmmmmmbbmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm" + + // Level 6 + /* z\x* 111111 */ + /* * 0123456789012345 */ + /* 0 */ "mmmmmmmmmmmmmmmm" + /* 1 */ "mmmmmmmmmmmmmmmm" + /* 2 */ "mmmmmmmmmmmmmmmm" + /* 3 */ "mmmmmmmmmmmmmmmm" + /* 4 */ "mmmmmmmmmmmmmmmm" + /* 5 */ "mmmmmmmbbmmmmmmm" + /* 6 */ "mmmmmmbbbbmmmmmm" + /* 7 */ "mmmmmbbccbbmmmmm" + /* 8 */ "mmmmmbbccbbmmmmm" + /* 9 */ "mmmmmmbbbbmmmmmm" + /* 10 */ "mmmmmmmbbmmmmmmm" + /* 11 */ "mmmmmmmmmmmmmmmm" + /* 12 */ "mmmmmmmmmmmmmmmm" + /* 13 */ "mmmmmmmmmmmmmmmm" + /* 14 */ "mmmmmmmmmmmmmmmm" + /* 15 */ "mmmmmmmmmmmmmmmm", + + // Connectors: + "1: 0, 1, 7: 4\n" /* Type 1, direction X- */ + "-1: 0, 1, 8: 4\n" /* Type -1, direction X- */ + "-1: 7, 1, 0: 2\n" /* Type -1, direction Z- */ + "1: 8, 1, 0: 2\n" /* Type 1, direction Z- */ + "1: 15, 1, 8: 5\n" /* Type 1, direction X+ */ + "-1: 15, 1, 7: 5\n" /* Type -1, direction X+ */ + "1: 7, 1, 15: 3\n" /* Type 1, direction Z+ */ + "-1: 8, 1, 15: 3\n" /* Type -1, direction Z+ */, + + // AllowedRotations: + 7, /* 1, 2, 3 CCW rotation allowed */ + + // Merge strategy: + cBlockArea::msSpongePrint, + + // ShouldExtendFloor: + true, + + // DefaultWeight: + 100, + + // DepthWeight: + "", + + // AddWeightIfSame: + 0, + + // MoveToGround: + false, + }, // CentralRoom +}; + + + + + +// The prefab counts: + +const size_t g_UnderwaterBasePrefabsCount = ARRAYCOUNT(g_UnderwaterBasePrefabs); + +const size_t g_UnderwaterBaseStartingPrefabsCount = ARRAYCOUNT(g_UnderwaterBaseStartingPrefabs); + diff --git a/src/Generating/Prefabs/UnderwaterBasePrefabs.h b/src/Generating/Prefabs/UnderwaterBasePrefabs.h new file mode 100644 index 000000000..d7b248bb8 --- /dev/null +++ b/src/Generating/Prefabs/UnderwaterBasePrefabs.h @@ -0,0 +1,15 @@ + +// UnderwaterBasePrefabs.h + +// Declares the prefabs in the group UnderwaterBase + +#include "../Prefab.h" + + + + + +extern const cPrefab::sDef g_UnderwaterBasePrefabs[]; +extern const cPrefab::sDef g_UnderwaterBaseStartingPrefabs[]; +extern const size_t g_UnderwaterBasePrefabsCount; +extern const size_t g_UnderwaterBaseStartingPrefabsCount; diff --git a/src/Generating/UnderwaterBaseGen.cpp b/src/Generating/UnderwaterBaseGen.cpp new file mode 100644 index 000000000..ff6f17dde --- /dev/null +++ b/src/Generating/UnderwaterBaseGen.cpp @@ -0,0 +1,142 @@ + +// UnderwaterBaseGen.cpp + +// Implements the cUnderwaterBaseGen class representing the underwater base generator + +#include "Globals.h" +#include "UnderwaterBaseGen.h" +#include "Prefabs/UnderwaterBasePrefabs.h" +#include "PieceGenerator.h" + + + + + +static cPrefabPiecePool g_UnderwaterBase(g_UnderwaterBasePrefabs, g_UnderwaterBasePrefabsCount, g_UnderwaterBaseStartingPrefabs, g_UnderwaterBaseStartingPrefabsCount); + + + + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cUnderwaterBaseGen::cUnderwaterBase: + +class cUnderwaterBaseGen::cUnderwaterBase : + public cGridStructGen::cStructure +{ + typedef cGridStructGen::cStructure super; + +public: + cUnderwaterBase( + int a_Seed, + int a_OriginX, int a_OriginZ, + int a_MaxDepth, + int a_MaxSize + ) : + super(a_OriginX, a_OriginZ), + m_Seed(a_Seed), + m_Noise(a_Seed), + m_MaxSize(a_MaxSize), + m_Borders(a_OriginX - a_MaxSize, 0, a_OriginZ - a_MaxSize, a_OriginX + a_MaxSize, 255, a_OriginZ + a_MaxSize) + { + // Generate the pieces for this base: + cBFSPieceGenerator pg(g_UnderwaterBase, a_Seed); + pg.PlacePieces(a_OriginX, 50, a_OriginZ, a_MaxDepth, m_Pieces); + if (m_Pieces.empty()) + { + return; + } + } + + ~cUnderwaterBase() + { + cPieceGenerator::FreePieces(m_Pieces); + } + +protected: + /** Seed for the random functions */ + int m_Seed; + + /** The noise used as a pseudo-random generator */ + cNoise m_Noise; + + /** Maximum size, in X/Z blocks, of the village (radius from the origin) */ + int m_MaxSize; + + /** Borders of the vilalge - no item may reach out of this cuboid. */ + cCuboid m_Borders; + + /** The village pieces, placed by the generator. */ + cPlacedPieces m_Pieces; + + + // cGridStructGen::cStructure overrides: + virtual void DrawIntoChunk(cChunkDesc & a_Chunk) override + { + for (cPlacedPieces::iterator itr = m_Pieces.begin(), end = m_Pieces.end(); itr != end; ++itr) + { + cPrefab & Prefab = (cPrefab &)((*itr)->GetPiece()); + Prefab.Draw(a_Chunk, *itr); + } // for itr - m_PlacedPieces[] + } +} ; + + + + + +/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// +// cUnderwaterBaseGen: + + + + + +cUnderwaterBaseGen::cUnderwaterBaseGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize, cBiomeGen & a_BiomeGen) : + super(a_Seed, a_GridSize, a_GridSize, a_MaxSize, a_MaxSize, 100), + m_Noise(a_Seed + 1000), + m_MaxDepth(a_MaxDepth), + m_MaxSize(a_MaxSize), + m_BiomeGen(a_BiomeGen) +{ +} + + + + + +cGridStructGen::cStructurePtr cUnderwaterBaseGen::CreateStructure(int a_OriginX, int a_OriginZ) +{ + // Generate the biomes for the chunk surrounding the origin: + int ChunkX, ChunkZ; + cChunkDef::BlockToChunk(a_OriginX, a_OriginZ, ChunkX, ChunkZ); + cChunkDef::BiomeMap Biomes; + m_BiomeGen.GenBiomes(ChunkX, ChunkZ, Biomes); + + // Check if all the biomes are ocean: + // If just one is not, no base is created, because it's likely that an unfriendly biome is too close + for (size_t i = 0; i < ARRAYCOUNT(Biomes); i++) + { + switch (Biomes[i]) + { + case biOcean: + case biDeepOcean: + { + // These biomes allow underwater bases + break; + } + default: + { + // base-unfriendly biome, bail out with zero structure: + return cStructurePtr(); + } + } // switch (Biomes[i]) + } // for i - Biomes[] + + // Create a base based on the chosen prefabs: + return cStructurePtr(new cUnderwaterBase(m_Seed, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize)); +} + + + + diff --git a/src/Generating/UnderwaterBaseGen.h b/src/Generating/UnderwaterBaseGen.h new file mode 100644 index 000000000..0aefbb4c7 --- /dev/null +++ b/src/Generating/UnderwaterBaseGen.h @@ -0,0 +1,50 @@ + +// UnderwaterBaseGen.h + +// Declares the cUnderwaterBaseGen class representing the underwater base generator + + + + + +#pragma once + +#include "GridStructGen.h" +#include "PrefabPiecePool.h" + + + + + +class cUnderwaterBaseGen : + public cGridStructGen +{ + typedef cGridStructGen super; + +public: + cUnderwaterBaseGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize, cBiomeGen & a_BiomeGen); + +protected: + class cUnderwaterBase; // fwd: UnderwaterBaseGen.cpp + + + /** The noise used for generating random numbers */ + cNoise m_Noise; + + /** Maximum depth of the generator tree*/ + int m_MaxDepth; + + /** Maximum size, in X/Z blocks, of the base (radius from the origin) */ + int m_MaxSize; + + /** The underlying biome generator that defines whether the base is created or not */ + cBiomeGen & m_BiomeGen; + + + // cGridStructGen overrides: + virtual cStructurePtr CreateStructure(int a_OriginX, int a_OriginZ) override; +} ; + + + +