Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- v1.0
- local blocks = {
- front = {turtle.inspect()},
- above = {turtle.inspectUp()},
- below = {turtle.inspectDown()},
- item = turtle.getItemDetail()
- }
- local keysPressed = {
- up = false,
- down = false,
- }
- local displayText = {}
- local xSize, ySize = term.getSize()
- local page = 1
- local scrollPos = 0
- function display()
- term.clear()
- term.setCursorPos(1,1)
- if page == 1 then
- displayText = {
- [ 1] = "Action Commands Software Commands",
- [ 2] = " Delete = Dig Left = Last Page ",
- [ 3] = " Insert = Place/Use Right = Next Page ",
- [ 4] = " Z = Attack PgUp = Scroll Up ",
- [ 5] = " R = Refuel PgDown = Scroll Down",
- [ 6] = " V = Vein Miner U = Update Data",
- [ 7] = "",
- [ 8] = "Movement Commands Inventory Commands",
- [ 9] = " W = Forward Num8 = Inv. Slot Up ",
- [10] = " A = Left Num4 = Inv. Slot Left ",
- [11] = " S = Back Num2 = Inv. Slot Down ",
- [12] = " D = Right Num6 = Inv. Slot Right",
- [13] = "Space = Up Q = Drop Item ",
- [14] = "Shift = Down E = Pick Up Item ",
- [15] = " Up = Face Up [ = Equip Left ",
- [16] = " Down = Face Down ] = Equip Right ",
- }
- if term.isColor() then
- table.insert(displayText, 17, " Scroll Wheel = Cycle Inv. Slot")
- table.insert(displayText, 7, "R Click = Place/Use")
- table.insert(displayText, 7, "L Click = Dig ")
- end
- if turtle.craft then table.insert(displayText, 7, " C = Craft ") end
- for a = 1, ySize-2 do
- if displayText[a+scrollPos] == "Movement Commands Inventory Commands"
- or displayText[a+scrollPos] == "Action Commands Software Commands"
- or displayText[a+scrollPos] == "Program List Commands" then
- term.setTextColor(colors.lightBlue)
- else
- term.setTextColor(colors.white)
- end
- print(displayText[a+scrollPos])
- end
- term.setTextColor(colors.yellow)
- term.setCursorPos(1, ySize-1)
- print(" Right = Inspect")
- elseif page == 2 then
- local text = ""
- term.setTextColor(colors.lightBlue)
- if keysPressed.up then
- print("Inspecting Block Above:")
- if blocks.above[1] then
- text = "Name: "..blocks.above[2].name
- text = text.."\nState:"..string.sub(textutils.serialize(blocks.above[2].state), 2, string.len(textutils.serialize(blocks.above[2].state))-2)
- text = text.."\nTags:\n"..string.sub(textutils.serialize(blocks.above[2].tags), 2, string.len(textutils.serialize(blocks.above[2].tags))-2)
- else text = blocks.above[2].."\n" end
- elseif keysPressed.down then
- print("Inspecting Block Below:")
- if blocks.below[1] then
- text = "Name: "..blocks.below[2].name
- text = text.."\nState:"..string.sub(textutils.serialize(blocks.below[2].state), 2, string.len(textutils.serialize(blocks.below[2].state))-2)
- text = text.."\nTags:"..string.sub(textutils.serialize(blocks.below[2].tags), 2, string.len(textutils.serialize(blocks.below[2].tags))-2)
- else text = blocks.below[2].."\n" end
- else
- print("Inspecting Block In Front:")
- if blocks.front[1] then
- text = "Name: "..blocks.front[2].name
- text = text.."\nState:"..string.sub(textutils.serialize(blocks.front[2].state), 2, string.len(textutils.serialize(blocks.front[2].state))-1)
- text = text.."Tags:"..string.sub(textutils.serialize(blocks.front[2].tags), 2, string.len(textutils.serialize(blocks.front[2].tags))-1)
- else text = blocks.front[2].."\n" end
- end
- term.setTextColor(colors.white)
- textByLines(text)
- term.setTextColor(colors.yellow)
- term.setCursorPos(1, ySize-1)
- print("Left = Commands Right = Item Info")
- elseif page == 3 then
- local text = ""
- term.setTextColor(colors.lightBlue)
- print("Inspecting Selected Item:")
- if blocks.item == nil then text = "No item in the selected slot.\n"
- else
- text = "Name: "..blocks.item.name
- text = text.."\nCount: "..blocks.item.count
- text = text.."\nTags:"..string.sub(textutils.serialize(blocks.item.tags), 2, string.len(textutils.serialize(blocks.item.tags))-1)
- end
- term.setTextColor(colors.white)
- textByLines(text)
- term.setTextColor(colors.yellow)
- term.setCursorPos(1, ySize-1)
- print("Left = Inspect ")
- end
- write("T = Exit F: ")
- if keysPressed.up then write("Up")
- elseif keysPressed.down then write("Down")
- else write("Front") end
- term.setCursorPos(xSize-16+(5-string.len(turtle.getFuelLevel())),13)
- write("Fuel: "..turtle.getFuelLevel().."/"..turtle.getFuelLimit())
- end
- function textByLines(text)
- displayText = {}
- local a, lastSpace = 1, 1
- repeat
- if string.sub(text, 1, 2) == " " then text = string.sub(text, 3, string.len(text)) end
- if string.sub(text, a, a) == " " or string.sub(text, a, a) == "\n" then lastSpace = a end
- if string.sub(text, a, a) == "\n" or a == xSize then
- if lastSpace > 1 then
- displayText[#displayText+1] = string.sub(text, 1, lastSpace-1)
- text = string.sub(text, lastSpace+1, string.len(text))
- else
- displayText[#displayText+1] = string.sub(text, 1, a)
- text = string.sub(text, a+1, string.len(text))
- end
- a, lastSpace = 1, 1
- else a = a + 1
- end
- until string.len(text) == 0
- for a = 1, ySize-3 do
- if a+scrollPos > #displayText then print("")
- else print(displayText[a+scrollPos]) end
- end
- end
- function updateData()
- blocks.front = {turtle.inspect()}
- blocks.above = {turtle.inspectUp()}
- blocks.below = {turtle.inspectDown()}
- blocks.item = turtle.getItemDetail()
- end
- while true do
- display()
- local event = {os.pullEvent()}
- if event[1] == "key" then
- os.pullEvent("key_up")
- -- Movement Commands
- if event[2] == keys.w then
- turtle.forward()
- updateData()
- elseif event[2] == keys.a then
- turtle.turnLeft()
- blocks.front = {turtle.inspect()}
- elseif event[2] == keys.s then
- turtle.back()
- updateData()
- elseif event[2] == keys.d then
- turtle.turnRight()
- blocks.front = {turtle.inspect()}
- elseif event[2] == keys.space then
- turtle.up()
- updateData()
- elseif event[2] == keys.leftShift then
- turtle.down()
- updateData()
- elseif event[2] == keys.up then
- if keysPressed.down then keysPressed.down = false
- else keysPressed.up = true end
- elseif event[2] == keys.down then
- if keysPressed.up then keysPressed.up = false
- else keysPressed.down = true end
- -- Inventory Management Commands
- elseif event[2] == keys.numPad8 then
- local newSlot = turtle.getSelectedSlot() - 4
- if newSlot < 1 then newSlot = newSlot + 16 end
- turtle.select(newSlot)
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.numPad4 then
- local newSlot = turtle.getSelectedSlot() - 1
- if newSlot%4 == 0 then newSlot = newSlot + 4 end
- turtle.select(newSlot)
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.numPad2 then
- local newSlot = turtle.getSelectedSlot() + 4
- if newSlot > 16 then newSlot = newSlot - 16 end
- turtle.select(newSlot)
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.numPad6 then
- local newSlot = turtle.getSelectedSlot() + 1
- if newSlot%4 == 1 then newSlot = newSlot - 4 end
- turtle.select(newSlot)
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.q then
- if keysPressed.up then turtle.dropUp()
- elseif keysPressed.down then turtle.dropDown()
- else turtle.drop() end
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.e then
- if keysPressed.up then turtle.suckUp()
- elseif keysPressed.down then turtle.suckDown()
- else turtle.suck() end
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.leftBracket then
- turtle.equipLeft()
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.rightBracket then
- turtle.equipRight()
- blocks.item = turtle.getItemDetail()
- -- Action Commands
- elseif event[2] == keys.delete then
- if keysPressed.up then
- turtle.digUp()
- blocks.above = {turtle.inspectUp()}
- elseif keysPressed.down then
- turtle.digDown()
- blocks.below = {turtle.inspectDown()}
- else
- turtle.dig()
- blocks.front = {turtle.inspect()}
- end
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.insert then
- if keysPressed.up then
- turtle.placeUp()
- blocks.above = {turtle.inspectUp()}
- elseif keysPressed.down then
- turtle.placeDown()
- blocks.below = {turtle.inspectDown()}
- else
- turtle.place()
- blocks.front = {turtle.inspect()}
- end
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.z then
- if keysPressed.up then turtle.attackUp()
- elseif keysPressed.down then turtle.attackDown()
- else turtle.attack() end
- elseif event[2] == keys.r then
- turtle.refuel(1)
- blocks.item = turtle.getItemDetail()
- elseif event[2] == keys.v then
- term.setTextColor(colors.white)
- shell.run("VeinMiner.lua")
- updateData()
- elseif event[2] == keys.c then
- if turtle.craft then
- turtle.craft(1)
- blocks.item = turtle.getItemDetail()
- end
- -- Software Commands
- elseif event[2] == keys.u then
- updateData()
- elseif event[2] == keys.t then
- term.clear()
- term.setCursorPos(1,1)
- error()
- elseif event[2] == keys.right then
- if page < 3 then page = page + 1 end
- scrollPos, displayText = 0, {}
- elseif event[2] == keys.left then
- if page > 1 then page = page - 1 end
- scrollPos, displayText = 0, {}
- elseif event[2] == keys.pageUp and scrollPos > 0 then
- scrollPos = scrollPos - 1
- elseif event[2] == keys.pageDown and (page == 1 and scrollPos+ySize-2 < #displayText) or (page > 1 and scrollPos+ySize-3 < #displayText) then
- scrollPos = scrollPos + 1
- end
- elseif event[1] == "mouse_click" then
- os.pullEvent("mouse_up")
- if event[2] == 1 then
- if keysPressed.up then
- turtle.digUp()
- blocks.above = {turtle.inspectUp()}
- elseif keysPressed.down then
- turtle.digDown()
- blocks.below = {turtle.inspectDown()}
- else
- turtle.dig()
- blocks.front = {turtle.inspect()}
- end
- elseif event[2] == 2 then
- if keysPressed.up then
- turtle.placeUp()
- blocks.above = {turtle.inspectUp()}
- elseif keysPressed.down then
- turtle.placeDown()
- blocks.below = {turtle.inspectDown()}
- else
- turtle.place()
- blocks.front = {turtle.inspect()}
- end
- end
- elseif event[1] == "mouse_scroll" then
- local newSlot = turtle.getSelectedSlot() + event[2]
- if newSlot < 1 then newSlot = newSlot + 16 end
- if newSlot > 16 then newSlot = newSlot - 16 end
- turtle.select(newSlot)
- blocks.item = turtle.getItemDetail()
- elseif event[1] == "turtle_inventory" then
- blocks.item = turtle.getItemDetail()
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement