Skip to content

Commit ffe7d9c

Browse files
committed
add ashen_end
1 parent 0abf4a4 commit ffe7d9c

File tree

7 files changed

+201
-1
lines changed

7 files changed

+201
-1
lines changed

biome-providers/stages/base-distribution/end_biome_distribution.yml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,5 @@ stages:
126126
- VERMILION_WILDS: 1
127127
- MAGENTA_FIELDS: 1
128128
- CERULEAN_EXPANSE: 1
129-
- APRICOT_FUNGAL_FOREST: 1
129+
- APRICOT_FUNGAL_FOREST: 1
130+
- ASHEN_END: 1
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
id: EQ_ASHEN
2+
type: BIOME
3+
abstract: true
4+
5+
terrain:
6+
sampler:
7+
type: EXPRESSION
8+
expression: |
9+
-1+threshold+(cell(x, y, z)/1.5)+
10+
lerp(y, max, 0, max-taper,
11+
max(
12+
lerp(y, min-undercarriageTranslate, 0, min-undercarriageTranslate+taper,
13+
simplex3(x, y*flatness, z)
14+
),
15+
lerp(y, min, 0, min+taper,
16+
simplex3(x, (y-undercarriageTranslate)*flatness, z) * undercarriageMask(x, y/2, z) * 1.3
17+
)
18+
)
19+
)
20+
variables:
21+
threshold: ${meta.yml:terrain-configuration.island-threshold}/2
22+
max: ${meta.yml:terrain-configuration.island-max-height}
23+
min: ${meta.yml:terrain-configuration.island-min-height}
24+
taper: ${meta.yml:terrain-configuration.island-taper}
25+
flatness: ${meta.yml:terrain-configuration.island-flatness}
26+
undercarriageTranslate: ${meta.yml:terrain-configuration.island-undercarriage-translate}
27+
samplers:
28+
simplex3:
29+
dimensions: 3
30+
type: PROBABILITY
31+
sampler:
32+
type: FBM
33+
octaves: 5
34+
sampler:
35+
type: OPEN_SIMPLEX_2
36+
frequency: 0.002 / ${meta.yml:terrain-configuration.island-scale}
37+
undercarriageMask:
38+
dimensions: 3
39+
type: PROBABILITY
40+
sampler:
41+
type: RIDGED
42+
octaves: 3
43+
gain: 1
44+
sampler:
45+
type: OPEN_SIMPLEX_2
46+
frequency: 0.005 / ${meta.yml:terrain-configuration.island-scale}
47+
cell:
48+
dimensions: 3
49+
type: PROBABILITY
50+
sampler:
51+
type: RIDGED
52+
octaves: 3
53+
gain: 1
54+
sampler:
55+
type: CELLULAR
56+
return: Distance3Div
57+
frequency: 0.005 / ${meta.yml:terrain-configuration.island-scale}
58+

biomes/colors.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ VERMILION_WILDS: 0xb33c35
3939
MAGENTA_FIELDS: 0xc059b7
4040
CERULEAN_EXPANSE: 0x2c2e8e
4141
APRICOT_FUNGAL_FOREST: 0x2c2e8e
42+
ASHEN_END: 0x262c2b
4243

4344
# void biomes
4445
MAIN_END_VOID: 0x141414

biomes/end/ashen_end.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
id: ASHEN_END
2+
type: BIOME
3+
extends: [ BASE_END, EQ_ASHEN ]
4+
vanilla: minecraft:end_highlands
5+
color: $biomes/colors.yml:ASHEN_END
6+
7+
palette:
8+
- ASHEN_END: 319
9+
10+
slant:
11+
- threshold: 0.8
12+
palette:
13+
- BLOCK:minecraft:smooth_basalt: 319
14+
15+
features:
16+
landforms:
17+
- ASHEN_COLUMNS

