mirror of
				https://github.com/FaceDeer/dfcaverns.git
				synced 2025-10-31 08:15:24 +01:00 
			
		
		
		
	add giant jungle mushroom, rough out actual cavern layer code framework
This commit is contained in:
		| @@ -48,3 +48,7 @@ setting("bool", "enable_underworld", true, "Enable underworld") | ||||
| df_caverns.config.enable_underworld = df_caverns.config.enable_underworld and minetest.get_modpath("df_underworld_items") ~= nil | ||||
| setting("int", "underworld_level", -3200, "Underworld level") | ||||
| setting("int", "underworld_glowing_pit_mapblocks", 8, "Average pit spacing measured in mapblocks") | ||||
|  | ||||
| setting("bool", "enable_primordial", true, "Enable primordial cavern") | ||||
| setting("int", "primordial_max", -3393, "Upper limit to primordial caverns") | ||||
| setting("int", "primordial_min", -4032, "Lower limit to primordial caverns") | ||||
|   | ||||
| @@ -15,3 +15,4 @@ dofile(modpath.."/sunless_sea.lua") | ||||
| dofile(modpath.."/oil_sea.lua") | ||||
| dofile(modpath.."/lava_sea.lua") | ||||
| dofile(modpath.."/underworld.lua") | ||||
| dofile(modpath.."/primordial.lua") | ||||
							
								
								
									
										138
									
								
								df_caverns/primordial.lua
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										138
									
								
								df_caverns/primordial.lua
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,138 @@ | ||||
| if not df_caverns.config.enable_primordial or not minetest.get_modpath("df_primordial_items") then | ||||
| 	return | ||||
| end | ||||
|  | ||||
| ----------------------------------------------------------------------------------------- | ||||
|  | ||||
| local perlin_cave_primordial = { | ||||
| 	offset = 0, | ||||
| 	scale = 1, | ||||
| 	spread = {x=df_caverns.config.horizontal_cavern_scale, y=df_caverns.config.vertical_cavern_scale, z=df_caverns.config.horizontal_cavern_scale}, | ||||
| 	seed = 14055553, | ||||
| 	octaves = 3, | ||||
| 	persist = 0.67 | ||||
| } | ||||
|  | ||||
| local perlin_wave_primordial = { | ||||
| 	offset = 0, | ||||
| 	scale = 1, | ||||
| 	spread = {x=df_caverns.config.horizontal_cavern_scale, y=df_caverns.config.vertical_cavern_scale, z=df_caverns.config.horizontal_cavern_scale}, | ||||
| 	seed = 923444, | ||||
| 	octaves = 6, | ||||
| 	persist = 0.63 | ||||
| } | ||||
|  | ||||
|  | ||||
| local mushroom_cavern_floor = function(abs_cracks, vi, area, data, data_param2) | ||||
| 	local ystride = area.ystride | ||||
| end | ||||
|  | ||||
| local mushroom_cavern_ceiling = function(abs_cracks, vi, area, data, data_param2) | ||||
| end | ||||
|  | ||||
|  | ||||
| local jungle_cavern_floor = function(abs_cracks, vi, area, data, data_param2) | ||||
| 	local ystride = area.ystride | ||||
| end | ||||
|  | ||||
| local jungle_cavern_ceiling = function(abs_cracks, vert_rand, vi, area, data, data_param2) | ||||
| end | ||||
|  | ||||
|  | ||||
| local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, data) | ||||
| 	math.randomseed(minp.x + minp.y*2^8 + minp.z*2^16 + seed) -- make decorations consistent between runs | ||||
|  | ||||
| 	local data_param2 = df_caverns.data_param2 | ||||
| 	vm:get_param2_data(data_param2) | ||||
| 	local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks) | ||||
| 	local cave_area = node_arrays.cave_area | ||||
| 	local nvals_cave = node_arrays.nvals_cave | ||||
| 	 | ||||
| 	--------------------------------------------------------- | ||||
| 	-- Cavern floors | ||||
| 	 | ||||
| 	for _, vi in ipairs(node_arrays.cavern_floor_nodes) do | ||||
| 		local index2d = mapgen_helper.index2di(minp, maxp, area, vi) | ||||
| 		local cracks = nvals_cracks[index2d] | ||||
| 		local abs_cracks = math.abs(cracks) | ||||
| 		local jungle = nvals_cave[cave_area:transform(area, vi)] < 0 | ||||
| 		 | ||||
| 		if jungle then | ||||
| 			jungle_cavern_floor(abs_cracks, vi, area, data, data_param2) | ||||
| 		else | ||||
| 			mushroom_cavern_floor(abs_cracks, vi, area, data, data_param2) | ||||
| 		end | ||||
| 	end | ||||
| 	 | ||||
| 	-------------------------------------- | ||||
| 	-- Cavern ceilings | ||||
|  | ||||
| 	for _, vi in ipairs(node_arrays.cavern_ceiling_nodes) do | ||||
| 		local index2d = mapgen_helper.index2di(minp, maxp, area, vi) | ||||
| 		local cracks = nvals_cracks[index2d] | ||||
| 		local abs_cracks = math.abs(cracks) | ||||
| 		local jungle = nvals_cave[cave_area:transform(area, vi)] < 0 | ||||
|  | ||||
| 		if jungle then | ||||
| 			jungle_cavern_ceiling(abs_cracks, vi, area, data, data_param2) | ||||
| 		else | ||||
| 			mushroom_cavern_ceiling(abs_cracks, vi, area, data, data_param2) | ||||
| 		end | ||||
|  | ||||
|  | ||||
| 	end | ||||
| 	 | ||||
| 		---------------------------------------------- | ||||
| 	-- Tunnel floors | ||||
| 	 | ||||
| 	for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do | ||||
| 	end | ||||
| 	 | ||||
| 	------------------------------------------------------ | ||||
| 	-- Tunnel ceiling | ||||
| 	 | ||||
| 	for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do | ||||
| 	end | ||||
| 	 | ||||
| 	------------------------------------------------------ | ||||
| 	-- Warren ceiling | ||||
|  | ||||
| 	for _, vi in ipairs(node_arrays.warren_ceiling_nodes) do | ||||
| 	end | ||||
|  | ||||
| 	---------------------------------------------- | ||||
| 	-- Warren floors | ||||
| 	 | ||||
| 	for _, vi in ipairs(node_arrays.warren_floor_nodes) do | ||||
| 	end | ||||
|  | ||||
| 	-- columns | ||||
| 	for _, vi in ipairs(node_arrays.column_nodes) do | ||||
| 		local jungle = nvals_cave[cave_area:transform(area, vi)] < 0 | ||||
| 		if jungle then | ||||
| 		end | ||||
| 	end | ||||
|  | ||||
| 	vm:set_param2_data(data_param2) | ||||
| end | ||||
|  | ||||
| --Primordial Caverns | ||||
| subterrane.register_layer({ | ||||
| 	name = "primordial", | ||||
| 	y_max = df_caverns.config.primordial_max, | ||||
| 	y_min = df_caverns.config.primordial_min, | ||||
| 	cave_threshold = df_caverns.config.sunless_sea_threshold, -- Make the caves a bit bigger than above | ||||
| 	perlin_cave = perlin_cave_primordial, | ||||
| 	perlin_wave = perlin_wave_primordial, | ||||
| 	solidify_lava = true, | ||||
| 	columns = { | ||||
| 		maximum_radius = 20, | ||||
| 		minimum_radius = 5, | ||||
| 		node = "df_mapitems:wet_flowstone", | ||||
| 		weight = 0.5, | ||||
| 		maximum_count = 60, | ||||
| 		minimum_count = 10, | ||||
| 	}, | ||||
| 	decorate = decorate_primordial, | ||||
| 	double_frequency = true, | ||||
| }) | ||||
| @@ -37,4 +37,9 @@ dfcaverns_lava_sea_level (Lava sea level) int -2900 | ||||
| dfcaverns_enable_underworld (Generate underworld) bool true | ||||
| dfcaverns_underworld_level (Underworld level) int -3200 | ||||
| #Set this to 0 to disable glowing pit generation entirely. | ||||
| dfcaverns_underworld_glowing_pit_mapblocks(Average pit spacing measured in mapblocks) int 8 | ||||
| dfcaverns_underworld_glowing_pit_mapblocks(Average pit spacing measured in mapblocks) int 8 | ||||
|  | ||||
| [Primordial] | ||||
| dfcaverns_enable_primordial (Generate primordial caverns) bool true | ||||
| dfcaverns_primordial_max (Upper limit of primordial caverns) int -3393 | ||||
| dfcaverns_primordial_min (Lower limit of primordial caverns) int -4032 | ||||
		Reference in New Issue
	
	Block a user