[suggest] Procedurally generated paths
leagris opened this issue · 1 comments
Issue Description:
Add natural paths generation by RTG
Steps to produce paths
- Use Perlin Noise Terrain Elevation and, or, Biome Distribution data for path frequency and width to determine if
x,z
has a path run aty=surface
- Perform path rendering from blocks substitution rules.
Path blocks substitution Rules
Condition | Surface Replacement Rule |
---|---|
block(y+1)=="air" && (
block(y)=="grass" ||
block(y)=="potzol" ||
block(y)=="mycellium" ) |
block(y)="grass path";
block(y+1)="air"; |
block(y+1)=="air" &&
block(y-2)!="water" &&
block(y-2)!="flowing water" && (
block(y)=="water" || block(y)=="flowing water" ) |
Draw a ford across shallow water for( px=x-1; px==x+1; px+=1 ) {
for( pz=z-1; pz==z+1; pz+=1 ) {
if( block(px,y,pz)=="water") {
block(px,y,pz)="flowing water";
}
}
}
block(y-1)="cobblestone";
if( Random.nextFloat()<.25f ) {
block(y)="mossy cobblestone";
block(y+1)="air";
} |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="stone" ) |
block(y)="cobblestone";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="cobblestone" ) |
block(y)="gravel";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="gravel" ) |
block(y)="dirt";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="dirt" ) |
block(y)="dry dirt";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="sand" ) |
block(y)="sandstone";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="sandstone" ) |
block(y)="hardened clay";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="snow block" ) |
block(y)="ice";
block(y+1)="air"; |
( block(y+1)=="air" || block(y+1)=="snow" ) && (
block(y)=="snow block" ) |
block(y)="ice";
block(y+1)="air"; |
… |