features/end/ashen_columns.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
id: ASHEN_COLUMNS
2+
type: FEATURE
3+
4+
distributor:
5+
type: AND
6+
distributors:
7+
- type: SAMPLER
8+
sampler:
9+
type: CELLULAR
10+
return: CellValue
11+
frequency: 0.05
12+
salt: 5468
13+
threshold: -0.4
14+
- type: SAMPLER
15+
sampler:
16+
type: POSITIVE_WHITE_NOISE
17+
salt: 5467
18+
threshold: 0.005
19+
20+
locator:
21+
type: AND
22+
locators:
23+
- type: TOP
24+
range: &range
25+
min: 0
26+
max: 319
27+
- type: PATTERN
28+
range: *range
29+
pattern:
30+
type: MATCH_AIR
31+
offset: 0
32+
- type: PATTERN
33+
range: *range
34+
pattern:
35+
type: MATCH_SET
36+
blocks:
37+
- minecraft:gray_concrete
38+
- minecraft:gray_concrete_powder
39+
- minecraft:smooth_basalt
40+
offset: -1
41+
- type: PATTERN
42+
range: *range
43+
pattern:
44+
type: MATCH_SET
45+
blocks:
46+
- minecraft:gray_concrete
47+
- minecraft:gray_concrete_powder
48+
- minecraft:smooth_basalt
49+
offset: -3
50+
51+
structures:
52+
distribution:
53+
type: CONSTANT
54+
structures: ashen_column

palettes/end/ashen_end.yml

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
id: ASHEN_END
2+
type: PALETTE
3+
4+
layers:
5+
- materials:
6+
- minecraft:gray_concrete_powder: 1
7+
layers: 2
8+
sampler:
9+
dimensions: 2
10+
type: DOMAIN_WARP
11+
warp:
12+
type: WHITE_NOISE
13+
sampler:
14+
type: CELLULAR
15+
frequency: 0.1
16+
return: CellValue
17+
- materials:
18+
- minecraft:smooth_basalt: 1
19+
layers: 1

structures/end/ashen_column.tesf

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
num randPrecision = 100;
2+
3+
num yTranslate = -1;
4+
5+
num amount = 6+randomInt(7);
6+
num spacing = 5;
7+
8+
for (num a = 0; a < amount; a = a + 1) {
9+
10+
num radius = 4+randomInt(randPrecision)/randPrecision*6;
11+
num warp = 5;
12+
num warpFreq = 2;
13+
num squish = 1+randomInt(randPrecision)/randPrecision;
14+
num radiusSquared = pow(radius,2);
15+
16+
if (check(radius, -radius/squish, 0) != "LAND" ||
17+
check(-radius, -radius/squish, 0) != "LAND" ||
18+
check(0, -radius/squish, radius) != "LAND" ||
19+
check(0, -radius/squish, -radius) != "LAND"
20+
) fail;
21+
22+
if(a > (a/3) && a > a/2) radius = 4+randomInt(randPrecision)/randPrecision*6;
23+
for (num x = -radius-warp; x < radius+warp; x = x + 1) {
24+
for (num y = (-radius-warp)/squish; y < (radius+warp)/squish; y = y + 1) {
25+
for (num z = -radius-warp; z < radius+warp; z = z + 1) {
26+
num warpX = warp * sampler("simplex3",
27+
warpFreq*(x+originX()),
28+
warpFreq*(y+originY()+1000),
29+
warpFreq*(z+originZ()));
30+
num warpY = warp * sampler("simplex3",
31+
warpFreq*(x+originX()),
32+
warpFreq*(y+originY()+2000),
33+
warpFreq*(z+originZ()));
34+
num warpZ = warp * sampler("simplex3",
35+
warpFreq*(x+originX()),
36+
warpFreq*(y+originY()+3000),
37+
warpFreq*(z+originZ()));
38+
num distanceSquared = pow(x+warpX,2)+pow((y+warpY)*squish,2)+pow(z+warpZ,2);
39+
40+
str setBlock = "minecraft:gray_concrete_powder";
41+
if (randomInt(2) == 0) setBlock = "minecraft:smooth_basalt";
42+
43+
if (distanceSquared < radiusSquared) {
44+
block(x, y+yTranslate+(spacing*a), z, setBlock, false);
45+
}
46+
}
47+
}
48+
}
49+
}
50+

0 commit comments

Comments
 (0)