--- Applies a layer of 2D noise over the terrain in the defined region. -- @module worldeditadditions.noise2d local wea = worldeditadditions -- ███ ██ ██████ ██ ███████ ███████ ██████ ██████ -- ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ██ ██ ██ ██ ██ ██ ███████ █████ █████ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ██ ████ ██████ ██ ███████ ███████ ███████ ██████ --- Applies a layer of 2d noise over the terrain in the defined region. -- @param pos1 Vector pos1 of the defined region -- @param pos2 Vector pos2 of the defined region -- @param noise_params table A noise parameters table. Will be passed unmodified to PerlinNoise() from the Minetest API. function worldeditadditions.noise.noise2d(pos1, pos2, noise_params) pos1, pos2 = worldedit.sort_pos(pos1, pos2) local region_height = pos1.y - pos2.y -- pos2 will always have the highest co-ordinates now -- Fill in the default params noise_params = worldeditadditions.noise.params_apply_default(noise_params) -- Fetch the nodes in the specified area local manip, area = worldedit.manip_helpers.init(pos1, pos2) local data = manip:get_data() local heightmap_old, heightmap_size = worldeditadditions.make_heightmap( pos1, pos2, manip, area, data ) local heightmap_new = worldeditadditions.table.shallowcopy(heightmap_old) local noisemap = wea.noise.make_2d(noise_params, heightmap_size) wea.noise.apply_2d( heightmap_new, noisemap, heightmap_size, region_height, noise_params.apply ) local success, stats = wea.apply_heightmap_changes( pos1, pos2, area, data, heightmap_old, heightmap_new, heightmap_size ) if not success then return success, stats end -- Save the modified nodes back to disk & return worldedit.manip_helpers.finish(manip, data) return true, stats end