Add crafting turtle script to listen for craft commands via modem
This commit is contained in:
45
craftingTurtle.lua
Normal file
45
craftingTurtle.lua
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
-- Crafting Turtle Script
|
||||||
|
-- Run this on the crafting turtle (turtle with crafting table).
|
||||||
|
-- Listens for craft commands from the master computer via wired modem.
|
||||||
|
|
||||||
|
local CRAFT_CHANNEL = 4203
|
||||||
|
local CRAFT_REPLY_CHANNEL = 4204
|
||||||
|
|
||||||
|
-- Find modem (wired or wireless)
|
||||||
|
local modem = peripheral.find("modem")
|
||||||
|
if not modem then
|
||||||
|
print("[ERR] No modem found! Attach a wired modem.")
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
modem.open(CRAFT_CHANNEL)
|
||||||
|
|
||||||
|
print("=================================")
|
||||||
|
print(" Crafting Turtle (Listener)")
|
||||||
|
print("=================================")
|
||||||
|
print("")
|
||||||
|
print("Listening on channel " .. CRAFT_CHANNEL)
|
||||||
|
print("Ready for craft commands from master.")
|
||||||
|
print("")
|
||||||
|
|
||||||
|
while true do
|
||||||
|
local event, side, channel, replyChannel, message = os.pullEvent("modem_message")
|
||||||
|
if channel == CRAFT_CHANNEL and type(message) == "table" and message.type == "craft" then
|
||||||
|
local count = message.count or 1
|
||||||
|
print(string.format("[CRAFT] Received craft request (count=%d)", count))
|
||||||
|
|
||||||
|
local ok, err = turtle.craft(count)
|
||||||
|
|
||||||
|
if ok then
|
||||||
|
print("[CRAFT] Success!")
|
||||||
|
else
|
||||||
|
print("[CRAFT] Failed: " .. tostring(err))
|
||||||
|
end
|
||||||
|
|
||||||
|
modem.transmit(replyChannel, CRAFT_CHANNEL, {
|
||||||
|
type = "craft_result",
|
||||||
|
success = ok,
|
||||||
|
error = not ok and tostring(err) or nil,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
end
|
||||||
Reference in New Issue
Block a user