CCCPaste

staircase

-- Get player inputs
print("Enter current Y level:")
local startY = tonumber(read())

print("Enter target Y level:")
local targetY = tonumber(read())

print("Enter staircase height (e.g., 3):")
local stairHeight = tonumber(read())

print("Enter staircase width (e.g., 2):")
local stairWidth = tonumber(read())

-- Validate inputs
if not startY or not targetY or not stairHeight or not stairWidth then
    print("Invalid input. Exiting.")
    return
end

if targetY >= startY then
    print("Target Y level must be lower than current level. Exiting.")
    return
end

local steps = startY - targetY

print("Preparing to dig staircase down " .. steps .. " steps, height " .. stairHeight .. ", width " .. stairWidth)

-- Helper: ensure block under is solid
local function ensureFloor()
    if not turtle.detectDown() then
        for slot = 1, 16 do
            local detail = turtle.getItemDetail(slot)
            if detail and detail.name ~= "minecraft:torch" then
                turtle.select(slot)
                turtle.placeDown()
                return
            end
        end
        print("Warning: No blocks available to fill air gap under step!")
    end
end

-- Helper: dig height
local function digHeight()
    for h = 1, stairHeight - 1 do
        turtle.digUp()
        turtle.up()
    end
    -- Return to bottom
    for h = 1, stairHeight - 1 do
        turtle.down()
    end
end

-- Helper: dig width
local function digWidth()
    for w = 1, stairWidth - 1 do
        turtle.turnRight()
        turtle.dig()
        turtle.forward()
        digHeight()
        turtle.back()
        turtle.turnLeft()
    end
end

-- Main loop
for i = 1, steps do
    -- Dig front and down
    while turtle.detect() do
        turtle.dig()
    end

    -- Dig height
    digHeight()

    -- Dig width (right side)
    digWidth()

    -- Move forward
    if not turtle.forward() then
        print("Blocked! Could not move forward.")
        return
    end

    -- Dig down
    while turtle.detectDown() do
        turtle.digDown()
    end

    -- Move down
    if not turtle.down() then
        print("Blocked! Could not move down.")
        return
    end

    -- Ensure solid floor
    ensureFloor()
end

print("Finished digging staircase.")