summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormadmaxoft <github@xoft.cz>2014-05-15 00:14:06 +0200
committermadmaxoft <github@xoft.cz>2014-05-15 00:14:06 +0200
commitf5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf (patch)
tree233554d2d2267eba3484113698c0ebef37f9610a
parentcPrefab can be constructed in code. (diff)
downloadcuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar.gz
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar.bz2
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar.lz
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar.xz
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.tar.zst
cuberite-f5fdbdaf29738f51fdb8a4a0e5aa78631c6540cf.zip
-rw-r--r--src/Generating/ComposableGenerator.cpp9
-rw-r--r--src/Generating/Prefabs/PlainsVillagePrefabs.cpp416
-rw-r--r--src/Generating/Prefabs/SandVillagePrefabs.cpp185
-rw-r--r--src/Generating/VillageGen.cpp196
-rw-r--r--src/Generating/VillageGen.h12
5 files changed, 406 insertions, 412 deletions
diff --git a/src/Generating/ComposableGenerator.cpp b/src/Generating/ComposableGenerator.cpp
index 2e886336f..1bb836684 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 "VillageGen.h"
@@ -32,6 +33,7 @@
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// cTerrainCompositionGen:
+
cTerrainCompositionGen * cTerrainCompositionGen::CreateCompositionGen(cIniFile & a_IniFile, cBiomeGen & a_BiomeGen, cTerrainHeightGen & a_HeightGen, int a_Seed)
{
AString CompoGenName = a_IniFile.GetValueSet("Generator", "CompositionGen", "");
@@ -404,6 +406,13 @@ void cComposableGenerator::InitFinishGens(cIniFile & a_IniFile)
{
m_FinishGens.push_back(new cStructGenTrees(Seed, m_BiomeGen, m_HeightGen, m_CompositionGen));
}
+ else if (NoCaseCompare(*itr, "Villages") == 0)
+ {
+ int GridSize = a_IniFile.GetValueSetI("Generator", "VillageGridSize", 256);
+ int MaxDepth = a_IniFile.GetValueSetI("Generator", "VillageMaxDepth", 7);
+ int MaxSize = a_IniFile.GetValueSetI("Generator", "VillageMaxSize", 128);
+ m_FinishGens.push_back(new cVillageGen(Seed, GridSize, MaxDepth, MaxSize, *m_BiomeGen, *m_HeightGen));
+ }
else if (NoCaseCompare(*itr, "WaterLakes") == 0)
{
int Probability = a_IniFile.GetValueSetI("Generator", "WaterLakesProbability", 25);
diff --git a/src/Generating/Prefabs/PlainsVillagePrefabs.cpp b/src/Generating/Prefabs/PlainsVillagePrefabs.cpp
index f59e22fb3..508f0d3b6 100644
--- a/src/Generating/Prefabs/PlainsVillagePrefabs.cpp
+++ b/src/Generating/Prefabs/PlainsVillagePrefabs.cpp
@@ -174,7 +174,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 10 */ ".......mmmmm",
// Connectors:
- "",
+ "-1: 7, 0, 0: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -216,7 +216,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h: 64:12\n" /* wooddoorblock */
"i:102: 0\n" /* glasspane */
"j: 53: 2\n" /* woodstairs */
@@ -288,7 +288,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ ".......",
// Connectors:
- "",
+ "-1: 3, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -330,7 +330,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h:102: 0\n" /* glasspane */
"i: 64:12\n" /* wooddoorblock */
"j: 53: 2\n" /* woodstairs */
@@ -434,7 +434,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 8 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -561,7 +561,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 8 */ "..lgp..",
// Connectors:
- "",
+ "-1: 3, 0, 0: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -725,7 +725,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 8 */ "...............",
// Connectors:
- "",
+ "-1: 7, 0, 0: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1016,7 +1016,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 12 */ ".......",
// Connectors:
- "",
+ "-1: 3, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1087,7 +1087,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 8 */ "dmmmmmdmdmmmmmd",
// Connectors:
- "",
+ "-1: 7, 0, 8: 3\n" /* Type -1, direction Z+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1134,7 +1134,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"i: 53: 1\n" /* woodstairs */
"j: 85: 0\n" /* fence */
"k: 53: 0\n" /* woodstairs */
- "l: 64: 4\n" /* wooddoorblock */
+ "l: 64: 6\n" /* wooddoorblock */
"m: 19: 0\n" /* sponge */
"n: 64: 0\n" /* wooddoorblock */
"o:102: 0\n" /* glasspane */
@@ -1238,7 +1238,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 10 */ "mmkbimmmmm",
// Connectors:
- "",
+ "-1: 1, 0, 5: 4\n" /* Type -1, direction X- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1281,22 +1281,23 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"e: 5: 0\n" /* wood */
"f: 67: 3\n" /* stairs */
"g: 17: 0\n" /* tree */
- "h: 64: 5\n" /* wooddoorblock */
- "i:102: 0\n" /* glasspane */
- "j: 64:12\n" /* wooddoorblock */
- "k: 53: 2\n" /* woodstairs */
- "l: 53: 1\n" /* woodstairs */
+ "h: 64: 7\n" /* wooddoorblock */
+ "i: 64: 5\n" /* wooddoorblock */
+ "j:102: 0\n" /* glasspane */
+ "k: 64:12\n" /* wooddoorblock */
+ "l: 53: 2\n" /* woodstairs */
"m: 19: 0\n" /* sponge */
- "n: 53: 7\n" /* woodstairs */
- "o: 53: 6\n" /* woodstairs */
- "p: 53: 3\n" /* woodstairs */
- "q: 53: 0\n" /* woodstairs */
- "r: 53: 5\n" /* woodstairs */
- "s: 53: 4\n" /* woodstairs */
- "t: 50: 3\n" /* torch */
- "u: 50: 2\n" /* torch */
- "v: 50: 4\n" /* torch */
- "w: 50: 1\n" /* torch */,
+ "n: 53: 1\n" /* woodstairs */
+ "o: 53: 7\n" /* woodstairs */
+ "p: 53: 6\n" /* woodstairs */
+ "q: 53: 3\n" /* woodstairs */
+ "r: 53: 0\n" /* woodstairs */
+ "s: 53: 5\n" /* woodstairs */
+ "t: 53: 4\n" /* woodstairs */
+ "u: 50: 3\n" /* torch */
+ "v: 50: 2\n" /* torch */
+ "w: 50: 4\n" /* torch */
+ "x: 50: 1\n" /* torch */,
// Block data:
// Level 0
@@ -1329,7 +1330,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 4 */ ".e............e."
/* 5 */ ".e............e."
/* 6 */ ".e............e."
- /* 7 */ ".geeeeheg.....e."
+ /* 7 */ ".geeeeieg.....e."
/* 8 */ "mmmmmm.me.....e."
/* 9 */ "mmmmmmmme.....e."
/* 10 */ "mmmmmmmme.....e."
@@ -1343,81 +1344,81 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* z\x* 111111 */
/* * 0123456789012345 */
/* 0 */ "................"
- /* 1 */ ".geiieiigjgiieg."
- /* 2 */ ".i............e."
- /* 3 */ ".i............i."
- /* 4 */ ".i............i."
- /* 5 */ ".i............e."
- /* 6 */ ".i............i."
- /* 7 */ ".geiiejeg.....i."
+ /* 1 */ ".gejjejjgkgjjeg."
+ /* 2 */ ".j............e."
+ /* 3 */ ".j............j."
+ /* 4 */ ".j............j."
+ /* 5 */ ".j............e."
+ /* 6 */ ".j............j."
+ /* 7 */ ".gejjekeg.....j."
/* 8 */ "mmmmmm.me.....e."
- /* 9 */ "mmmmmmmmi.....i."
- /* 10 */ "mmmmmmmmi.....i."
+ /* 9 */ "mmmmmmmmj.....j."
+ /* 10 */ "mmmmmmmmj.....j."
/* 11 */ "mmmmmmmme.....e."
- /* 12 */ "mmmmmmmmi.....i."
- /* 13 */ "mmmmmmmmi.....i."
- /* 14 */ "mmmmmmmmgiiiiig."
+ /* 12 */ "mmmmmmmmj.....j."
+ /* 13 */ "mmmmmmmmj.....j."
+ /* 14 */ "mmmmmmmmgjjjjjg."
/* 15 */ "mmmmmmmm........"
// Level 3
/* z\x* 111111 */
/* * 0123456789012345 */
- /* 0 */ "kkkkkkkkkkkkkkkl"
- /* 1 */ "ngeeeeeegegeeegl"
- /* 2 */ ".e............el"
- /* 3 */ ".e............el"
- /* 4 */ ".e............el"
- /* 5 */ ".e............el"
- /* 6 */ ".e............el"
- /* 7 */ "ogeeeeeeg.....el"
- /* 8 */ "pppppppqe.....el"
- /* 9 */ "mmmmmmmqe.....el"
- /* 10 */ "mmmmmmmqe.....el"
- /* 11 */ "mmmmmmmqe.....el"
- /* 12 */ "mmmmmmmqe.....el"
- /* 13 */ "mmmmmmmqe.....el"
- /* 14 */ "mmmmmmmqgeeeeegl"
- /* 15 */ "mmmmmmmqr.....sl"
+ /* 0 */ "llllllllllllllln"
+ /* 1 */ "ogeeeeeegegeeegn"
+ /* 2 */ ".e............en"
+ /* 3 */ ".e............en"
+ /* 4 */ ".e............en"
+ /* 5 */ ".e............en"
+ /* 6 */ ".e............en"
+ /* 7 */ "pgeeeeeeg.....en"
+ /* 8 */ "qqqqqqqre.....en"
+ /* 9 */ "mmmmmmmre.....en"
+ /* 10 */ "mmmmmmmre.....en"
+ /* 11 */ "mmmmmmmre.....en"
+ /* 12 */ "mmmmmmmre.....en"
+ /* 13 */ "mmmmmmmre.....en"
+ /* 14 */ "mmmmmmmrgeeeeegn"
+ /* 15 */ "mmmmmmmrs.....tn"
// Level 4
/* z\x* 111111 */
/* * 0123456789012345 */
/* 0 */ "................"
- /* 1 */ "kkkkkkkkkkkkkkk."
- /* 2 */ "neeeeeeeeeeeeel."
- /* 3 */ ".e.........t.el."
- /* 4 */ ".e..........uel."
- /* 5 */ ".e......v....el."
- /* 6 */ "oeeeeeeeee...el."
- /* 7 */ "ppppppppqew..el."
- /* 8 */ "mmmmmmmmqe...el."
- /* 9 */ "mmmmmmmmqe...el."
- /* 10 */ "mmmmmmmmqe...el."
- /* 11 */ "mmmmmmmmqe...el."
- /* 12 */ "mmmmmmmmqe...el."
- /* 13 */ "mmmmmmmmqe...el."
- /* 14 */ "mmmmmmmmqeeeeel."
- /* 15 */ "mmmmmmmmqr...sl."
+ /* 1 */ "lllllllllllllll."
+ /* 2 */ "oeeeeeeeeeeeeen."
+ /* 3 */ ".e.........u.en."
+ /* 4 */ ".e..........ven."
+ /* 5 */ ".e......w....en."
+ /* 6 */ "peeeeeeeee...en."
+ /* 7 */ "qqqqqqqqrex..en."
+ /* 8 */ "mmmmmmmmre...en."
+ /* 9 */ "mmmmmmmmre...en."
+ /* 10 */ "mmmmmmmmre...en."
+ /* 11 */ "mmmmmmmmre...en."
+ /* 12 */ "mmmmmmmmre...en."
+ /* 13 */ "mmmmmmmmre...en."
+ /* 14 */ "mmmmmmmmreeeeen."
+ /* 15 */ "mmmmmmmmrs...tn."
// Level 5
/* z\x* 111111 */
/* * 0123456789012345 */
/* 0 */ "................"
/* 1 */ "................"
- /* 2 */ "kkkkkkkkkkkkkl.."
- /* 3 */ "neeeeeeeeeeeel.."
- /* 4 */ ".ew.........el.."
- /* 5 */ "oeeeeeeeeee.el.."
- /* 6 */ "pppppppppqe.el.."
- /* 7 */ ".........qe.el.."
- /* 8 */ "mmmmmmmm.qe.el.."
- /* 9 */ "mmmmmmmm.qe.el.."
- /* 10 */ "mmmmmmmm.qe.el.."
- /* 11 */ "mmmmmmmm.qe.el.."
- /* 12 */ "mmmmmmmm.qe.el.."
- /* 13 */ "mmmmmmmm.qevel.."
- /* 14 */ "mmmmmmmm.qeeel.."
- /* 15 */ "mmmmmmmm.qr.sl.."
+ /* 2 */ "llllllllllllln.."
+ /* 3 */ "oeeeeeeeeeeeen.."
+ /* 4 */ ".ex.........en.."
+ /* 5 */ "peeeeeeeeee.en.."
+ /* 6 */ "qqqqqqqqqre.en.."
+ /* 7 */ ".........re.en.."
+ /* 8 */ "mmmmmmmm.re.en.."
+ /* 9 */ "mmmmmmmm.re.en.."
+ /* 10 */ "mmmmmmmm.re.en.."
+ /* 11 */ "mmmmmmmm.re.en.."
+ /* 12 */ "mmmmmmmm.re.en.."
+ /* 13 */ "mmmmmmmm.rewen.."
+ /* 14 */ "mmmmmmmm.reeen.."
+ /* 15 */ "mmmmmmmm.rs.tn.."
// Level 6
/* z\x* 111111 */
@@ -1425,22 +1426,22 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 0 */ "................"
/* 1 */ "................"
/* 2 */ "................"
- /* 3 */ "kkkkkkkkkkkkk..."
- /* 4 */ "eeeeeeeeeeeel..."
- /* 5 */ "ppppppppppqel..."
- /* 6 */ "mmmmmmmmmmqel..."
- /* 7 */ "mmmmmmmmmmqel..."
- /* 8 */ "mmmmmmmmmmqel..."
- /* 9 */ "mmmmmmmmmmqel..."
- /* 10 */ "mmmmmmmmmmqel..."
- /* 11 */ "mmmmmmmmmmqel..."
- /* 12 */ "mmmmmmmmmmqel..."
- /* 13 */ "mmmmmmmmmmqel..."
- /* 14 */ "mmmmmmmmmmqel..."
- /* 15 */ "mmmmmmmmmmqel...",
+ /* 3 */ "lllllllllllll..."
+ /* 4 */ "eeeeeeeeeeeen..."
+ /* 5 */ "qqqqqqqqqqren..."
+ /* 6 */ "mmmmmmmmmmren..."
+ /* 7 */ "mmmmmmmmmmren..."
+ /* 8 */ "mmmmmmmmmmren..."
+ /* 9 */ "mmmmmmmmmmren..."
+ /* 10 */ "mmmmmmmmmmren..."
+ /* 11 */ "mmmmmmmmmmren..."
+ /* 12 */ "mmmmmmmmmmren..."
+ /* 13 */ "mmmmmmmmmmren..."
+ /* 14 */ "mmmmmmmmmmren..."
+ /* 15 */ "mmmmmmmmmmren...",
// Connectors:
- "",
+ "-1: 9, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1506,7 +1507,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ "..........",
// Connectors:
- "",
+ "-1: 9, 0, 3: 5\n" /* Type -1, direction X+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1548,7 +1549,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 67: 2\n" /* stairs */
"e: 67: 1\n" /* stairs */
"f: 4: 0\n" /* cobblestone */
- "g: 64: 1\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h: 53: 3\n" /* woodstairs */
"i: 53: 1\n" /* woodstairs */
"j: 85: 0\n" /* fence */
@@ -1556,7 +1557,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"l: 53: 2\n" /* woodstairs */
"m: 19: 0\n" /* sponge */
"n:102: 0\n" /* glasspane */
- "o: 64: 8\n" /* wooddoorblock */
+ "o: 64:12\n" /* wooddoorblock */
"p: 50: 3\n" /* torch */
"q: 72: 0\n" /* woodplate */
"r: 50: 4\n" /* torch */
@@ -1646,7 +1647,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ "............",
// Connectors:
- "",
+ "-1: 8, 1, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1689,19 +1690,18 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"e: 67: 3\n" /* stairs */
"f: 17: 0\n" /* tree */
"g: 5: 0\n" /* wood */
- "h: 64: 5\n" /* wooddoorblock */
- "i: 64: 7\n" /* wooddoorblock */
- "j:102: 0\n" /* glasspane */
- "k: 64:12\n" /* wooddoorblock */
- "l: 53: 2\n" /* woodstairs */
+ "h: 64: 7\n" /* wooddoorblock */
+ "i:102: 0\n" /* glasspane */
+ "j: 64:12\n" /* wooddoorblock */
+ "k: 53: 2\n" /* woodstairs */
+ "l: 53: 7\n" /* woodstairs */
"m: 19: 0\n" /* sponge */
- "n: 53: 7\n" /* woodstairs */
- "o: 17: 4\n" /* tree */
- "p: 17: 8\n" /* tree */
- "q: 50: 3\n" /* torch */
- "r: 50: 4\n" /* torch */
- "s: 53: 6\n" /* woodstairs */
- "t: 53: 3\n" /* woodstairs */,
+ "n: 17: 4\n" /* tree */
+ "o: 17: 8\n" /* tree */
+ "p: 50: 3\n" /* torch */
+ "q: 50: 4\n" /* torch */
+ "r: 53: 6\n" /* woodstairs */
+ "s: 53: 3\n" /* woodstairs */,
// Block data:
// Level 0
@@ -1727,46 +1727,46 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 4 */ ".f.......f."
/* 5 */ ".g.......g."
/* 6 */ ".g.......g."
- /* 7 */ ".fggfifggf."
+ /* 7 */ ".fggfhfggf."
/* 8 */ "..........."
// Level 2
/* z\x* 1 */
/* * 01234567890 */
/* 0 */ "..........."
- /* 1 */ ".fjjfkfjjf."
- /* 2 */ ".j.......j."
- /* 3 */ ".j.......j."
+ /* 1 */ ".fiifjfiif."
+ /* 2 */ ".i.......i."
+ /* 3 */ ".i.......i."
/* 4 */ ".f.......f."
- /* 5 */ ".j.......j."
- /* 6 */ ".j.......j."
- /* 7 */ ".fjjfkfjjf."
+ /* 5 */ ".i.......i."
+ /* 6 */ ".i.......i."
+ /* 7 */ ".fiifjfiif."
/* 8 */ "..........."
// Level 3
/* z\x* 1 */
/* * 01234567890 */
- /* 0 */ "lllllllllll"
- /* 1 */ "nfooooooofn"
- /* 2 */ ".p..q.q..p."
- /* 3 */ ".p.......p."
- /* 4 */ ".p.......p."
- /* 5 */ ".p.......p."
- /* 6 */ ".p..r.r..p."
- /* 7 */ "sfooooooofs"
- /* 8 */ "ttttttttttt"
+ /* 0 */ "kkkkkkkkkkk"
+ /* 1 */ "lfnnnnnnnfl"
+ /* 2 */ ".o..p.p..o."
+ /* 3 */ ".o.......o."
+ /* 4 */ ".o.......o."
+ /* 5 */ ".o.......o."
+ /* 6 */ ".o..q.q..o."
+ /* 7 */ "rfnnnnnnnfr"
+ /* 8 */ "sssssssssss"
// Level 4
/* z\x* 1 */
/* * 01234567890 */
/* 0 */ "..........."
- /* 1 */ "lllllllllll"
- /* 2 */ "ngggggggggn"
+ /* 1 */ "kkkkkkkkkkk"
+ /* 2 */ "lgggggggggl"
/* 3 */ ".g.......g."
/* 4 */ ".g.......g."
/* 5 */ ".g.......g."
- /* 6 */ "sgggggggggs"
- /* 7 */ "ttttttttttt"
+ /* 6 */ "rgggggggggr"
+ /* 7 */ "sssssssssss"
/* 8 */ "..........."
// Level 5
@@ -1774,11 +1774,11 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* * 01234567890 */
/* 0 */ "..........."
/* 1 */ "..........."
- /* 2 */ "lllllllllll"
- /* 3 */ "ngggggggggn"
+ /* 2 */ "kkkkkkkkkkk"
+ /* 3 */ "lgggggggggl"
/* 4 */ ".g.......g."
- /* 5 */ "sgggggggggs"
- /* 6 */ "ttttttttttt"
+ /* 5 */ "rgggggggggr"
+ /* 6 */ "sssssssssss"
/* 7 */ "..........."
/* 8 */ "..........."
@@ -1788,15 +1788,15 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 0 */ "..........."
/* 1 */ "..........."
/* 2 */ "..........."
- /* 3 */ "lllllllllll"
+ /* 3 */ "kkkkkkkkkkk"
/* 4 */ "ggggggggggg"
- /* 5 */ "ttttttttttt"
+ /* 5 */ "sssssssssss"
/* 6 */ "..........."
/* 7 */ "..........."
/* 8 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2025,7 +2025,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 15 */ "mmmmmmmmmmmmmmm",
// Connectors:
- "",
+ "-1: 7, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2069,7 +2069,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"f: 4: 0\n" /* cobblestone */
"g: 17: 0\n" /* tree */
"h: 5: 0\n" /* wood */
- "i: 64: 5\n" /* wooddoorblock */
+ "i: 64: 7\n" /* wooddoorblock */
"j:102: 0\n" /* glasspane */
"k: 64:12\n" /* wooddoorblock */
"l: 53: 2\n" /* woodstairs */
@@ -2151,7 +2151,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ ".........",
// Connectors:
- "",
+ "-1: 4, 1, 0: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2193,7 +2193,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h:102: 0\n" /* glasspane */
"i: 64:12\n" /* wooddoorblock */
"j: 53: 2\n" /* woodstairs */
@@ -2271,7 +2271,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 0: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2313,7 +2313,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h:102: 0\n" /* glasspane */
"i: 64:12\n" /* wooddoorblock */
"j: 53: 2\n" /* woodstairs */
@@ -2422,7 +2422,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 10 */ "mmmm..tfl..",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2464,7 +2464,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h:102: 0\n" /* glasspane */
"i: 64:12\n" /* wooddoorblock */
"j: 53: 2\n" /* woodstairs */
@@ -2571,7 +2571,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 10 */ "..kfl.....kfl..",
// Connectors:
- "",
+ "-1: 7, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2613,7 +2613,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
+ "g: 64: 7\n" /* wooddoorblock */
"h: 53: 3\n" /* woodstairs */
"i: 85: 0\n" /* fence */
"j: 53: 2\n" /* woodstairs */
@@ -2698,7 +2698,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 6 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2740,15 +2740,15 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"d: 4: 0\n" /* cobblestone */
"e: 17: 0\n" /* tree */
"f: 5: 0\n" /* wood */
- "g: 64: 5\n" /* wooddoorblock */
- "h: 53: 3\n" /* woodstairs */
- "i: 85: 0\n" /* fence */
- "j: 53: 2\n" /* woodstairs */
- "k: 53: 1\n" /* woodstairs */
- "l: 53: 0\n" /* woodstairs */
+ "g: 64: 7\n" /* wooddoorblock */
+ "h: 64: 5\n" /* wooddoorblock */
+ "i: 53: 3\n" /* woodstairs */
+ "j: 85: 0\n" /* fence */
+ "k: 53: 2\n" /* woodstairs */
+ "l: 53: 1\n" /* woodstairs */
"m: 19: 0\n" /* sponge */
- "n:102: 0\n" /* glasspane */
- "o: 64:13\n" /* wooddoorblock */
+ "n: 53: 0\n" /* woodstairs */
+ "o:102: 0\n" /* glasspane */
"p: 64:12\n" /* wooddoorblock */
"q: 50: 3\n" /* torch */
"r: 72: 0\n" /* woodplate */
@@ -2776,12 +2776,12 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* z\x* 11 */
/* * 012345678901 */
/* 0 */ "............"
- /* 1 */ ".efffggfffe."
+ /* 1 */ ".efffghfffe."
/* 2 */ ".f........f."
- /* 3 */ ".fh......hf."
- /* 4 */ ".fi......if."
- /* 5 */ ".fj......jf."
- /* 6 */ ".f.kilkil.f."
+ /* 3 */ ".fi......if."
+ /* 4 */ ".fj......jf."
+ /* 5 */ ".fk......kf."
+ /* 6 */ ".f.ljnljn.f."
/* 7 */ ".effffffffe."
/* 8 */ "............"
@@ -2789,19 +2789,19 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* z\x* 11 */
/* * 012345678901 */
/* 0 */ "............"
- /* 1 */ ".ennfopfnne."
- /* 2 */ ".n..q..q..n."
- /* 3 */ ".n........n."
+ /* 1 */ ".eoofppfooe."
+ /* 2 */ ".o..q..q..o."
+ /* 3 */ ".o........o."
/* 4 */ ".fr......rf."
- /* 5 */ ".n........n."
- /* 6 */ ".n..r..r..n."
- /* 7 */ ".ennfnnfnne."
+ /* 5 */ ".o........o."
+ /* 6 */ ".o..r..r..o."
+ /* 7 */ ".eoofoofooe."
/* 8 */ "............"
// Level 3
/* z\x* 11 */
/* * 012345678901 */
- /* 0 */ "jjjjjjjjjjjj"
+ /* 0 */ "kkkkkkkkkkkk"
/* 1 */ "sffffffffffs"
/* 2 */ ".fttttttttf."
/* 3 */ ".f........f."
@@ -2809,19 +2809,19 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 5 */ ".f........f."
/* 6 */ ".fttttttttf."
/* 7 */ "wffffffffffw"
- /* 8 */ "hhhhhhhhhhhh"
+ /* 8 */ "iiiiiiiiiiii"
// Level 4
/* z\x* 11 */
/* * 012345678901 */
/* 0 */ "............"
- /* 1 */ "jjjjjjjjjjjj"
+ /* 1 */ "kkkkkkkkkkkk"
/* 2 */ "sffffffffffs"
/* 3 */ ".fttttttttf."
/* 4 */ ".f........f."
/* 5 */ ".fttttttttf."
/* 6 */ "wffffffffffw"
- /* 7 */ "hhhhhhhhhhhh"
+ /* 7 */ "iiiiiiiiiiii"
/* 8 */ "............"
// Level 5
@@ -2829,11 +2829,11 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* * 012345678901 */
/* 0 */ "............"
/* 1 */ "............"
- /* 2 */ "jjjjjjjjjjjj"
+ /* 2 */ "kkkkkkkkkkkk"
/* 3 */ "sffffffffffs"
/* 4 */ ".f........f."
/* 5 */ "wffffffffffw"
- /* 6 */ "hhhhhhhhhhhh"
+ /* 6 */ "iiiiiiiiiiii"
/* 7 */ "............"
/* 8 */ "............"
@@ -2843,15 +2843,15 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 0 */ "............"
/* 1 */ "............"
/* 2 */ "............"
- /* 3 */ "jjjjjjjjjjjj"
+ /* 3 */ "kkkkkkkkkkkk"
/* 4 */ "ffffffffffff"
- /* 5 */ "hhhhhhhhhhhh"
+ /* 5 */ "iiiiiiiiiiii"
/* 6 */ "............"
/* 7 */ "............"
/* 8 */ "............",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -2895,19 +2895,18 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"f: 2: 0\n" /* grass */
"g: 17: 0\n" /* tree */
"h: 5: 0\n" /* wood */
- "i: 64: 5\n" /* wooddoorblock */
+ "i: 64: 7\n" /* wooddoorblock */
"j: 53: 3\n" /* woodstairs */
"k: 85: 0\n" /* fence */
"l: 53: 2\n" /* woodstairs */
"m: 19: 0\n" /* sponge */
- "n: 64: 7\n" /* wooddoorblock */
- "o:102: 0\n" /* glasspane */
- "p: 64:12\n" /* wooddoorblock */
- "q: 72: 0\n" /* woodplate */
- "r: 53: 7\n" /* woodstairs */
- "s: 50: 1\n" /* torch */
- "t: 50: 2\n" /* torch */
- "u: 53: 6\n" /* woodstairs */,
+ "n:102: 0\n" /* glasspane */
+ "o: 64:12\n" /* wooddoorblock */
+ "p: 72: 0\n" /* woodplate */
+ "q: 53: 7\n" /* woodstairs */
+ "r: 50: 1\n" /* torch */
+ "s: 50: 2\n" /* torch */
+ "t: 53: 6\n" /* woodstairs */,
// Block data:
// Level 0
@@ -2937,7 +2936,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 4 */ ".h.e....lh."
/* 5 */ ".h.......h."
/* 6 */ ".h.......h."
- /* 7 */ ".ghhhnhhhg."
+ /* 7 */ ".ghhhihhhg."
/* 8 */ "..k.....k.."
/* 9 */ "mmk.....kmm"
/* 10 */ "mmk.....kmm"
@@ -2948,13 +2947,13 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* z\x* 1 */
/* * 01234567890 */
/* 0 */ "..........."
- /* 1 */ ".goohphoog."
- /* 2 */ ".o.......o."
- /* 3 */ ".o......qo."
+ /* 1 */ ".gnnhohnng."
+ /* 2 */ ".n.......n."
+ /* 3 */ ".n......pn."
/* 4 */ ".h.......h."
- /* 5 */ ".o.......o."
- /* 6 */ ".o.......o."
- /* 7 */ ".goohphoog."
+ /* 5 */ ".n.......n."
+ /* 6 */ ".n.......n."
+ /* 7 */ ".gnnhohnng."
/* 8 */ "..........."
/* 9 */ "mm.......mm"
/* 10 */ "mm.......mm"
@@ -2965,13 +2964,13 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* z\x* 1 */
/* * 01234567890 */
/* 0 */ "lllllllllll"
- /* 1 */ "rhhhhhhhhhr"
+ /* 1 */ "qhhhhhhhhhq"
/* 2 */ ".h.......h."
/* 3 */ ".h.......h."
- /* 4 */ ".hs.....th."
+ /* 4 */ ".hr.....sh."
/* 5 */ ".h.......h."
/* 6 */ ".h.......h."
- /* 7 */ "uhhhhhhhhhu"
+ /* 7 */ "thhhhhhhhht"
/* 8 */ "jjjjjjjjjjj"
/* 9 */ "mm.......mm"
/* 10 */ "mm.......mm"
@@ -2983,11 +2982,11 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* * 01234567890 */
/* 0 */ "..........."
/* 1 */ "lllllllllll"
- /* 2 */ "rhhhhhhhhhr"
+ /* 2 */ "qhhhhhhhhhq"
/* 3 */ ".h.......h."
/* 4 */ ".h.......h."
/* 5 */ ".h.......h."
- /* 6 */ "uhhhhhhhhhu"
+ /* 6 */ "thhhhhhhhht"
/* 7 */ "jjjjjjjjjjj"
/* 8 */ "..........."
/* 9 */ "mm.......mm"
@@ -3001,9 +3000,9 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 0 */ "..........."
/* 1 */ "..........."
/* 2 */ "lllllllllll"
- /* 3 */ "rhhhhhhhhhr"
+ /* 3 */ "qhhhhhhhhhq"
/* 4 */ ".h.......h."
- /* 5 */ "uhhhhhhhhhu"
+ /* 5 */ "thhhhhhhhht"
/* 6 */ "jjjjjjjjjjj"
/* 7 */ "..........."
/* 8 */ "..........."
@@ -3030,7 +3029,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 12 */ "mm.......mm",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -3279,7 +3278,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
"f: 5: 0\n" /* wood */
"g: 54: 4\n" /* chest */
"h:154: 4\n" /* hopper */
- "i: 64: 6\n" /* wooddoorblock */
+ "i: 64: 4\n" /* wooddoorblock */
"j:102: 0\n" /* glasspane */
"k: 85: 0\n" /* fence */
"l: 64:12\n" /* wooddoorblock */
@@ -3551,7 +3550,7 @@ const cPrefab::sDef g_PlainsVillagePrefabs[] =
/* 12 */ ".........",
// Connectors:
- "",
+ "-1: 5, 0, 6: 5\n" /* Type -1, direction X+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -3692,7 +3691,10 @@ const cPrefab::sDef g_PlainsVillageStartingPrefabs[] =
/* 3 */ "bbbb",
// Connectors:
- "",
+ "1: 1, 9, 3: 3\n" /* Type 1, direction Z+ */
+ "1: 2, 9, 0: 2\n" /* Type 1, direction Z- */
+ "1: 0, 9, 1: 4\n" /* Type 1, direction X- */
+ "1: 3, 9, 2: 5\n" /* Type 1, direction X+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
diff --git a/src/Generating/Prefabs/SandVillagePrefabs.cpp b/src/Generating/Prefabs/SandVillagePrefabs.cpp
index 23af0f0a6..51411dea2 100644
--- a/src/Generating/Prefabs/SandVillagePrefabs.cpp
+++ b/src/Generating/Prefabs/SandVillagePrefabs.cpp
@@ -63,7 +63,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ "d.....d.....d",
// Connectors:
- "",
+ "-1: 6, 0, 8: 3\n" /* Type -1, direction Z+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -103,7 +103,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -183,7 +183,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 6 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -223,7 +223,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -326,7 +326,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ "...........",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -366,7 +366,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -444,7 +444,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 6 */ ".............",
// Connectors:
- "",
+ "-1: 6, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -484,7 +484,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -587,7 +587,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ ".............",
// Connectors:
- "",
+ "-1: 6, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -627,7 +627,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -730,7 +730,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ "...............",
// Connectors:
- "",
+ "-1: 6, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -770,7 +770,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -873,7 +873,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ "................",
// Connectors:
- "",
+ "-1: 9, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -913,7 +913,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -984,7 +984,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 6 */ ".......",
// Connectors:
- "",
+ "-1: 4, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1024,7 +1024,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 5\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
"g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
@@ -1096,7 +1096,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 6 */ ".........",
// Connectors:
- "",
+ "-1: 4, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1136,9 +1136,9 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"b:128: 2\n" /* sandstonestairs */
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
- "e: 64: 1\n" /* wooddoorblock */
+ "e: 64: 7\n" /* wooddoorblock */
"f:102: 0\n" /* glasspane */
- "g: 64: 8\n" /* wooddoorblock */
+ "g: 64:12\n" /* wooddoorblock */
"h:128: 7\n" /* sandstonestairs */
"i: 50: 3\n" /* torch */
"j: 50: 4\n" /* torch */
@@ -1232,7 +1232,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 8 */ ".........",
// Connectors:
- "",
+ "-1: 4, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1273,17 +1273,18 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
"e:128: 3\n" /* sandstonestairs */
- "f: 64: 5\n" /* wooddoorblock */
- "g:102: 0\n" /* glasspane */
- "h: 64:12\n" /* wooddoorblock */
- "i:128: 7\n" /* sandstonestairs */
- "j: 50: 3\n" /* torch */
- "k: 50: 4\n" /* torch */
- "l:128: 6\n" /* sandstonestairs */
+ "f: 64: 7\n" /* wooddoorblock */
+ "g: 64: 5\n" /* wooddoorblock */
+ "h:102: 0\n" /* glasspane */
+ "i: 64:12\n" /* wooddoorblock */
+ "j:128: 7\n" /* sandstonestairs */
+ "k: 50: 3\n" /* torch */
+ "l: 50: 4\n" /* torch */
"m: 19: 0\n" /* sponge */
- "n:128: 5\n" /* sandstonestairs */
- "o:128: 4\n" /* sandstonestairs */
- "p: 50: 1\n" /* torch */,
+ "n:128: 6\n" /* sandstonestairs */
+ "o:128: 5\n" /* sandstonestairs */
+ "p:128: 4\n" /* sandstonestairs */
+ "q: 50: 1\n" /* torch */,
// Block data:
// Level 0
@@ -1310,7 +1311,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 2 */ ".d..........d."
/* 3 */ ".d..........d."
/* 4 */ ".d..........d."
- /* 5 */ ".ddddfddd...d."
+ /* 5 */ ".ddddgddd...d."
/* 6 */ "........d...d."
/* 7 */ "mmmmmmm.d...d."
/* 8 */ "mmmmmmm.d...d."
@@ -1322,49 +1323,49 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ ".............."
- /* 1 */ ".dggdggdhdggd."
- /* 2 */ ".g..........g."
- /* 3 */ ".g..........g."
- /* 4 */ ".g..........d."
- /* 5 */ ".dggdhdgg...g."
- /* 6 */ "........g...g."
+ /* 1 */ ".dhhdhhdidhhd."
+ /* 2 */ ".h..........h."
+ /* 3 */ ".h..........h."
+ /* 4 */ ".h..........d."
+ /* 5 */ ".dhhdidhh...h."
+ /* 6 */ "........h...h."
/* 7 */ "mmmmmmm.d...d."
- /* 8 */ "mmmmmmm.g...g."
- /* 9 */ "mmmmmmm.g...g."
- /* 10 */ "mmmmmmm.dgggd."
+ /* 8 */ "mmmmmmm.h...h."
+ /* 9 */ "mmmmmmm.h...h."
+ /* 10 */ "mmmmmmm.dhhhd."
/* 11 */ "mmmmmmm......."
// Level 3
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ "bbbbbbbbbbbbbb"
- /* 1 */ "iddddddddddddc"
- /* 2 */ ".d.....j.j..dc"
+ /* 1 */ "jddddddddddddc"
+ /* 2 */ ".d.....k.k..dc"
/* 3 */ ".d..........dc"
- /* 4 */ ".d..k.k.....dc"
- /* 5 */ "ldddddddd...dc"
+ /* 4 */ ".d..l.l.....dc"
+ /* 5 */ "ndddddddd...dc"
/* 6 */ "eeeeeeead...dc"
/* 7 */ "mmmmmmmad...dc"
/* 8 */ "mmmmmmmad...dc"
/* 9 */ "mmmmmmmad...dc"
/* 10 */ "mmmmmmmadddddc"
- /* 11 */ "mmmmmmman...oc"
+ /* 11 */ "mmmmmmmao...pc"
// Level 4
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ ".............."
/* 1 */ "bbbbbbbbbbbbb."
- /* 2 */ "idddddddddddc."
- /* 3 */ ".dp........dc."
- /* 4 */ "lddddddddd.dc."
+ /* 2 */ "jdddddddddddc."
+ /* 3 */ ".dq........dc."
+ /* 4 */ "nddddddddd.dc."
/* 5 */ "eeeeeeeead.dc."
/* 6 */ "........ad.dc."
/* 7 */ "mmmmmmm.ad.dc."
/* 8 */ "mmmmmmm.ad.dc."
- /* 9 */ "mmmmmmm.adkdc."
+ /* 9 */ "mmmmmmm.adldc."
/* 10 */ "mmmmmmm.adddc."
- /* 11 */ "mmmmmmm.an.oc."
+ /* 11 */ "mmmmmmm.ao.pc."
// Level 5
/* z\x* 1111 */
@@ -1383,7 +1384,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 11 */ "mmmmmmm..adc..",
// Connectors:
- "",
+ "-1: 8, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1424,19 +1425,18 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"c:128: 1\n" /* sandstonestairs */
"d: 24: 0\n" /* sandstone */
"e:128: 3\n" /* sandstonestairs */
- "f: 64: 5\n" /* wooddoorblock */
- "g: 64: 7\n" /* wooddoorblock */
- "h:102: 0\n" /* glasspane */
- "i: 64:12\n" /* wooddoorblock */
- "j:128: 7\n" /* sandstonestairs */
- "k: 50: 3\n" /* torch */
- "l: 50: 2\n" /* torch */
+ "f: 64: 7\n" /* wooddoorblock */
+ "g:102: 0\n" /* glasspane */
+ "h: 64:12\n" /* wooddoorblock */
+ "i:128: 7\n" /* sandstonestairs */
+ "j: 50: 3\n" /* torch */
+ "k: 50: 2\n" /* torch */
+ "l: 50: 4\n" /* torch */
"m: 19: 0\n" /* sponge */
- "n: 50: 4\n" /* torch */
- "o:128: 6\n" /* sandstonestairs */
- "p: 50: 1\n" /* torch */
- "q:128: 5\n" /* sandstonestairs */
- "r:128: 4\n" /* sandstonestairs */,
+ "n:128: 6\n" /* sandstonestairs */
+ "o: 50: 1\n" /* torch */
+ "p:128: 5\n" /* sandstonestairs */
+ "q:128: 4\n" /* sandstonestairs */,
// Block data:
// Level 0
@@ -1465,7 +1465,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 4 */ ".d..........d."
/* 5 */ ".d..........d."
/* 6 */ ".d..........d."
- /* 7 */ ".ddddgd.....d."
+ /* 7 */ ".ddddfd.....d."
/* 8 */ "......d.....d."
/* 9 */ "mmmmm.d.....d."
/* 10 */ "mmmmm.ddddddd."
@@ -1475,49 +1475,49 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ ".............."
- /* 1 */ ".dhhdidhhdhhd."
- /* 2 */ ".h..........h."
- /* 3 */ ".h..........h."
+ /* 1 */ ".dggdhdggdggd."
+ /* 2 */ ".g..........g."
+ /* 3 */ ".g..........g."
/* 4 */ ".d..........d."
- /* 5 */ ".h..........h."
- /* 6 */ ".h..........h."
- /* 7 */ ".dhhdid.....d."
- /* 8 */ "......h.....h."
- /* 9 */ "mmmmm.h.....h."
- /* 10 */ "mmmmm.dhhdhhd."
+ /* 5 */ ".g..........g."
+ /* 6 */ ".g..........g."
+ /* 7 */ ".dggdhd.....d."
+ /* 8 */ "......g.....g."
+ /* 9 */ "mmmmm.g.....g."
+ /* 10 */ "mmmmm.dggdggd."
/* 11 */ "mmmmm........."
// Level 3
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ "bbbbbbbbbbbbbb"
- /* 1 */ "jddddddddddddc"
- /* 2 */ ".d..k.k.....dc"
+ /* 1 */ "iddddddddddddc"
+ /* 2 */ ".d..j.j.....dc"
/* 3 */ ".d..........dc"
- /* 4 */ ".d.........ldc"
+ /* 4 */ ".d.........kdc"
/* 5 */ ".d..........dc"
- /* 6 */ ".d..n.n.....dc"
- /* 7 */ "oddddddp...ldc"
+ /* 6 */ ".d..l.l.....dc"
+ /* 7 */ "nddddddo...kdc"
/* 8 */ "eeeeead.....dc"
/* 9 */ "mmmmmad.....dc"
/* 10 */ "mmmmmadddddddc"
- /* 11 */ "mmmmmaq.....rc"
+ /* 11 */ "mmmmmap.....qc"
// Level 4
/* z\x* 1111 */
/* * 01234567890123 */
/* 0 */ ".............."
/* 1 */ "bbbbbbbbbbbbc."
- /* 2 */ "jdddddddddddc."
+ /* 2 */ "idddddddddddc."
/* 3 */ ".d.........dc."
/* 4 */ ".d.........dc."
/* 5 */ ".d.........dc."
- /* 6 */ "oddddddd...dc."
+ /* 6 */ "nddddddd...dc."
/* 7 */ "eeeeeead...dc."
/* 8 */ "......ad...dc."
/* 9 */ "mmmmm.ad...dc."
/* 10 */ "mmmmm.adddddc."
- /* 11 */ "mmmmm.aq...rc."
+ /* 11 */ "mmmmm.ap...qc."
// Level 5
/* z\x* 1111 */
@@ -1525,15 +1525,15 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 0 */ ".............."
/* 1 */ ".............."
/* 2 */ "bbbbbbbbbbbb.."
- /* 3 */ "jddddddddddc.."
+ /* 3 */ "iddddddddddc.."
/* 4 */ ".d........dc.."
- /* 5 */ "odddddddd.dc.."
+ /* 5 */ "ndddddddd.dc.."
/* 6 */ "eeeeeeeed.dc.."
/* 7 */ ".......ad.dc.."
/* 8 */ ".......ad.dc.."
/* 9 */ "mmmmm..ad.dc.."
/* 10 */ "mmmmm..adddc.."
- /* 11 */ "mmmmm..aq.rc.."
+ /* 11 */ "mmmmm..ap.qc.."
// Level 6
/* z\x* 1111 */
@@ -1552,7 +1552,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 11 */ "mmmmm...adc...",
// Connectors:
- "",
+ "-1: 5, 0, 1: 2\n" /* Type -1, direction Z- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1619,7 +1619,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 6 */ "d........d",
// Connectors:
- "",
+ "-1: 0, 0, 3: 4\n" /* Type -1, direction X- */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1661,8 +1661,8 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
"d: 50: 5\n" /* torch */
"e: 26:10\n" /* bedblock */
"f: 26: 2\n" /* bedblock */
- "g: 64: 3\n" /* wooddoorblock */
- "h: 64: 8\n" /* wooddoorblock */
+ "g: 64: 5\n" /* wooddoorblock */
+ "h: 64:12\n" /* wooddoorblock */
"m: 19: 0\n" /* sponge */,
// Block data:
@@ -1712,7 +1712,7 @@ const cPrefab::sDef g_SandVillagePrefabs[] =
/* 5 */ ".....",
// Connectors:
- "",
+ "-1: 2, 0, 4: 3\n" /* Type -1, direction Z+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
@@ -1853,7 +1853,10 @@ const cPrefab::sDef g_SandVillageStartingPrefabs[] =
/* 3 */ "bbbb",
// Connectors:
- "",
+ "1: 2, 8, 0: 2\n" /* Type 1, direction Z- */
+ "1: 0, 8, 1: 4\n" /* Type 1, direction X- */
+ "1: 1, 8, 3: 3\n" /* Type 1, direction Z+ */
+ "1: 3, 8, 2: 5\n" /* Type 1, direction X+ */,
// AllowedRotations:
7, /* 1, 2, 3 CCW rotation allowed */
diff --git a/src/Generating/VillageGen.cpp b/src/Generating/VillageGen.cpp
index 3d89d7aa2..3358bc531 100644
--- a/src/Generating/VillageGen.cpp
+++ b/src/Generating/VillageGen.cpp
@@ -7,6 +7,7 @@
#include "VillageGen.h"
#include "Prefabs/PlainsVillagePrefabs.h"
#include "Prefabs/SandVillagePrefabs.h"
+#include "PieceGenerator.h"
@@ -19,18 +20,79 @@ the grid's cells. Each cell checks the biomes in an entire chunk around it, only
biomes are village-friendly. If yes, the entire village structure is built for that cell. If not, the cell
is left village-less.
-A village is generated starting by its well. The well is placed in the grid's origin point. Then a set of
-random lengths roads is generated - 4 roads going from the well, then at the end of each road another set of
-roads, crossing them perpendicular, then at the end of those another set, up to a set maximum branching
-depth. The roads are placed in a T or L shape, with the old road being the center stem of the T. Roads avoid
-crossing each other and going further away from the well than the maximum block size of the village.
-Finally, houses are places along the roads, avoiding collisions with already-existing items.
+A village is generated using the regular BFS piece generator. The well piece is used as the starting piece,
+the roads and houses are then used as the following pieces. Only the houses are read from the prefabs,
+though, the roads are generated by code and their content is ignored. A special subclass of the cPiecePool
+class is used, so that the roads connect to each other and to the well only in predefined manners.
-When the village is about to be drawn into a chunk, it queries the heights for each item intersecting the
-chunk. The prefabs are shifted so that their pivot points lie on the surface, and the roads are drawn
+The well has connectors of type "1". The houses have connectors of type "-1". The roads have connectors of
+both types, type "-1" at the far ends and type "1" on the long edges.
+
+When the village is about to be drawn into a chunk, it queries the heights for each piece intersecting the
+chunk. The pieces are shifted so that their pivot points lie on the surface, and the roads are drawn
directly by turning the surface blocks into gravel / sandstone.
*/
+class cVillagePiecePool :
+ public cPrefabPiecePool
+{
+ typedef cPrefabPiecePool super;
+public:
+ cVillagePiecePool(
+ const cPrefab::sDef * a_PieceDefs, size_t a_NumPieceDefs,
+ const cPrefab::sDef * a_StartingPieceDefs, size_t a_NumStartingPieceDefs
+ ) :
+ super(a_PieceDefs, a_NumPieceDefs, a_StartingPieceDefs, a_NumStartingPieceDefs)
+ {
+ // Add the road piece:
+ cBlockArea BA;
+ BA.Create(5, 1, 3, cBlockArea::baTypes | cBlockArea::baMetas);
+ BA.Fill(cBlockArea::baTypes | cBlockArea::baMetas, E_BLOCK_GRAVEL, 0);
+ cPrefab * RoadPiece = new cPrefab(BA, 7);
+ RoadPiece->AddConnector(0, 0, 1, BLOCK_FACE_XM, -1);
+ RoadPiece->AddConnector(4, 0, 1, BLOCK_FACE_XP, -1);
+ RoadPiece->AddConnector(4, 0, 1, BLOCK_FACE_XP, 1);
+ RoadPiece->AddConnector(1, 0, 0, BLOCK_FACE_ZM, 1);
+ RoadPiece->AddConnector(3, 0, 0, BLOCK_FACE_ZM, 1);
+ RoadPiece->AddConnector(1, 0, 2, BLOCK_FACE_ZP, 1);
+ RoadPiece->AddConnector(3, 0, 2, BLOCK_FACE_ZP, 1);
+ RoadPiece->SetAddWeightIfSame(10000);
+ m_AllPieces.push_back(RoadPiece);
+ m_PiecesByConnector[-1].push_back(RoadPiece);
+ m_PiecesByConnector[1].push_back(RoadPiece);
+ }
+
+
+ // cPrefabPiecePool overrides:
+ virtual int GetPieceWeight(const cPlacedPiece & a_PlacedPiece, const cPiece::cConnector & a_ExistingConnector, const cPiece & a_NewPiece) override
+ {
+ // Only roads are allowed to connect to the well:
+ if ((a_PlacedPiece.GetDepth() == 0) && (a_NewPiece.GetSize().y != 1))
+ {
+ return 0;
+ }
+
+ // Roads cannot branch T-wise:
+ if (
+ (a_PlacedPiece.GetPiece().GetSize().y == 1) && // Connecting to a road
+ (
+ (a_ExistingConnector.m_Direction == BLOCK_FACE_ZP) ||
+ (a_ExistingConnector.m_Direction == BLOCK_FACE_ZM)
+ ) && // Through the long-edge connector
+ (a_NewPiece.GetSize().y == 1) // And the new piece is a road
+ )
+ {
+ return 0;
+ }
+
+ return ((const cPrefab &)a_NewPiece).GetPieceWeight(a_PlacedPiece, a_ExistingConnector);
+ }
+} ;
+
+
+
+
+
class cVillageGen::cVillage :
public cGridStructGen::cStructure
{
@@ -53,44 +115,11 @@ public:
m_Prefabs(a_Prefabs),
m_HeightGen(a_HeightGen)
{
- PlaceWell();
- BuildRoads(a_MaxRoadDepth);
- PlaceHouses();
+ cBFSPieceGenerator pg(m_Prefabs, a_Seed);
+ pg.PlacePieces(a_OriginX, 10, a_OriginZ, a_MaxRoadDepth + 1, m_Pieces);
}
protected:
- class cItem
- {
- public:
- /* The position of the item, X/Z-wise: */
- int m_MinX, m_MaxX, m_MinZ, m_MaxZ;
-
- /** The prefab to use. If NULL, this is a road. */
- cPrefab * m_Prefab;
-
- /** Number of rotations that should be applied to the prefab. */
- int m_NumRotations;
-
- /* The bottom of the prefab. Only valid if the item is a prefab, not valid for roads. */
- int m_BaseY;
-
- /** Creates a new item with the specified parameters.
- m_BaseY is set to -1 and will be adjusted later on when drawing. */
- cItem(int a_MinX, int a_MaxX, int a_MinZ, int a_MaxZ, cPrefab * a_Prefab, int a_NumRotations) :
- m_MinX(a_MinX),
- m_MaxX(a_MaxX),
- m_MinZ(a_MinZ),
- m_MaxZ(a_MaxZ),
- m_Prefab(a_Prefab),
- m_NumRotations(a_NumRotations),
- m_BaseY(-1)
- {
- }
- } ;
- typedef SharedPtr<cItem> cItemPtr;
- typedef std::vector<cItemPtr> cItemPtrs;
-
-
/** Seed for the random functions */
int m_Seed;
@@ -109,61 +138,8 @@ protected:
/** The underlying height generator, used for placing the structures on top of the terrain. */
cTerrainHeightGen & m_HeightGen;
- /** The items that are generated in the village (houses, roads). */
- cItemPtrs m_Items;
-
-
- /** Places the well at the center of the village */
- void PlaceWell(void)
- {
- // Pick a prefab from the starting pieces:
- cPieces StartingPieces = ((cPiecePool &)m_Prefabs).GetStartingPieces();
- ASSERT(!StartingPieces.empty());
- int TotalWeight = 0;
- for (cPieces::const_iterator itr = StartingPieces.begin(), end = StartingPieces.end(); itr != end; ++itr)
- {
- TotalWeight += ((const cPrefab *)(*itr))->GetDefaultWeight();
- }
- ASSERT(TotalWeight > 0);
- int rnd = (m_Noise.IntNoise2DInt(m_OriginX, m_OriginZ) / 7) % TotalWeight;
- cPiece * WellPiece = StartingPieces[0];
- for (cPieces::const_iterator itr = StartingPieces.begin(), end = StartingPieces.end(); itr != end; ++itr)
- {
- rnd -= ((const cPrefab *)(*itr))->GetDefaultWeight();
- if (rnd <= 0)
- {
- WellPiece = *itr;
- break;
- }
- }
- ASSERT(WellPiece != NULL);
-
- // Pick a rotation:
- // TODO
- int NumRotations = 0;
- Vector3i Size = WellPiece->GetSize();
-
- // Put the well in the placed items array:
- m_Items.push_back(cItemPtr(new cItem(m_OriginX, m_OriginX + Size.x, m_OriginZ, m_OriginZ + Size.z, (cPrefab *)WellPiece, NumRotations)));
- }
-
-
- /** Places the roads going from the well outwards. */
- void BuildRoads(int a_MaxRoadDepth)
- {
- /*
- ASSERT(m_Items.size() == 1);
- const cItem & Well = *m_Items[0];
- */
- // TODO
- }
-
-
- /** Places houses along the roads. */
- void PlaceHouses(void)
- {
- // TODO
- }
+ /** The village pieces, placed by the generator. */
+ cPlacedPieces m_Pieces;
// cGrdStructGen::cStructure overrides:
@@ -173,6 +149,11 @@ protected:
// Iterate over all items
// Each intersecting prefab is placed on ground (if not already placed), then drawn
// Each intersecting road is drawn by replacing top soil blocks with gravel / sandstone blocks
+ for (cPlacedPieces::const_iterator itr = m_Pieces.begin(), end = m_Pieces.end(); itr != end; ++itr)
+ {
+ const cPrefab & Prefab = (const cPrefab &)((*itr)->GetPiece());
+ Prefab.Draw(a_Chunk, *itr);
+ } // for itr - m_PlacedPieces[]
}
} ;
@@ -183,15 +164,20 @@ protected:
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// cVillageGen:
-cPrefabPiecePool cVillageGen::m_SandVillage (g_SandVillagePrefabs, g_SandVillagePrefabsCount, g_SandVillageStartingPrefabs, g_SandVillageStartingPrefabsCount);
-cPrefabPiecePool cVillageGen::m_PlainsVillage(g_PlainsVillagePrefabs, g_PlainsVillagePrefabsCount, g_PlainsVillageStartingPrefabs, g_PlainsVillageStartingPrefabsCount);
+/** The prefabs for the sand village. */
+static cVillagePiecePool g_SandVillage (g_SandVillagePrefabs, g_SandVillagePrefabsCount, g_SandVillageStartingPrefabs, g_SandVillageStartingPrefabsCount);
+
+/** The prefabs for the plains village. */
+static cVillagePiecePool g_PlainsVillage(g_PlainsVillagePrefabs, g_PlainsVillagePrefabsCount, g_PlainsVillageStartingPrefabs, g_PlainsVillageStartingPrefabsCount);
-cVillageGen::cVillageGen(int a_Seed, int a_GridSize, int a_MaxRoadDepth, int a_MaxSize, cBiomeGen & a_BiomeGen, cTerrainHeightGen & a_HeightGen) :
+cVillageGen::cVillageGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize, cBiomeGen & a_BiomeGen, cTerrainHeightGen & a_HeightGen) :
super(a_Seed, a_GridSize, a_GridSize, a_MaxSize, a_MaxSize, 100),
+ m_MaxDepth(a_MaxDepth),
+ m_MaxSize(a_MaxSize),
m_BiomeGen(a_BiomeGen),
m_HeightGen(a_HeightGen)
{
@@ -211,7 +197,7 @@ cGridStructGen::cStructurePtr cVillageGen::CreateStructure(int a_OriginX, int a_
// Check if all the biomes are village-friendly:
// If just one is not, no village is created, because it's likely that an unfriendly biome is too close
- cPrefabPiecePool * VillagePrefabs = NULL;
+ cVillagePiecePool * VillagePrefabs = NULL;
for (size_t i = 0; i < ARRAYCOUNT(Biomes); i++)
{
switch (Biomes[i])
@@ -220,7 +206,7 @@ cGridStructGen::cStructurePtr cVillageGen::CreateStructure(int a_OriginX, int a_
case biDesertM:
{
// These biomes allow sand villages
- VillagePrefabs = &m_SandVillage;
+ VillagePrefabs = &g_SandVillage;
break;
}
case biPlains:
@@ -229,7 +215,7 @@ cGridStructGen::cStructurePtr cVillageGen::CreateStructure(int a_OriginX, int a_
case biSunflowerPlains:
{
// These biomes allow plains-style villages
- VillagePrefabs = &m_PlainsVillage;
+ VillagePrefabs = &g_PlainsVillage;
break;
}
default:
@@ -245,7 +231,7 @@ cGridStructGen::cStructurePtr cVillageGen::CreateStructure(int a_OriginX, int a_
{
return cStructurePtr();
}
- return cStructurePtr(new cVillage(m_Seed, a_OriginX, a_OriginZ, m_MaxRoadDepth, m_MaxSize, *VillagePrefabs, m_HeightGen));
+ return cStructurePtr(new cVillage(m_Seed, a_OriginX, a_OriginZ, m_MaxDepth, m_MaxSize, *VillagePrefabs, m_HeightGen));
}
diff --git a/src/Generating/VillageGen.h b/src/Generating/VillageGen.h
index acbd76881..c6f8f024a 100644
--- a/src/Generating/VillageGen.h
+++ b/src/Generating/VillageGen.h
@@ -21,19 +21,13 @@ class cVillageGen :
{
typedef cGridStructGen super;
public:
- cVillageGen(int a_Seed, int a_GridSize, int a_MaxRoadDepth, int a_MaxSize, cBiomeGen & a_BiomeGen, cTerrainHeightGen & a_HeightGen);
+ cVillageGen(int a_Seed, int a_GridSize, int a_MaxDepth, int a_MaxSize, cBiomeGen & a_BiomeGen, cTerrainHeightGen & a_HeightGen);
protected:
class cVillage; // fwd: VillageGen.cpp
- /** The prefabs for the sand village. We're not exactly using the cPiecePool functionality, only the containment. */
- static cPrefabPiecePool m_SandVillage;
-
- /** The prefabs for the plains village. We're not exactly using the cPiecePool functionality, only the containment. */
- static cPrefabPiecePool m_PlainsVillage;
-
- /** Maximum number of roads generated one from another (tree depth). */
- int m_MaxRoadDepth;
+ /** Maximum depth of the generator tree*/
+ int m_MaxDepth;
/** Maximum size, in X/Z blocks, of the village (radius from the origin) */
int m_MaxSize;