· last year · Feb 12, 2025, 04:00 PM
1local player = require("player")
2player.playStartup()
3
4local basalt = require("modules/basalt")
5local bgColor = colors.lightBlue
6basalt.setTheme("BaseFrameBG", bgColor)
7basalt.setTheme("InputText", colors.white)
8
9local main = basalt.createFrame()
10local titleText = main:addLabel()
11titleText
12 :setBackground(bgColor)
13 :setText("MinerOS")
14 :setFontSize(2)
15local x, y = titleText:getSize()
16local tx, ty = term.getSize()
17
18local titlePosX = math.floor(tx / 2 - x / 2) + 1
19local titlePosY = math.floor(ty / 2 - y / 2)
20titleText:setPosition(
21 titlePosX,
22 titlePosY
23)
24
25
26local password = main:addInput()
27password
28 :setInputType("password")
29 :setDefaultText("password")
30 :setSize(x, 1)
31local px, py = password.getSize()
32password
33 :setPosition(
34 math.floor(tx / 2 - px / 2) + 1,
35 math.floor(ty / 2 + y / 2)
36 )
37
38local hint = main
39 :addLabel()
40 :setPosition(
41 math.floor(tx / 2 - px / 2) + 1,
42 math.floor(ty / 2 + y / 2) + 1
43 )
44 :hide()
45
46local pMessager = main:addProgram()
47pMessager:setSize(tx,ty)
48pMessager:execute("messager.lua")
49pMessager:setVisible(false)
50function startMessager()
51 pMessager:setVisible(true)
52end
53function listenEvent()
54 peripheral.find("modem", rednet.open)
55 while true do
56 local id, message = rednet.receive()
57 pMessager:injectEvent(
58 "rednet_message",
59 id,
60 message
61 )
62 end
63 peripheral.find("modem", rednet.close)
64end
65
66local thread = main:addThread()
67
68password
69 :onLoseFocus(function(self)
70 if self:getValue() == "stoneblock" then
71 --thread:start(listenEvent)
72 startMessager()
73 else
74 hint
75 :setText("Incorrect password")
76 :setBackground(bgColor)
77 :setForeground(colors.red)
78 :show()
79 end
80 passValue = ""
81 self:setValue("")
82 end)
83
84basalt.autoUpdate()