proper mars rock layers (#1829)
* rock layer stuff for the next kjs-tfc release * fix mars sea level * mob tweaks * lookin cool joker * desaturated the amaranita mushrooms * desaturated purple polypore * features for the "bush" trees so they're always placed touching a log * moved these out of the forest so it's less crowded * upd8 * moved these to OCEAN_FLOOR * moved the bushes to normal features instead of forests * attached plants, bush adjustments * updates with new gravel * disable tinting on fallen leaves
|
Before Width: | Height: | Size: 171 B After Width: | Height: | Size: 285 B |
|
Before Width: | Height: | Size: 173 B After Width: | Height: | Size: 351 B |
|
Before Width: | Height: | Size: 183 B After Width: | Height: | Size: 379 B |
|
Before Width: | Height: | Size: 156 B After Width: | Height: | Size: 320 B |
|
Before Width: | Height: | Size: 212 B After Width: | Height: | Size: 456 B |
|
Before Width: | Height: | Size: 215 B After Width: | Height: | Size: 452 B |
|
Before Width: | Height: | Size: 213 B After Width: | Height: | Size: 384 B |
|
Before Width: | Height: | Size: 610 B After Width: | Height: | Size: 635 B |
|
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 464 B |
|
|
@ -16,7 +16,7 @@
|
|||
"mars": {
|
||||
"raw": "ad_astra:mars_stone",
|
||||
"hardened": "tfg:rock/hardened_mars_stone",
|
||||
"gravel": "ad_astra:mars_cobblestone",
|
||||
"gravel": "tfg:rock/gravel_mars",
|
||||
"cobble": "ad_astra:mars_cobblestone",
|
||||
"sand": "ad_astra:mars_sand",
|
||||
"sandstone": "ad_astra:mars_stone",
|
||||
|
|
@ -26,7 +26,7 @@
|
|||
"venus": {
|
||||
"raw": "ad_astra:venus_stone",
|
||||
"hardened": "tfg:rock/hardened_venus_stone",
|
||||
"gravel": "ad_astra:venus_cobblestone",
|
||||
"gravel": "tfg:rock/gravel_venus",
|
||||
"cobble": "ad_astra:venus_cobblestone",
|
||||
"sand": "ad_astra:venus_sand",
|
||||
"sandstone": "ad_astra:venus_sandstone",
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
"red_granite": {
|
||||
"raw": "gtceu:red_granite",
|
||||
"hardened": "tfg:rock/hardened_red_granite",
|
||||
"gravel": "gtceu:red_granite_cobblestone",
|
||||
"gravel": "tfg:rock/gravel_red_granite",
|
||||
"cobble": "gtceu:red_granite_cobblestone",
|
||||
"sand": "minecraft:red_sand",
|
||||
"sandstone": "minecraft:red_sandstone",
|
||||
|
|
|
|||
|
|
@ -74,12 +74,6 @@
|
|||
"ambient": [],
|
||||
"axolotls": [],
|
||||
"creature": [
|
||||
{
|
||||
"type": "tfg:sniffer",
|
||||
"maxCount": 3,
|
||||
"minCount": 1,
|
||||
"weight": 100
|
||||
},
|
||||
{
|
||||
"type": "tfg:wraptor",
|
||||
"maxCount": 4,
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@
|
|||
"type": "wan_ancient_beasts:crusher",
|
||||
"maxCount": 2,
|
||||
"minCount": 1,
|
||||
"weight": 30
|
||||
"weight": 10
|
||||
},
|
||||
{
|
||||
"type": "wan_ancient_beasts:glider",
|
||||
|
|
|
|||
|
|
@ -119,7 +119,7 @@
|
|||
"type": "wan_ancient_beasts:eater",
|
||||
"maxCount": 1,
|
||||
"minCount": 1,
|
||||
"weight": 10
|
||||
"weight": 20
|
||||
}
|
||||
],
|
||||
"misc": [],
|
||||
|
|
|
|||
|
|
@ -74,12 +74,6 @@
|
|||
"ambient": [],
|
||||
"axolotls": [],
|
||||
"creature": [
|
||||
{
|
||||
"type": "tfg:sniffer",
|
||||
"maxCount": 3,
|
||||
"minCount": 1,
|
||||
"weight": 100
|
||||
},
|
||||
{
|
||||
"type": "tfg:wraptor",
|
||||
"maxCount": 4,
|
||||
|
|
|
|||
|
|
@ -74,12 +74,6 @@
|
|||
"ambient": [],
|
||||
"axolotls": [],
|
||||
"creature": [
|
||||
{
|
||||
"type": "tfg:sniffer",
|
||||
"maxCount": 3,
|
||||
"minCount": 1,
|
||||
"weight": 100
|
||||
},
|
||||
{
|
||||
"type": "tfg:wraptor",
|
||||
"maxCount": 4,
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:random_patch",
|
||||
"config": {
|
||||
"feature": {
|
||||
"feature": {
|
||||
"type": "tfg:attached_decorative_plant",
|
||||
"config": {
|
||||
"block": "betterend:aurant_polypore",
|
||||
"heightRange": 6
|
||||
}
|
||||
},
|
||||
"placement": []
|
||||
},
|
||||
"tries": 24,
|
||||
"xz_spread": 5,
|
||||
"y_spread": 0
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:random_patch",
|
||||
"config": {
|
||||
"feature": {
|
||||
"feature": {
|
||||
"type": "tfg:attached_decorative_plant",
|
||||
"config": {
|
||||
"block": "betterend:bulb_moss",
|
||||
"heightRange": 6
|
||||
}
|
||||
},
|
||||
"placement": []
|
||||
},
|
||||
"tries": 24,
|
||||
"xz_spread": 5,
|
||||
"y_spread": 0
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:random_patch",
|
||||
"config": {
|
||||
"feature": {
|
||||
"feature": {
|
||||
"type": "tfg:attached_decorative_plant",
|
||||
"config": {
|
||||
"block": "betterend:filalux_wings",
|
||||
"heightRange": 8
|
||||
}
|
||||
},
|
||||
"placement": []
|
||||
},
|
||||
"tries": 24,
|
||||
"xz_spread": 5,
|
||||
"y_spread": 0
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,43 @@
|
|||
{
|
||||
"type": "minecraft:random_patch",
|
||||
"config": {
|
||||
"feature": {
|
||||
"feature": {
|
||||
"type": "minecraft:simple_block",
|
||||
"config": {
|
||||
"to_place": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "betterend:filalux_wings",
|
||||
"Properties": {
|
||||
"direction": "up"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"placement": [
|
||||
{
|
||||
"type": "minecraft:block_predicate_filter",
|
||||
"predicate": {
|
||||
"type": "minecraft:all_of",
|
||||
"predicates": [
|
||||
{
|
||||
"type": "minecraft:matching_blocks",
|
||||
"blocks": "minecraft:air"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:matching_block_tag",
|
||||
"offset": [ 0, -1, 0 ],
|
||||
"tag": "tfg:decorative_plant_attachable"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
"tries": 24,
|
||||
"xz_spread": 5,
|
||||
"y_spread": 4
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
{
|
||||
"type": "minecraft:random_patch",
|
||||
"config": {
|
||||
"feature": {
|
||||
"feature": {
|
||||
"type": "tfg:attached_decorative_plant",
|
||||
"config": {
|
||||
"block": "betterend:purple_polypore",
|
||||
"heightRange": 6
|
||||
}
|
||||
},
|
||||
"placement": []
|
||||
},
|
||||
"tries": 24,
|
||||
"xz_spread": 5,
|
||||
"y_spread": 0
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"type": "minecraft:tree",
|
||||
"config": {
|
||||
"decorators": [],
|
||||
"dirt_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "tfg:mars_dirt"
|
||||
}
|
||||
},
|
||||
"foliage_placer": {
|
||||
"type": "minecraft:bush_foliage_placer",
|
||||
"offset": 0,
|
||||
"height": 1,
|
||||
"radius": 2
|
||||
},
|
||||
"foliage_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "betterend:cave_bush"
|
||||
}
|
||||
},
|
||||
"force_dirt": false,
|
||||
"ignore_vines": true,
|
||||
"minimum_size": {
|
||||
"type": "minecraft:two_layers_feature_size",
|
||||
"limit": 1,
|
||||
"lower_size": 0,
|
||||
"upper_size": 0
|
||||
},
|
||||
"trunk_placer": {
|
||||
"type": "minecraft:straight_trunk_placer",
|
||||
"base_height": 1,
|
||||
"height_rand_a": 0,
|
||||
"height_rand_b": 0
|
||||
},
|
||||
"trunk_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "beneath:wood/stripped_wood/crimson"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"type": "minecraft:tree",
|
||||
"config": {
|
||||
"decorators": [],
|
||||
"dirt_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "tfg:mars_dirt"
|
||||
}
|
||||
},
|
||||
"foliage_placer": {
|
||||
"type": "minecraft:bush_foliage_placer",
|
||||
"offset": 0,
|
||||
"height": 1,
|
||||
"radius": 2
|
||||
},
|
||||
"foliage_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "betterend:lucernia_leaves"
|
||||
}
|
||||
},
|
||||
"force_dirt": false,
|
||||
"ignore_vines": true,
|
||||
"minimum_size": {
|
||||
"type": "minecraft:two_layers_feature_size",
|
||||
"limit": 1,
|
||||
"lower_size": 0,
|
||||
"upper_size": 0
|
||||
},
|
||||
"trunk_placer": {
|
||||
"type": "minecraft:straight_trunk_placer",
|
||||
"base_height": 1,
|
||||
"height_rand_a": 0,
|
||||
"height_rand_b": 0
|
||||
},
|
||||
"trunk_provider": {
|
||||
"type": "minecraft:simple_state_provider",
|
||||
"state": {
|
||||
"Name": "beneath:wood/stripped_wood/warped"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -309,10 +309,31 @@
|
|||
"secondary_depth_range": 0
|
||||
},
|
||||
"then_run": {
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:venus_sand"
|
||||
}
|
||||
"type": "minecraft:sequence",
|
||||
"sequence": [
|
||||
{
|
||||
"type": "minecraft:condition",
|
||||
"if_true": {
|
||||
"type": "minecraft:noise_threshold",
|
||||
"noise": "minecraft:powder_snow",
|
||||
"min_threshold": 0.1,
|
||||
"max_threshold": 0.3
|
||||
},
|
||||
"then_run": {
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "tfg:rock/gravel_venus"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:venus_sand"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -402,10 +423,30 @@
|
|||
}
|
||||
},
|
||||
"then_run": {
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:venus_sand"
|
||||
}
|
||||
"type": "minecraft:sequence",
|
||||
"sequence": [
|
||||
{
|
||||
"type": "minecraft:condition",
|
||||
"if_true": {
|
||||
"type": "minecraft:noise_threshold",
|
||||
"noise": "minecraft:powder_snow",
|
||||
"min_threshold": 0.1,
|
||||
"max_threshold": 0.3
|
||||
},
|
||||
"then_run": {
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:mars_sand"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:venus_sand"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
|
|
@ -605,8 +646,7 @@
|
|||
"if_true": {
|
||||
"type": "minecraft:biome",
|
||||
"biome_is": [
|
||||
"tfg:mars/martian_mountains",
|
||||
"tfg:mars/martian_hills"
|
||||
"tfg:mars/martian_mountains"
|
||||
]
|
||||
},
|
||||
"then_run": {
|
||||
|
|
|
|||
|
|
@ -627,7 +627,7 @@
|
|||
{
|
||||
"type": "minecraft:block",
|
||||
"result_state": {
|
||||
"Name": "ad_astra:glacio_cobblestone"
|
||||
"Name": "tfg:rock/gravel_glacio"
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"feature": "tfg:mars/surface/aurant_polypore",
|
||||
"placement": [
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"feature": "tfg:mars/surface/bulb_moss",
|
||||
"placement": [
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"feature": "tfg:mars/surface/filalux_wings",
|
||||
"placement": [
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"feature": "tfg:mars/surface/filalux_wings_top",
|
||||
"placement": [
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
},
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
"max_forest": "sparse"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -17,7 +17,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
{
|
||||
"feature": "tfg:mars/surface/purple_polypore",
|
||||
"placement": [
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -7,8 +7,7 @@
|
|||
},
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "none",
|
||||
"max_forest": "normal"
|
||||
"max_forest": "edge"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
|
|
@ -18,7 +17,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
"placement": [
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE_WG"
|
||||
"heightmap": "OCEAN_FLOOR_WG"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "WORLD_SURFACE"
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:block_predicate_filter",
|
||||
|
|
|
|||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"feature": "tfg:mars/tree/cave_bush",
|
||||
"placement": [
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge",
|
||||
"min_rainfall": -5
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"feature": "tfg:mars/tree/lucernia",
|
||||
"placement": [
|
||||
{
|
||||
"type": "minecraft:rarity_filter",
|
||||
"chance": 2
|
||||
},
|
||||
{
|
||||
"type": "tfc:climate",
|
||||
"min_forest": "edge",
|
||||
"max_rainfall": -7
|
||||
},
|
||||
{
|
||||
"type": "minecraft:in_square"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:biome"
|
||||
},
|
||||
{
|
||||
"type": "minecraft:heightmap",
|
||||
"heightmap": "OCEAN_FLOOR"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
@ -272,6 +272,8 @@ const registerAdAstraBlockTags = (event) => {
|
|||
event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium')
|
||||
event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil')
|
||||
event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil')
|
||||
event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants')
|
||||
event.add('minecraft:animals_spawnable_on', '#forge:gravel')
|
||||
|
||||
event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables')
|
||||
event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables')
|
||||
|
|
@ -496,6 +498,8 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite")
|
||||
|
||||
// Vegetation
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove")
|
||||
|
|
@ -513,6 +517,11 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small")
|
||||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top")
|
||||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix")
|
||||
|
|
@ -527,6 +536,12 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/filalux_wings")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/filalux_wings_top")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix")
|
||||
|
|
@ -544,6 +559,9 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom")
|
||||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore")
|
||||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern")
|
||||
|
|
|
|||
|
|
@ -6,102 +6,183 @@ const $ForestType = Java.loadClass("net.dries007.tfc.world.chunkdata.ForestType"
|
|||
|
||||
const ROCK_LAYER_HEIGHT = 40;
|
||||
|
||||
|
||||
// Precompute the aquifer heights as constants as this is not used
|
||||
let EMPTY_AQUIFER = [];
|
||||
let aquifer_i = 0;
|
||||
while (aquifer_i < 16) {
|
||||
EMPTY_AQUIFER.push(32);
|
||||
aquifer_i++;
|
||||
}
|
||||
|
||||
|
||||
// Bare minimum
|
||||
TFCEvents.createChunkDataProvider('moon', event => {
|
||||
const emptyLayer = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
const emptyLayer = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
|
||||
var aquifer = [];
|
||||
let i = 0;
|
||||
while (i < 16) {
|
||||
aquifer.push(32);
|
||||
i++;
|
||||
}
|
||||
var heights = [];
|
||||
for (let x = 0 ; x < 16 ; x++) {
|
||||
for (let z = 0 ; z < 16 ; z++) {
|
||||
heights[x + 16 * z] = 80;
|
||||
}
|
||||
}
|
||||
var heights = [];
|
||||
for (let x = 0; x < 16; x++) {
|
||||
for (let z = 0; z < 16; z++) {
|
||||
heights[x + 16 * z] = 80;
|
||||
}
|
||||
}
|
||||
|
||||
event.partial((data, chunk) => {
|
||||
data.generatePartial(emptyLayer, emptyLayer, 0, 0, 0)
|
||||
})
|
||||
event.full((data, chunk) => {
|
||||
data.generateFull(heights, aquifer)
|
||||
})
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(0, 0)
|
||||
})
|
||||
event.partial((data, chunk) => {
|
||||
data.generatePartial(emptyLayer, emptyLayer, 0, 0, 0)
|
||||
})
|
||||
event.full((data, chunk) => {
|
||||
data.generateFull(heights, EMPTY_AQUIFER)
|
||||
})
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(0, 0)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
let tempLayer = TFC.misc.newOpenSimplex2D(4621678939469)
|
||||
.octaves(2)
|
||||
.spread(0.05)
|
||||
.scaled(-10, 10)
|
||||
let rainLayer = TFC.misc.newOpenSimplex2D(2846746456346)
|
||||
.octaves(2)
|
||||
.spread(0.05)
|
||||
.scaled(-3, 3)
|
||||
let forestDensityNoise = TFC.misc.newOpenSimplex2D(98713856895664)
|
||||
.octaves(4)
|
||||
.spread(0.0025)
|
||||
.scaled(-0.2, 1.2)
|
||||
.clamped(0, 1)
|
||||
let forestWeirdnessNoise = TFC.misc.newOpenSimplex2D(3210378120)
|
||||
.octaves(4)
|
||||
.spread(0.0025)
|
||||
.map(i => 1.1 * Math.abs(i))
|
||||
.clamped(0, 1)
|
||||
|
||||
TFC.misc.register2DNoiseForInspection('temp', tempLayer)
|
||||
TFC.misc.register2DNoiseForInspection('rain', rainLayer)
|
||||
TFC.misc.register2DNoiseForInspection('forestType', forestDensityNoise)
|
||||
TFC.misc.register2DNoiseForInspection('forestWeirdness', forestWeirdnessNoise)
|
||||
|
||||
// Forest layer
|
||||
//const forestTypeLayer = TFC.misc.uniformLayeredArea(45245235242);
|
||||
//for (let i = 0; i < 3; i++) {
|
||||
// forestTypeLayer.zoom(true, 19763144126).smooth(79784123632);
|
||||
//}
|
||||
//for (let i = 0; i < 6; i++) {
|
||||
// forestTypeLayer.zoom(true, 451364589723);
|
||||
//}
|
||||
//forestTypeLayer
|
||||
// .smooth(71214856214)
|
||||
// .zoom(true, 854126548632)
|
||||
// .smooth(145256147896)
|
||||
|
||||
let forestLayerNoise = TFC.misc.newOpenSimplex2D(3210378120)
|
||||
.octaves(2)
|
||||
.spread(0.005)
|
||||
.scaled(0, 1)
|
||||
|
||||
// Rock layer
|
||||
const rockLayer = TFC.misc.uniformLayeredArea(413567326);
|
||||
for (let i = 0; i < 3; i++) {
|
||||
rockLayer.zoom(true, 19763144126).smooth(79784123632);
|
||||
}
|
||||
for (let i = 0; i < 6; i++) {
|
||||
rockLayer.zoom(true, 451364589723);
|
||||
}
|
||||
rockLayer
|
||||
.smooth(71214856214)
|
||||
.zoom(true, 854126548632)
|
||||
.smooth(145256147896)
|
||||
|
||||
|
||||
TFCEvents.createChunkDataProvider('mars', event => {
|
||||
event.partial((data, chunk) => {
|
||||
let x = chunk.pos.minBlockX;
|
||||
let z = chunk.pos.minBlockZ;
|
||||
|
||||
const rain = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
const tempLayer = TFC.misc.newOpenSimplex2D(event.worldSeed + 4621678939469)
|
||||
.spread(0.002)
|
||||
.octaves(3)
|
||||
.scaled(70, 90)
|
||||
const forestLayer = TFC.misc.newOpenSimplex2D(event.worldSeed + 98713856895664)
|
||||
.spread(0.00002)
|
||||
.terraces(9)
|
||||
.affine(6, 12)
|
||||
.scaled(6, 18, 0, 1)
|
||||
const avgTemp1 = calcAverage(z, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_TEMP, global.MARS_MAX_AVG_TEMP)
|
||||
const avgTemp2 = calcAverage(z + 15, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_TEMP, global.MARS_MAX_AVG_TEMP)
|
||||
const avgRain1 = calcAverage(x, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_RAIN, global.MARS_MAX_AVG_RAIN)
|
||||
const avgRain2 = calcAverage(x + 15, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_RAIN, global.MARS_MAX_AVG_RAIN)
|
||||
|
||||
const rockNoise = TFC.misc.newOpenSimplex2D(event.worldSeed + 8008135)
|
||||
.octaves(3)
|
||||
.scaled(0x80000000, 0x7fffffff) // Integer.MIN_VALUE to Integer.MAX_VALUE
|
||||
.spread(0.00001) // spread it out so the vaiance is small
|
||||
let rain = TFC.misc.lerpFloatLayer(
|
||||
avgRain1 + rainLayer.noise(x, z),
|
||||
avgRain1 + rainLayer.noise(x, z + 15),
|
||||
avgRain2 + rainLayer.noise(x + 15, z),
|
||||
avgRain2 + rainLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
let temp = TFC.misc.lerpFloatLayer(
|
||||
avgTemp1 + tempLayer.noise(x, z),
|
||||
avgTemp1 + tempLayer.noise(x, z + 15),
|
||||
avgTemp2 + tempLayer.noise(x + 15, z),
|
||||
avgTemp2 + tempLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
|
||||
// Precompute the aquifer heights as constants as this is not used
|
||||
var aquifer = [];
|
||||
let i = 0;
|
||||
while (i < 16) {
|
||||
aquifer.push(32);
|
||||
i++;
|
||||
}
|
||||
data.generatePartial(
|
||||
rain,
|
||||
temp,
|
||||
//floatToForestType(((forestTypeLayer.getAt(x, z) / 0x80000000) / 2.0) + 0.5),
|
||||
floatToForestType(forestLayerNoise.noise(x, z)),
|
||||
forestWeirdnessNoise.noise(x, z), // forest weirdness
|
||||
forestDensityNoise.noise(x, z) // forest density
|
||||
);
|
||||
});
|
||||
|
||||
event.partial((data, chunk) => {
|
||||
let x = chunk.pos.minBlockX;
|
||||
let z = chunk.pos.minBlockZ;
|
||||
event.full((data, chunk) => {
|
||||
let heights = [];
|
||||
for (let z = 0; z < 16; z++) {
|
||||
for (let x = 0; x < 16; x++) {
|
||||
heights[x + 16 * z] = chunk.getHeight($HeightMap.Types.OCEAN_FLOOR_WG, x, z);
|
||||
}
|
||||
}
|
||||
data.generateFull(heights, EMPTY_AQUIFER);
|
||||
});
|
||||
|
||||
let temp = TFC.misc.lerpFloatLayer(
|
||||
tempLayer.noise(x, z),
|
||||
tempLayer.noise(x, z + 15),
|
||||
tempLayer.noise(x + 15, z),
|
||||
tempLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
|
||||
let forestType = $ForestType.NONE;
|
||||
const forestTypeNoise = forestLayer.noise(x, z);
|
||||
if (forestTypeNoise < 0.2)
|
||||
forestType = $ForestType.OLD_GROWTH;
|
||||
else if (forestTypeNoise < 0.4)
|
||||
forestType = $ForestType.NORMAL;
|
||||
else if (forestTypeNoise < 0.6)
|
||||
forestType = $ForestType.EDGE;
|
||||
else if (forestTypeNoise < 0.8)
|
||||
forestType = $ForestType.SPARSE;
|
||||
|
||||
data.generatePartial(
|
||||
rain,
|
||||
temp,
|
||||
forestType,
|
||||
forestLayer.noise(x * 78423 + 869, z),
|
||||
forestTypeNoise //forestLayer.noise(x, z * 651349 - 698763)
|
||||
);
|
||||
});
|
||||
|
||||
event.full((data, chunk) => {
|
||||
let heights = [];
|
||||
for (let z = 0; z < 16; z++) {
|
||||
for (let x = 0; x < 16; x++) {
|
||||
heights[x + 16 * z] = chunk.getHeight($HeightMap.Types.OCEAN_FLOOR_WG, x, z);
|
||||
}
|
||||
}
|
||||
data.generateFull(heights, aquifer);
|
||||
});
|
||||
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(rockNoise.noise(x, z), (surfaceY - y) / ROCK_LAYER_HEIGHT);
|
||||
});
|
||||
event.rocks((x, y, z, surfaceY, cache, rockSettings) => {
|
||||
return rockSettings.sampleAtLayer(rockLayer.getAt(x, z), (surfaceY - y) / ROCK_LAYER_HEIGHT);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} playerZ The current Z level of the player
|
||||
* @param {number} scale The size of the planet, from the south pole to the north (20k on earth with default TFC settings)
|
||||
* @param {number} min The average value at the poles
|
||||
* @param {number} max The average value at the equator
|
||||
* @returns {number}
|
||||
*/
|
||||
function calcAverage(playerZ, scale, min, max) {
|
||||
|
||||
let relative = (playerZ / scale * -1) + 0.5;
|
||||
|
||||
// relative is now 1 for peak -z, 0 for peak +z
|
||||
|
||||
let smoothed = Math.cos(relative * JavaMath.PI);
|
||||
|
||||
// smoothed is now -1 for peak -z, 1 for peak +z
|
||||
|
||||
let halfDiff = (min - max) / -2;
|
||||
|
||||
let temp = (smoothed * halfDiff) - (halfDiff - max);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} float A number between 0 and 1
|
||||
* @returns {$ForestType}
|
||||
*/
|
||||
// Rhino moment
|
||||
function floatToForestType(float) {
|
||||
if (float < 0.2)
|
||||
return $ForestType.OLD_GROWTH;
|
||||
else if (float < 0.4)
|
||||
return $ForestType.NORMAL;
|
||||
else if (float < 0.6)
|
||||
return $ForestType.EDGE;
|
||||
else if (float < 0.8)
|
||||
return $ForestType.SPARSE;
|
||||
else
|
||||
return $ForestType.NONE;
|
||||
}
|
||||
|
|
@ -8,11 +8,11 @@ TFCEvents.worldgenData(event => {
|
|||
// https://notenoughmail.github.io/kubejs_tfc/1.20.1/worldgen/#forest-types-map-entry
|
||||
// type, treeCount, groundcoverCount, perChunkChance, bushCount, hasSpoilerOldGrowth, allowsOldGrowth, leafPileCount
|
||||
|
||||
event.forestTypesMapEntry('none', [0, 1], 0, 0.02, 0, false, false, 0),
|
||||
event.forestTypesMapEntry('sparse', [1, 3], 6, 0.2, 0, false, false, [0, 1]),
|
||||
event.forestTypesMapEntry('edge', [2, 4], 15, 0.8, 1, true, false, [0, 1]),
|
||||
event.forestTypesMapEntry('normal', [4, 6], 25, 1, 1, true, false, [1, 2]),
|
||||
event.forestTypesMapEntry('old_growth', [5, 8], 40, 1, 2, true, true, [1, 2])
|
||||
event.forestTypesMapEntry('none', [0, 1], 1, 0.1, 0, false, false, 0),
|
||||
event.forestTypesMapEntry('sparse', [0, 3], 10, 0.3, 1, false, false, [0, 1]),
|
||||
event.forestTypesMapEntry('edge', [2, 5], 20, 0.8, 1, true, false, [1, 2]),
|
||||
event.forestTypesMapEntry('normal', [5, 8], 35, 1, 2, true, false, [2, 3]),
|
||||
event.forestTypesMapEntry('old_growth', [8, 12], 50, 1, 3, true, true, [3, 4])
|
||||
],
|
||||
false,
|
||||
placement => {}
|
||||
|
|
@ -20,9 +20,10 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/crimson_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-65)
|
||||
climate.minRain(-10)
|
||||
climate.maxTemp(-41)
|
||||
climate.minTemp(-98)
|
||||
climate.minRain(-12)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'beneath:wood/wood/crimson', // bush log
|
||||
'beneath:wood/leaves/crimson', // bush leaves
|
||||
|
|
@ -31,7 +32,6 @@ TFCEvents.worldgenData(event => {
|
|||
[ // ground cover
|
||||
'minecraft:crimson_fungus',
|
||||
'beneath:wood/fallen_leaves/crimson',
|
||||
'beneath:wood/leaves/crimson',
|
||||
'beneath:wood/twig/crimson',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather'
|
||||
|
|
@ -44,16 +44,16 @@ TFCEvents.worldgenData(event => {
|
|||
null, // chance for old growth in non-old growth forests
|
||||
null, // chance for a fallen tree
|
||||
null, // chance for a dead tree
|
||||
null, // true to spawn on ocean floor, false for world surface
|
||||
null, // false (default) to spawn with the ocean floor heightmap, true for world surface
|
||||
placement => {}
|
||||
)
|
||||
|
||||
event.forestEntry('tfg:mars/warped_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-65)
|
||||
climate.minRain(-20)
|
||||
climate.maxTemp(-39)
|
||||
climate.minTemp(-101)
|
||||
climate.maxRain(0)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'beneath:wood/wood/warped',
|
||||
'beneath:wood/leaves/warped',
|
||||
|
|
@ -62,7 +62,6 @@ TFCEvents.worldgenData(event => {
|
|||
[
|
||||
'minecraft:warped_fungus',
|
||||
'beneath:wood/fallen_leaves/warped',
|
||||
'beneath:wood/leaves/warped',
|
||||
'beneath:wood/twig/warped',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather'
|
||||
|
|
@ -76,18 +75,16 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/aeronos_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-30)
|
||||
climate.minTemp(-85)
|
||||
climate.minRain(-15)
|
||||
climate.minTemp(-77)
|
||||
climate.minRain(-14)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'ad_astra:aeronos_stem',
|
||||
'ad_astra:aeronos_cap',
|
||||
'betterend:cave_bush',
|
||||
'betterend:cave_bush_fallen',
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"ad_astra:aeronos_mushroom",
|
||||
'betterend:cave_bush',
|
||||
'betterend:cave_bush_fallen',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/aeronos_stick'
|
||||
|
|
@ -101,18 +98,16 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/strophar_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-80)
|
||||
climate.maxRain(5)
|
||||
climate.minTemp(-73)
|
||||
climate.maxRain(2)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'ad_astra:strophar_stem',
|
||||
'ad_astra:strophar_cap',
|
||||
'betterend:lucernia_leaves',
|
||||
'betterend:lucernia_leaves_fallen',
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"ad_astra:strophar_mushroom",
|
||||
'betterend:lucernia_leaves',
|
||||
'betterend:lucernia_leaves_fallen',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/strophar_stick'
|
||||
|
|
@ -126,18 +121,18 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/alphacene_forest_entry',
|
||||
climate => {
|
||||
climate.minTemp(-40)
|
||||
climate.minTemp(-65)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'minecraft:mushroom_stem',
|
||||
'species:alphacene_mushroom_block',
|
||||
'minecraft:mushroom_stem',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"species:alphacene_mushroom",
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/alphacene_stick',
|
||||
'tfc:groundcover/stick'
|
||||
'tfg:groundcover/alphacene_stick'
|
||||
],
|
||||
'species:alphacene_mushroom',
|
||||
'tfg:mars/tree/alphacene_dead',
|
||||
|
|
|
|||
|
|
@ -995,6 +995,14 @@ const registerTFGBlockTags = (event) => {
|
|||
event.add('forge:mineable/wrench', 'tfg:machine_casing_aluminium_plated_steel')
|
||||
|
||||
event.add('tfg:decorative_plant_attachable', '#minecraft:logs')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem')
|
||||
event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap')
|
||||
event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush')
|
||||
event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves')
|
||||
}
|
||||
//#endregion
|
||||
|
||||
|
|
|
|||
|
|
@ -139,7 +139,7 @@ function registerBetterEndBlocks(event) {
|
|||
leaves.soundType('azalea_leaves')
|
||||
leaves.tagBlock('minecraft:mineable/hoe')
|
||||
leaves.tagBlock('minecraft:replaceable')
|
||||
// TODO: kjs-tfc 1.3.3 will have an option to disable tinting on leaves
|
||||
leaves.noDynamicTinting()
|
||||
leaves.models((modelType, generator) => {
|
||||
if (modelType.layers != 8) {
|
||||
generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height);
|
||||
|
|
@ -164,7 +164,7 @@ function registerBetterEndBlocks(event) {
|
|||
leaves.soundType('azalea_leaves')
|
||||
leaves.tagBlock('minecraft:mineable/hoe')
|
||||
leaves.tagBlock('minecraft:replaceable')
|
||||
// TODO: kjs-tfc 1.3.3 will have an option to disable tinting on leaves
|
||||
leaves.noDynamicTinting()
|
||||
leaves.models((modelType, generator) => {
|
||||
if (modelType.layers != 8) {
|
||||
generator.parent("tfc:block/groundcover/fallen_leaves_height" + modelType.height);
|
||||
|
|
|
|||
|
|
@ -12,6 +12,12 @@ const TWO_PI = JavaMath.PI * 2;
|
|||
|
||||
const OXYGENATED_TEMP = 15;
|
||||
|
||||
global.MARS_PLANET_SIZE = 10000;
|
||||
global.MARS_MIN_AVG_TEMP = -110;
|
||||
global.MARS_MAX_AVG_TEMP = -15;
|
||||
global.MARS_MIN_AVG_RAIN = -25;
|
||||
global.MARS_MAX_AVG_RAIN = 13;
|
||||
|
||||
function clamp(val, min, max) {
|
||||
return Math.min(Math.max(val, min), max);
|
||||
}
|
||||
|
|
@ -147,22 +153,22 @@ TFCEvents.registerClimateModel(event => {
|
|||
}
|
||||
|
||||
// average of -110 at night, -15 at day
|
||||
let avgTemp = calcAverage(pos.z, 10000, -110, -15);
|
||||
let avgTemp = calcAverage(pos.z, global.MARS_PLANET_SIZE, -110, -15);
|
||||
// +- 45 based on latitude, down to -10 at bedrock
|
||||
return calcCurrentTemp(avgTemp, 65, pos.y, calendarTicks, 45, -10, 0.5);
|
||||
return calcCurrentTemp(avgTemp, 88, pos.y, calendarTicks, 45, -10, 0.5);
|
||||
})
|
||||
|
||||
builder.setAverageTemperatureCalculation((level, pos) => {
|
||||
|
||||
// Earth is 10k to each pole, and mars is about half as big as earth, so 5k to each pole sounds good
|
||||
return calcAverage(pos.z, 10000, -110, -15);
|
||||
return calcAverage(pos.z, global.MARS_PLANET_SIZE, -110, -15);
|
||||
})
|
||||
|
||||
builder.setAverageRainfallCalculation((level, pos) => {
|
||||
|
||||
// irl mars' poles have a snowfall of 0.13mm but that's barely noticeable here.
|
||||
// Use a negative rainfall to stop it snowing closer to the equator. TFC clamps negatives to zero so it's fine
|
||||
return calcAverage(pos.x, 10000, 13, -25)
|
||||
return calcAverage(pos.x, global.MARS_PLANET_SIZE, -25, 13)
|
||||
})
|
||||
|
||||
builder.setAirFog((level, pos, calendarTicks) => 0)
|
||||
|
|
|
|||