MattiasBuelens

MCNet client

Jun 19th, 2012
135
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.44 KB | None | 0 0
  1. --[[
  2.  
  3.     Minecraft Intranet
  4.     Client program
  5.  
  6. --]]
  7.  
  8. print("Minecraft Intranet :: Client")
  9. print()
  10.  
  11. -- Load dependencies
  12. dofile("/common/all")
  13. program.load("message", "names", "device", "devices/client")
  14.  
  15. -- Create client
  16. local configPath = "/client.conf"
  17. local defaultConfig = {
  18.     name = nil,
  19.     domain = nil,
  20.     detectTimeout = 1
  21. }
  22. local config = common.loadStore(configPath, defaultConfig)
  23. local client = mcnet.device.Client:new{
  24.     name = config.name,
  25.     domain = config.domain
  26. }
  27. print("  Address: "..mcnet.address.format(client.address))
  28. print("  Computer ID: "..tostring(os.computerID()))
  29. print()
  30.  
  31. -- Register handlers
  32. client:on("registerServer", function(serverId)
  33.     print("Registering server at "..serverId.."...")
  34. end)
  35.  
  36. client:on("registeredServer", function()
  37.     print("  Successfully registered at server")
  38. end)
  39.  
  40. client:on("unregisteredServer", function(serverId)
  41.     print("Unregistered server at "..serverId)
  42. end)
  43.  
  44. client:on("char", function(char)
  45.     if char == "q" then
  46.         -- Confirm quit
  47.         write("Confirm quit? [y/n] > ")
  48.         local event, char = os.pullEvent("char")
  49.         -- Check response
  50.         local response = (string.lower(char) == "y" and "y") or "n"
  51.         print(response)
  52.         if (response == "y") then
  53.             client:stop()
  54.         end
  55.     end
  56. end)
  57.  
  58. client:on("key", function(key)
  59.     if (key == 28) then -- Enter
  60.         -- Send message
  61.         print("> Send message")
  62.         write("To: ")
  63.         local address = read()
  64.         write("Message: ")
  65.         local message = read()
  66.        
  67.         local msg = mcnet.message.new{
  68.             type = "mailMessage",
  69.             to = mcnet.address.parse(address),
  70.             data = message
  71.         }
  72.         client:post(msg)
  73.     end
  74. end)
  75.  
  76. client:on("error", function(errorType, errorMessage)
  77.     print("[ERROR] "..errorMessage)
  78. end)
  79.  
  80. -- Mail message receiver
  81. client:addMessageHandler("mailMessage", function(self, senderId, msg)
  82.     print("> New message from "..msg.from:format())
  83.     print("  "..tostring(msg.data))
  84. end)
  85.  
  86. -- Start
  87. print("Starting...")
  88. client:start(config.detectTimeout)
  89. write("  Detected:")
  90. for i,deviceId in pairs(client:neighbours()) do
  91.     write(" "..deviceId)
  92. end
  93. print()
  94. print()
  95.  
  96. -- Main loop
  97. print("Listening...")
  98. print("  Press Q to quit")
  99. print()
  100.  
  101. while client.isRunning do
  102.     client:trigger(os.pullEvent())
  103. end
  104.  
  105. -- Stop
  106. print()
  107. print("Stopped")
  108. print()
Advertisement
Add Comment
Please, Sign In to add comment