Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local component = require("component")
- if not component.isAvailable("geolyzer") then
- io.stderr:write("This program requires a Geolyzer to run.\n")
- return
- end
- if not component.isAvailable("hologram") then
- io.stderr:write("This program requires a Hologram Projector to run.\n")
- return
- end
- local geolyzer =component.geolyzer
- local hologram =component.hologram
- local sx, sz = 48, 48
- local ox, oz = -24, -24
- local starty, stopy = -5
- local function validateY(value, min, max, default)
- value = tonumber(value) or default
- if value < min or value > max then
- io.stderr:write("invalid y coordinate, must be in [" .. min .. ", " .. max .. "]\n")
- os.exit(1)
- end
- return value
- end
- do
- local args = {...}
- starty = validateY(args[1], -32, 31, starty)
- stopy = validateY(args[2], starty, starty + 32, math.min(starty + 32, 31))
- end
- hologram.clear()
- for x=ox,sx+ox do
- for z=oz,sz+oz do
- local hx, hz = 1 + x - ox, 1 + z - oz
- local column = geolyzer.scan(x, z, false)
- for y=1,1+stopy-starty do
- local color = 0
- if column then
- local hardness = column[y + starty + 32]
- if hardness == 0 or not hardness then
- color = 0
- elseif hardness < 3 then
- color = 2
- elseif hardness < 100 then
- color = 1
- else
- color = 3
- end
- end
- if hologram.maxDepth() > 1 then
- hologram.set(hx, y, hz, color)
- else
- hologram.set(hx, y, hz, math.min(color, 1))
- end
- end
- os.sleep(0)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement