Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Blood Altar Turtle (redstone-based crafting, ASCII UI)
- local TIMEOUT = 60 -- seconds to wait before giving up
- ---------------------------------------------------
- -- Helpers
- ---------------------------------------------------
- local function header(title)
- term.clear()
- term.setCursorPos(1,1)
- print("=== Blood Altar Turtle ===")
- print("--------------------------")
- print(title)
- print("")
- end
- local function getSlot1ItemId()
- local data = turtle.getItemDetail(1)
- if not data then return nil end
- return data.name
- end
- ---------------------------------------------------
- -- Crafting Logic
- ---------------------------------------------------
- local function processOne()
- if turtle.getItemCount(1) == 0 then return false end
- local itemId = getSlot1ItemId()
- if not itemId then return false end
- header("Preparing item: " .. itemId)
- -- Drop item into altar
- turtle.select(1)
- while not turtle.drop(1) do
- header("Preparing item: " .. itemId)
- print("[!] Altar occupied. Waiting...")
- sleep(1)
- end
- turtle.suckUp(1)
- turtle.select(16)
- -- Wait for redstone signal or timeout
- local crafted = false
- local timer = os.startTimer(TIMEOUT)
- local waited = 0
- while true do
- header("Processing item: " .. itemId)
- print("[...] Waiting for altar signal")
- print(" Time waited: " .. waited .. "s / " .. TIMEOUT .. "s")
- local event, arg = os.pullEvent() -- wait for any event
- if event == "redstone" then
- crafted = true
- break
- elseif event == "timer" and arg == timer then
- header("Processing item: " .. itemId)
- print("[!] Timeout reached (" .. TIMEOUT .. "s). Assuming stuck.")
- break
- end
- waited = waited + 1
- end
- -- Pull finished item
- turtle.suck()
- -- Exit if slot 1 is empty
- if turtle.getItemCount(1) == 0 then
- header("Shutting down...")
- print("No more items in slot 1. Exiting program.")
- error("Slot 1 empty, exiting.") -- stops the program
- end
- return true
- end
- ---------------------------------------------------
- -- Main Loop
- ---------------------------------------------------
- header("Ready")
- print("Put raw items in slot 1.")
- print("Turtle will wait for altar signal.")
- print("Timeout after " .. TIMEOUT .. " seconds.\n")
- while true do
- if not processOne() then
- sleep(1)
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment