View difference between Paste ID: KsGsS49v and zvUaiBzY
SHOW: | | - or go back to the newest paste.
1
local ruin_deg = 10
2
local light_chance = 100 --The greater the number, less is the chance.
3
4
function generate_hallway_segment(pos, size, height, base_material, direction)
5
	--pos - postion
6
	--direction - north/south or east/west (2, 1)
7
	local x,y,z = pos.x,pos.y,pos.z
8
	local manip = minetest.get_voxel_manip()
9
	local pos1 = {x = x + size/2, y = y + height, z = z + size/2}
10
	local pos2 = {x = x - size/2, y = y, z = z - size/2}
11
	local e1, e2 = manip:read_from_map(pos1, pos2)
12
	local area = VoxelArea:new{MinEdge=e1, MaxEdge=e2}
13
	local data = manip:get_data()
14
15
	-- A block made out of the material --
16
17
	for posX = pos2.x, pos1.x do
18
		for posY = pos2.y, pos1.y do
19
			for posZ = pos2.z, pos1.z do
20
				data[area:index(posX, posY, posZ)] = base_material
21
			end
22
		end
23
	end
24
	-- Filled directionally with air --
25
	if direction == 1 then
26
		for internalX = pos2.x - 1, pos1.x + 1 do
27
			for internalY = pos2.y + 1, pos1.y - 1 do
28
				for internalZ = pos2.z + 1, pos1.z - 1 do
29
					light = math.random(light_chance)
30
					-- And Lights --
31
					if light == 25 then
32
						data[area:index(internalX, internalY, internalZ)] = c_light
33
					else
34
						data[area:index(internalX, internalY, internalZ)] = c_air
35
					end
36
				end
37
			end
38
		end
39
	elseif direction == 2 then
40
		for internalX = pos2.x + 1, pos1.x - 1 do
41
			for internalY = pos2.y + 1, pos1.y - 1 do
42
				for internalZ = pos2.z - 1, pos1.z + 1 do
43
					light = math.random(50)
44
					if light == 25 then
45
						data[area:index(internalX, internalY, internalZ)] = c_light
46
					else
47
						data[area:index(internalX, internalY, internalZ)] = c_air
48
					end
49
				end
50
			end
51
		end
52
	end