Bug fixes
							parent
							
								
									25a72b62a4
								
							
						
					
					
						commit
						cae90a06c4
					
				|  | @ -0,0 +1 @@ | |||
| .vscode | ||||
							
								
								
									
										60
									
								
								script.lua
								
								
								
								
							
							
						
						
									
										60
									
								
								script.lua
								
								
								
								
							|  | @ -209,7 +209,11 @@ end | |||
| 
 | ||||
| -- Get connectivity noise params | ||||
| function internal.connectivity_noise_params() | ||||
|     local factor = math.max(1, math.abs(#ns_cavegen.registered_shapes) ^ 0.5) | ||||
|     local shapes = 0 | ||||
|     for _, _ in pairs(ns_cavegen.registered_shapes) do | ||||
|         shapes = shapes + 1 | ||||
|     end | ||||
|     local factor = math.max(1, math.abs(shapes) ^ 0.5) | ||||
| 
 | ||||
|     return { | ||||
|         offset = 50, | ||||
|  | @ -277,8 +281,11 @@ function internal.find_biome_allocations(heat, humidity, va) | |||
| 
 | ||||
|             if def_d < d then | ||||
|                 local pos = va:position(i) | ||||
|                 local contains_x = def.min_pos.x <= pos.x and pos.x <= def.max_pos.x | ||||
|                 local contains_y = def.min_pos.y <= pos.y and pos.y <= def.max_pos.y | ||||
|                 local contains_z = def.min_pos.z <= pos.z and pos.z <= def.max_pos.z | ||||
| 
 | ||||
|                 if VoxelArea:new(def.min_pos, def.max_pos):contains(pos.x, pos.y, pos.z) then | ||||
|                 if contains_x and contains_y and contains_z then | ||||
|                     d = def_d | ||||
|                     biome_name = name | ||||
|                 end | ||||
|  | @ -313,9 +320,9 @@ function internal.find_shape_allocations(connectivity, verticality, va) | |||
|             ) | ||||
| 
 | ||||
|             if def_d < d then | ||||
|                 local pos = va:position(i) | ||||
|                 local y = va:position(i).y | ||||
| 
 | ||||
|                 if VoxelArea:new(def.min_pos, def.max_pos):contains(pos.x, pos.y, pos.z) then | ||||
|                 if def.y_min <= y and y <= def.y_max then | ||||
|                     d = def_d | ||||
|                     shape_name = name | ||||
|                 end | ||||
|  | @ -394,24 +401,18 @@ function internal.generate_perlin_noise(noiseparams, minp, maxp) | |||
| end | ||||
| 
 | ||||
| function internal.generate_shape(def, minp, maxp, va) | ||||
|     -- local noise_flat = {} | ||||
| 
 | ||||
|     -- Get random noise if noise_params are given | ||||
|     if def.noise_params then | ||||
|         return internal.generate_perlin_noise(def.noise_params, minp, maxp) | ||||
|     else | ||||
|         return {} | ||||
|         -- for i in va:iterp(minp, maxp) do | ||||
|         --     noise_flat[i] = 0 | ||||
|         -- end | ||||
|         local noise_flat = {} | ||||
| 
 | ||||
|         for i in va:iterp(minp, maxp) do | ||||
|             noise_flat[i] = 0 | ||||
|         end | ||||
| 
 | ||||
|         return noise_flat | ||||
|     end | ||||
| 
 | ||||
|     -- -- Update noise with custom defined function | ||||
|     -- for i in va:iterp(minp, maxp) do | ||||
|     --     noise_flat[i] = def.func(va:position(i), noise_flat[i]) | ||||
|     -- end | ||||
| 
 | ||||
|     -- return noise_flat | ||||
| end | ||||
| 
 | ||||
| -- Generate verticality noise within given boundaries | ||||
|  | @ -449,6 +450,15 @@ function internal.humidity_noise_params() | |||
|     } | ||||
| end | ||||
| 
 | ||||
| function internal.log_classified_nodes(classified_nodes) | ||||
|     minetest.debug("Found " .. #classified_nodes.ceiling_decos .. " ceiling decorations") | ||||
|     minetest.debug("Found " .. #classified_nodes.ceilings .. " ceiling nodes") | ||||
|     minetest.debug("Found " .. #classified_nodes.contents .. " content nodes") | ||||
|     minetest.debug("Found " .. #classified_nodes.floors .. " floor nodes") | ||||
|     minetest.debug("Found " .. #classified_nodes.floor_decos .. " floor decorations") | ||||
|     minetest.debug("Found " .. #classified_nodes.walls .. " wall nodes") | ||||
| end | ||||
| 
 | ||||
| -- Take all necessary steps to execute the mapgen | ||||
| function internal.mapgen(vm, minp, maxp, blockseed) | ||||
|     -- Create bordered VoxelArea. | ||||
|  | @ -480,6 +490,7 @@ function internal.mapgen(vm, minp, maxp, blockseed) | |||
| 
 | ||||
|     -- Classify various nodes as walls, floors, ceilings | ||||
|     local classified_nodes = internal.classify_nodes(used_shapes, bminp, bmaxp) | ||||
|     -- internal.log_classified_nodes(classified_nodes) | ||||
| 
 | ||||
|     -- Draw cave biomes | ||||
|     local used_biomes = internal.find_biome_allocations(heat, humidity, sva) | ||||
|  | @ -582,7 +593,11 @@ end | |||
| 
 | ||||
| -- Get verticality noise params | ||||
| function internal.verticality_noise_params() | ||||
|     local factor = math.max(1, math.abs(#ns_cavegen.registered_shapes) ^ 0.5) | ||||
|     local shapes = 0 | ||||
|     for _, _ in pairs(ns_cavegen.registered_shapes) do | ||||
|         shapes = shapes + 1 | ||||
|     end | ||||
|     local factor = math.max(1, math.abs(shapes) ^ 0.5) | ||||
| 
 | ||||
|     return { | ||||
|         offset = 50, | ||||
|  | @ -628,7 +643,7 @@ function internal.write_classified_node(vm_data, va, used_biomes, classified_nod | |||
| 
 | ||||
|         local content_id = biome_to_id[biome] | ||||
| 
 | ||||
|         if content_id ~= "" then | ||||
|         if type(content_id) == "number" then | ||||
|             local vi = va:index(pos.x, pos.y, pos.z) | ||||
|             local vm_node = vm_data[vi] | ||||
| 
 | ||||
|  | @ -640,6 +655,11 @@ function internal.write_classified_node(vm_data, va, used_biomes, classified_nod | |||
|             if ground_content_nodes[vm_node] then | ||||
|                 vm_data[vi] = content_id | ||||
|             end | ||||
|         elseif content_id == "air" then | ||||
|             minetest.debug("Biome " .. biome .. "||| BREAAAK") | ||||
|             break | ||||
|         elseif content_id ~= "" and content_id ~= nil and content_id ~= "air" then | ||||
|             minetest.debug("Encountered content ID " .. content_id) | ||||
|         end | ||||
|     end | ||||
| end | ||||
|  | @ -775,7 +795,7 @@ function internal.write_simple_ceiling_decorations(vm_data, va, used_biomes, cla | |||
|                             16, math.random(def.height, def.height_max) | ||||
|                         ) | ||||
|                     end | ||||
|                      | ||||
| 
 | ||||
|                     -- Place the structure! | ||||
|                     for h = 1, height, 1 do | ||||
|                         local y = pos.y - h + def.place_offset_y + 1 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue