libdo

Untitled

Nov 6th, 2017
9,658
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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
Add Comment
Please, Sign In to add comment