Add mods: technic, moreores, paintings, Nyancat (Pbj_pup). Small fix: sandwiches
This commit is contained in:
parent
15e8e696a2
commit
fb09deddc1
1404 changed files with 156555 additions and 211 deletions
91
mods/technic_plus_beta/technic_cnc/digilines.lua
Normal file
91
mods/technic_plus_beta/technic_cnc/digilines.lua
Normal file
|
@ -0,0 +1,91 @@
|
|||
|
||||
local rules = technic_cnc.use_technic and technic.digilines.rules or digilines.rules.default
|
||||
local def = {
|
||||
receptor = {
|
||||
rules = rules,
|
||||
},
|
||||
effector = {
|
||||
rules = rules,
|
||||
},
|
||||
}
|
||||
|
||||
local function check_message(meta, channel, msg)
|
||||
-- Digiline channel check
|
||||
if channel ~= meta:get_string("channel") then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Message type check
|
||||
if type(msg) == "string" then
|
||||
-- String is is always valid, get out skipping all table checks
|
||||
return true
|
||||
elseif type(msg) ~= "table" then
|
||||
return false
|
||||
end
|
||||
|
||||
-- Verify that size is either nil or number between 1-2
|
||||
if msg.size ~= nil and (type(msg.size) ~= "number" or msg.size < 1 or msg.size > 2) then
|
||||
msg.size = nil
|
||||
end
|
||||
|
||||
-- Verify program if provided
|
||||
if msg.program ~= nil then
|
||||
-- If program is set it must be string and available
|
||||
if type(msg.program) ~= "string" or not technic_cnc.products[msg.program] then
|
||||
msg.program = nil
|
||||
end
|
||||
end
|
||||
|
||||
-- Message is valid (but not necessarily useful)
|
||||
return true
|
||||
end
|
||||
|
||||
function def.effector.action(pos, node, channel, msg)
|
||||
-- Validate message contents,
|
||||
local meta = minetest.get_meta(pos)
|
||||
if not check_message(meta, channel, msg) then
|
||||
return
|
||||
end
|
||||
|
||||
-- Process message and execute required actions
|
||||
if type(msg) == "string" then
|
||||
msg = msg:lower()
|
||||
if msg == "programs" then
|
||||
digilines.receptor_send(pos, rules, channel, technic_cnc.products)
|
||||
elseif msg == "status" then
|
||||
local inv = meta:get_inventory()
|
||||
local srcstack = inv:get_stack("src", 1)
|
||||
local status = {
|
||||
enabled = technic_cnc.is_enabled(meta),
|
||||
time = meta:get_int("src_time"),
|
||||
size = meta:get_int("size"),
|
||||
program = meta:get_string("program"),
|
||||
user = meta:get_string("cnc_user"),
|
||||
material = {
|
||||
name = srcstack:get_name(),
|
||||
count = srcstack:get_count(),
|
||||
}
|
||||
}
|
||||
digilines.receptor_send(pos, rules, channel, status)
|
||||
elseif msg == "enable" then
|
||||
technic_cnc.enable(meta)
|
||||
elseif msg == "disable" then
|
||||
technic_cnc.disable(meta)
|
||||
end
|
||||
else
|
||||
-- Configure milling programs
|
||||
if msg.program then
|
||||
technic_cnc.set_program(meta, msg.program, msg.size)
|
||||
elseif msg.size then
|
||||
meta:set_int("size", msg.size)
|
||||
end
|
||||
-- Enable / disable CNC machine
|
||||
if msg.enabled == true then
|
||||
technic_cnc.enable(meta)
|
||||
elseif msg.enabled == false then
|
||||
technic_cnc.disable(meta)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return def
|
Loading…
Add table
Add a link
Reference in a new issue