mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-12-25 15:02:22 +01:00
Add .luacheckrc and fix issues it pointed out (#589)
This commit is contained in:
parent
c9dd323207
commit
fb255d292e
15
.github/workflows/check-release.yml
vendored
Normal file
15
.github/workflows/check-release.yml
vendored
Normal file
@ -0,0 +1,15 @@
|
||||
on: [push, pull_request]
|
||||
name: Check & Release
|
||||
|
||||
jobs:
|
||||
lint:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: apt
|
||||
run: sudo apt-get install -y luarocks
|
||||
- name: luacheck install
|
||||
run: luarocks install --local luacheck
|
||||
- name: luacheck run
|
||||
run: $HOME/.luarocks/bin/luacheck ./
|
36
.luacheckrc
Normal file
36
.luacheckrc
Normal file
@ -0,0 +1,36 @@
|
||||
std = "lua51c"
|
||||
|
||||
ignore = {
|
||||
"21/_+", -- Unused variable, except "_", "__", etc.
|
||||
"213", -- Unused loop variable
|
||||
"421", -- Shadowing a local variable
|
||||
"422", -- Shadowing an argument
|
||||
"423", -- Shadowing a loop variable
|
||||
"431", -- Shadowing an upvalue
|
||||
"432", -- Shadowing an upvalue argument
|
||||
"433", -- Shadowing an upvalue loop variable
|
||||
"542", -- Empty if branch
|
||||
}
|
||||
|
||||
max_line_length = 200
|
||||
|
||||
read_globals = {
|
||||
"default",
|
||||
"digiline",
|
||||
"doors",
|
||||
"dump",
|
||||
"jit",
|
||||
"minetest",
|
||||
"screwdriver",
|
||||
"string.split",
|
||||
"table.copy",
|
||||
"table.insert_all",
|
||||
"vector",
|
||||
"VoxelArea",
|
||||
}
|
||||
|
||||
globals = {"mesecon"}
|
||||
|
||||
files["mesecons/actionqueue.lua"] = {
|
||||
globals = {"minetest.registered_globalsteps"},
|
||||
}
|
@ -29,7 +29,7 @@ local queue = mesecon.queue
|
||||
queue.actions = {} -- contains all ActionQueue actions
|
||||
|
||||
function queue:add_function(name, func)
|
||||
queue.funcs[name] = func
|
||||
self.funcs[name] = func
|
||||
end
|
||||
|
||||
-- If add_action with twice the same overwritecheck and same position are called, the first one is overwritten
|
||||
@ -51,17 +51,17 @@ function queue:add_action(pos, func, params, time, overwritecheck, priority)
|
||||
|
||||
-- check if old action has to be overwritten / removed:
|
||||
if overwritecheck then
|
||||
for i, ac in ipairs(queue.actions) do
|
||||
for i, ac in ipairs(self.actions) do
|
||||
if vector.equals(pos, ac.pos)
|
||||
and mesecon.cmpAny(overwritecheck, ac.owcheck) then
|
||||
-- remove the old action
|
||||
table.remove(queue.actions, i)
|
||||
table.remove(self.actions, i)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
table.insert(queue.actions, action)
|
||||
table.insert(self.actions, action)
|
||||
end
|
||||
|
||||
-- execute the stored functions on a globalstep
|
||||
@ -133,8 +133,8 @@ end
|
||||
function queue:execute(action)
|
||||
-- ignore if action queue function name doesn't exist,
|
||||
-- (e.g. in case the action queue savegame was written by an old mesecons version)
|
||||
if queue.funcs[action.func] then
|
||||
queue.funcs[action.func](action.pos, unpack(action.params))
|
||||
if self.funcs[action.func] then
|
||||
self.funcs[action.func](action.pos, unpack(action.params))
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -318,7 +318,7 @@ function mesecon.get_conductor_on(node_off, rulename)
|
||||
return conductor.states[tonumber(binstate,2)+1]
|
||||
end
|
||||
end
|
||||
return offstate
|
||||
return nil
|
||||
end
|
||||
|
||||
function mesecon.get_conductor_off(node_on, rulename)
|
||||
@ -334,7 +334,7 @@ function mesecon.get_conductor_off(node_on, rulename)
|
||||
return conductor.states[tonumber(binstate,2)+1]
|
||||
end
|
||||
end
|
||||
return onstate
|
||||
return nil
|
||||
end
|
||||
|
||||
function mesecon.conductor_get_rules(node)
|
||||
|
@ -11,4 +11,4 @@ local old_forceloaded_blocks = mesecon.file2table("mesecon_forceloaded")
|
||||
for hash, _ in pairs(old_forceloaded_blocks) do
|
||||
minetest.forceload_free_block(unhash_blockpos(hash))
|
||||
end
|
||||
os.remove(minetest.get_worldpath()..DIR_DELIM.."mesecon_forceloaded")
|
||||
os.remove(minetest.get_worldpath().."/mesecon_forceloaded")
|
||||
|
@ -11,7 +11,7 @@ minetest.register_node("mesecons:mesecon_off", {
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5},
|
||||
},
|
||||
groups = {dig_immediate=3, mesecon=1, mesecon_conductor_craftable=1},
|
||||
description="Mesecons",
|
||||
description="Mesecons",
|
||||
mesecons = {conductor={
|
||||
state = mesecon.state.off,
|
||||
onstate = "mesecons:mesecon_on"
|
||||
|
@ -63,7 +63,7 @@ mesecon.on_dignode = function(pos, node)
|
||||
mesecon.execute_autoconnect_hooks_queue(pos, node)
|
||||
end
|
||||
|
||||
function mesecon.on_blastnode(pos, intensity)
|
||||
function mesecon.on_blastnode(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
minetest.remove_node(pos)
|
||||
mesecon.on_dignode(pos, node)
|
||||
|
@ -286,7 +286,7 @@ end
|
||||
-- File writing / reading utilities
|
||||
local wpath = minetest.get_worldpath()
|
||||
function mesecon.file2table(filename)
|
||||
local f = io.open(wpath..DIR_DELIM..filename, "r")
|
||||
local f = io.open(wpath.."/"..filename, "r")
|
||||
if f == nil then return {} end
|
||||
local t = f:read("*all")
|
||||
f:close()
|
||||
@ -295,7 +295,7 @@ function mesecon.file2table(filename)
|
||||
end
|
||||
|
||||
function mesecon.table2file(filename, table)
|
||||
local f = io.open(wpath..DIR_DELIM..filename, "w")
|
||||
local f = io.open(wpath.."/"..filename, "w")
|
||||
f:write(minetest.serialize(table))
|
||||
f:close()
|
||||
end
|
||||
@ -376,7 +376,7 @@ function mesecon.vm_get_node(pos)
|
||||
local tbl = vm_get_or_create_entry(pos)
|
||||
local index = tbl.va:indexp(pos)
|
||||
local node_value = tbl.data[index]
|
||||
if node_value == core.CONTENT_IGNORE then
|
||||
if node_value == minetest.CONTENT_IGNORE then
|
||||
return nil
|
||||
else
|
||||
local node_param1 = tbl.param1[index]
|
||||
|
@ -32,7 +32,7 @@ mesecon.register_node("mesecons_blinkyplant:blinky_plant", {
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
|
||||
},
|
||||
on_timer = on_timer,
|
||||
on_rightclick = function(pos, node, clicker)
|
||||
on_rightclick = function(pos, _, clicker)
|
||||
if minetest.is_protected(pos, clicker and clicker:get_player_name() or "") then
|
||||
return
|
||||
end
|
||||
|
@ -79,7 +79,7 @@ local function after_place(pos, placer)
|
||||
end
|
||||
end
|
||||
|
||||
local function receive_fields(pos, formname, fields, sender)
|
||||
local function receive_fields(pos, _, fields, sender)
|
||||
if not fields.submit then
|
||||
return
|
||||
end
|
||||
|
@ -12,7 +12,7 @@ local function object_detector_make_formspec(pos)
|
||||
"button_exit[7,0.75;2,3;;Save]")
|
||||
end
|
||||
|
||||
local function object_detector_on_receive_fields(pos, formname, fields, sender)
|
||||
local function object_detector_on_receive_fields(pos, _, fields, sender)
|
||||
if not fields.scanname or not fields.digiline_channel then return end
|
||||
|
||||
if minetest.is_protected(pos, sender:get_player_name()) then return end
|
||||
@ -53,7 +53,7 @@ end
|
||||
-- set player name when receiving a digiline signal on a specific channel
|
||||
local object_detector_digiline = {
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
action = function(pos, _, channel, msg)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if channel == meta:get_string("digiline_channel") then
|
||||
meta:set_string("scanname", msg)
|
||||
@ -156,7 +156,7 @@ local function node_detector_make_formspec(pos)
|
||||
"button_exit[7,0.75;2,3;;Save]")
|
||||
end
|
||||
|
||||
local function node_detector_on_receive_fields(pos, fieldname, fields, sender)
|
||||
local function node_detector_on_receive_fields(pos, _, fields, sender)
|
||||
if not fields.scanname or not fields.digiline_channel then return end
|
||||
|
||||
if minetest.is_protected(pos, sender:get_player_name()) then return end
|
||||
@ -238,23 +238,6 @@ local node_detector_digiline = {
|
||||
receptor = {}
|
||||
}
|
||||
|
||||
local function after_place_node_detector(pos, placer)
|
||||
local placer_pos = placer:get_pos()
|
||||
if not placer_pos then
|
||||
return
|
||||
end
|
||||
|
||||
--correct for the player's height
|
||||
if placer:is_player() then
|
||||
placer_pos.y = placer_pos.y + 1.625
|
||||
end
|
||||
|
||||
--correct for 6d facedir
|
||||
local node = minetest.get_node(pos)
|
||||
node.param2 = minetest.dir_to_facedir(vector.subtract(pos, placer_pos), true)
|
||||
minetest.set_node(pos, node)
|
||||
end
|
||||
|
||||
minetest.register_node("mesecons_detector:node_detector_off", {
|
||||
tiles = {"default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "default_steel_block.png", "jeija_node_detector_off.png"},
|
||||
paramtype = "light",
|
||||
|
@ -22,11 +22,11 @@ end
|
||||
local function meseconify_door(name)
|
||||
if minetest.registered_items[name .. "_b_1"] then
|
||||
-- old style double-node doors
|
||||
local function toggle_state1 (pos, node)
|
||||
local function toggle_state1 (pos)
|
||||
on_rightclick(pos, 1, name.."_t_1", name.."_b_2", name.."_t_2", {1,2,3,0})
|
||||
end
|
||||
|
||||
local function toggle_state2 (pos, node)
|
||||
local function toggle_state2 (pos)
|
||||
on_rightclick(pos, 1, name.."_t_2", name.."_b_1", name.."_t_1", {3,0,1,2})
|
||||
end
|
||||
|
||||
@ -49,13 +49,13 @@ local function meseconify_door(name)
|
||||
-- new style mesh node based doors
|
||||
local override = {
|
||||
mesecons = {effector = {
|
||||
action_on = function(pos, node)
|
||||
action_on = function(pos)
|
||||
local door = doors.get(pos)
|
||||
if door then
|
||||
door:open()
|
||||
end
|
||||
end,
|
||||
action_off = function(pos, node)
|
||||
action_off = function(pos)
|
||||
local door = doors.get(pos)
|
||||
if door then
|
||||
door:close()
|
||||
@ -93,13 +93,13 @@ end
|
||||
if doors and doors.get then
|
||||
local override = {
|
||||
mesecons = {effector = {
|
||||
action_on = function(pos, node)
|
||||
action_on = function(pos)
|
||||
local door = doors.get(pos)
|
||||
if door then
|
||||
door:open()
|
||||
end
|
||||
end,
|
||||
action_off = function(pos, node)
|
||||
action_off = function(pos)
|
||||
local door = doors.get(pos)
|
||||
if door then
|
||||
door:close()
|
||||
|
@ -1,15 +1,13 @@
|
||||
local function crossover_get_rules(node)
|
||||
return {
|
||||
{--first wire
|
||||
{x=-1,y=0,z=0},
|
||||
{x=1,y=0,z=0},
|
||||
},
|
||||
{--second wire
|
||||
{x=0,y=0,z=-1},
|
||||
{x=0,y=0,z=1},
|
||||
},
|
||||
}
|
||||
end
|
||||
local crossover_rules = {
|
||||
{--first wire
|
||||
{x=-1,y=0,z=0},
|
||||
{x=1,y=0,z=0},
|
||||
},
|
||||
{--second wire
|
||||
{x=0,y=0,z=-1},
|
||||
{x=0,y=0,z=1},
|
||||
},
|
||||
}
|
||||
|
||||
local crossover_states = {
|
||||
"mesecons_extrawires:crossover_off",
|
||||
@ -38,7 +36,7 @@ minetest.register_node("mesecons_extrawires:crossover_off", {
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
rules = crossover_get_rules(),
|
||||
rules = crossover_rules,
|
||||
}
|
||||
},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
@ -65,7 +63,7 @@ minetest.register_node("mesecons_extrawires:crossover_01", {
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
rules = crossover_get_rules(),
|
||||
rules = crossover_rules,
|
||||
}
|
||||
},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
@ -92,7 +90,7 @@ minetest.register_node("mesecons_extrawires:crossover_10", {
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
rules = crossover_get_rules(),
|
||||
rules = crossover_rules,
|
||||
}
|
||||
},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
@ -119,7 +117,7 @@ minetest.register_node("mesecons_extrawires:crossover_on", {
|
||||
mesecons = {
|
||||
conductor = {
|
||||
states = crossover_states,
|
||||
rules = crossover_get_rules(),
|
||||
rules = crossover_rules,
|
||||
}
|
||||
},
|
||||
on_blast = mesecon.on_blastnode,
|
||||
|
@ -69,7 +69,7 @@ local vertical_updatepos = function (pos)
|
||||
end
|
||||
end
|
||||
|
||||
local vertical_update = function (pos, node)
|
||||
local vertical_update = function (pos)
|
||||
vertical_updatepos(pos) -- this one
|
||||
vertical_updatepos(vector.add(pos, vertical_rules[1])) -- above
|
||||
vertical_updatepos(vector.add(pos, vertical_rules[2])) -- below
|
||||
|
@ -96,7 +96,7 @@ plg.register_nodes({
|
||||
meta:set_int("valid", 0)
|
||||
meta:set_string("infotext", "FPGA")
|
||||
end,
|
||||
on_rightclick = function(pos, node, clicker)
|
||||
on_rightclick = function(pos, _, clicker)
|
||||
if not minetest.is_player(clicker) then
|
||||
return
|
||||
end
|
||||
@ -113,7 +113,7 @@ plg.register_nodes({
|
||||
mesecons = {
|
||||
effector = {
|
||||
rules = {}, -- replaced later
|
||||
action_change = function(pos, node, rule, newstate)
|
||||
action_change = function(pos, _, rule, newstate)
|
||||
plg.ports_changed(pos, rule, newstate)
|
||||
plg.update(pos)
|
||||
end
|
||||
@ -129,7 +129,7 @@ plg.register_nodes({
|
||||
end
|
||||
end,
|
||||
on_blast = mesecon.on_blastnode,
|
||||
on_rotate = function(pos, node, user, mode)
|
||||
on_rotate = function(pos, _, user, mode)
|
||||
local abcd1 = {"A", "B", "C", "D"}
|
||||
local abcd2 = {A = 1, B = 2, C = 3, D = 4}
|
||||
local ops = {"op1", "op2", "dst"}
|
||||
|
@ -10,10 +10,10 @@ local operations = {
|
||||
-- unary: Whether this gate only has one input
|
||||
{ gate = "and", short = "&", fs_name = " AND", func = function(a, b) return a and b end },
|
||||
{ gate = "or", short = "|", fs_name = " OR", func = function(a, b) return a or b end },
|
||||
{ gate = "not", short = "~", fs_name = " NOT", func = function(a, b) return not b end, unary = true },
|
||||
{ gate = "not", short = "~", fs_name = " NOT", func = function(_, b) return not b end, unary = true },
|
||||
{ gate = "xor", short = "^", fs_name = " XOR", func = function(a, b) return a ~= b end },
|
||||
{ gate = "nand", short = "?", fs_name = "NAND", func = function(a, b) return not (a and b) end },
|
||||
{ gate = "buf", short = "_", fs_name = " =", func = function(a, b) return b end, unary = true },
|
||||
{ gate = "buf", short = "_", fs_name = " =", func = function(_, b) return b end, unary = true },
|
||||
{ gate = "xnor", short = "=", fs_name = "XNOR", func = function(a, b) return a == b end },
|
||||
{ gate = "nor", short = "!", fs_name = " NOR", func = function(a, b) return not (a or b) end },
|
||||
}
|
||||
|
@ -65,7 +65,6 @@ end
|
||||
local function register_gate(name, inputnumber, assess, recipe, description)
|
||||
local get_inputrules = inputnumber == 2 and gate_get_input_rules_twoinputs or
|
||||
gate_get_input_rules_oneinput
|
||||
description = "Logic Gate: "..name
|
||||
|
||||
local basename = "mesecons_gates:"..name
|
||||
mesecon.register_node(basename, {
|
||||
|
@ -72,7 +72,7 @@ minetest.register_abm({
|
||||
nodenames = {"mesecons_hydroturbine:hydro_turbine_off"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
action = function(pos)
|
||||
local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
|
||||
if is_flowing_water(waterpos) then
|
||||
minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"})
|
||||
@ -85,7 +85,7 @@ minetest.register_abm({
|
||||
nodenames = {"mesecons_hydroturbine:hydro_turbine_on"},
|
||||
interval = 1,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
action = function(pos)
|
||||
local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
|
||||
if not is_flowing_water(waterpos) then
|
||||
minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"})
|
||||
|
@ -60,7 +60,7 @@ local function update_real_port_states(pos, rule_name, new_state)
|
||||
if rule_name.x == nil then
|
||||
for _, rname in ipairs(rule_name) do
|
||||
local port = pos_to_side[rname.x + (2 * rname.z) + 3]
|
||||
L[port] = (newstate == "on") and 1 or 0
|
||||
L[port] = (new_state == "on") and 1 or 0
|
||||
end
|
||||
else
|
||||
local port = pos_to_side[rule_name.x + (2 * rule_name.z) + 3]
|
||||
@ -172,7 +172,7 @@ local function burn_controller(pos)
|
||||
minetest.after(0.2, mesecon.receptor_off, pos, mesecon.rules.flat)
|
||||
end
|
||||
|
||||
local function overheat(pos, meta)
|
||||
local function overheat(pos)
|
||||
if mesecon.do_overheat(pos) then -- If too hot
|
||||
burn_controller(pos)
|
||||
return true
|
||||
@ -612,9 +612,8 @@ local function run_inner(pos, code, event)
|
||||
if overheat(pos) then return true, "" end
|
||||
if ignore_event(event, meta) then return true, "" end
|
||||
|
||||
-- Load code & mem from meta
|
||||
-- Load mem from meta
|
||||
local mem = load_memory(meta)
|
||||
local code = meta:get_string("code")
|
||||
|
||||
-- 'Last warning' label.
|
||||
local warning = ""
|
||||
@ -626,15 +625,17 @@ local function run_inner(pos, code, event)
|
||||
local itbl = {}
|
||||
local env = create_environment(pos, mem, event, itbl, send_warning)
|
||||
|
||||
local success, msg
|
||||
-- Create the sandbox and execute code
|
||||
local f, msg = create_sandbox(code, env)
|
||||
local f
|
||||
f, msg = create_sandbox(code, env)
|
||||
if not f then return false, msg end
|
||||
-- Start string true sandboxing
|
||||
local onetruestring = getmetatable("")
|
||||
-- If a string sandbox is already up yet inconsistent, something is very wrong
|
||||
assert(onetruestring.__index == string)
|
||||
onetruestring.__index = env.string
|
||||
local success, msg = pcall(f)
|
||||
success, msg = pcall(f)
|
||||
onetruestring.__index = string
|
||||
-- End string true sandboxing
|
||||
if not success then return false, msg end
|
||||
@ -748,7 +749,7 @@ local selection_box = {
|
||||
local digiline = {
|
||||
receptor = {},
|
||||
effector = {
|
||||
action = function(pos, node, channel, msg)
|
||||
action = function(pos, _, channel, msg)
|
||||
msg = clean_and_weigh_digiline_message(msg)
|
||||
run(pos, {type = "digiline", channel = channel, msg = msg})
|
||||
end
|
||||
@ -766,7 +767,7 @@ local function set_program(pos, code)
|
||||
return run(pos, {type="program"})
|
||||
end
|
||||
|
||||
local function on_receive_fields(pos, form_name, fields, sender)
|
||||
local function on_receive_fields(pos, _, fields, sender)
|
||||
if not fields.program then
|
||||
return
|
||||
end
|
||||
@ -871,7 +872,7 @@ for d = 0, 1 do
|
||||
c = c == 1,
|
||||
d = d == 1,
|
||||
},
|
||||
after_dig_node = function (pos, node)
|
||||
after_dig_node = function (pos)
|
||||
mesecon.do_cooldown(pos)
|
||||
mesecon.receptor_off(pos, output_rules)
|
||||
end,
|
||||
|
@ -2,13 +2,13 @@
|
||||
minetest.register_craftitem("mesecons_materials:glue", {
|
||||
image = "mesecons_glue.png",
|
||||
on_place_on_ground = minetest.craftitem_place_item,
|
||||
description="Glue",
|
||||
description="Glue",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("mesecons_materials:fiber", {
|
||||
image = "mesecons_fiber.png",
|
||||
on_place_on_ground = minetest.craftitem_place_item,
|
||||
description="Fiber",
|
||||
description="Fiber",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
@ -29,7 +29,7 @@ minetest.register_craft({
|
||||
minetest.register_craftitem("mesecons_materials:silicon", {
|
||||
image = "mesecons_silicon.png",
|
||||
on_place_on_ground = minetest.craftitem_place_item,
|
||||
description="Silicon",
|
||||
description="Silicon",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
|
@ -102,7 +102,7 @@ minetest.register_node(nodename, {
|
||||
for i=1, EEPROM_SIZE+1 do r=r.."0" end --Generate a string with EEPROM_SIZE*"0"
|
||||
meta:set_string("eeprom", r)
|
||||
end,
|
||||
on_receive_fields = function(pos, formanme, fields, sender)
|
||||
on_receive_fields = function(pos, _, fields, sender)
|
||||
local player_name = sender:get_player_name()
|
||||
if minetest.is_protected(pos, player_name) and
|
||||
not minetest.check_player_privs(player_name, {protection_bypass=true}) then
|
||||
@ -225,7 +225,6 @@ yc.parsecode = function(code, pos)
|
||||
local Lreal = yc.get_real_portstates(pos)
|
||||
local Lvirtual = yc.get_virtual_portstates(pos)
|
||||
if Lvirtual == nil then return nil end
|
||||
local c
|
||||
local eeprom = meta:get_string("eeprom")
|
||||
while true do
|
||||
local command, params
|
||||
@ -251,9 +250,9 @@ yc.parsecode = function(code, pos)
|
||||
if not params then return nil end
|
||||
end
|
||||
if command == "on" then
|
||||
L = yc.command_on (params, Lvirtual)
|
||||
Lvirtual = yc.command_on (params, Lvirtual)
|
||||
elseif command == "off" then
|
||||
L = yc.command_off(params, Lvirtual)
|
||||
Lvirtual = yc.command_off(params, Lvirtual)
|
||||
elseif command == "print" then
|
||||
local su = yc.command_print(params, eeprom, yc.merge_portstates(Lreal, Lvirtual))
|
||||
if su ~= true then return nil end
|
||||
@ -384,7 +383,6 @@ end
|
||||
|
||||
--Commands
|
||||
yc.command_on = function(params, L)
|
||||
local rules = {}
|
||||
for i, port in ipairs(params) do
|
||||
L = yc.set_portstate (port, true, L)
|
||||
end
|
||||
@ -392,7 +390,6 @@ yc.command_on = function(params, L)
|
||||
end
|
||||
|
||||
yc.command_off = function(params, L)
|
||||
local rules = {}
|
||||
for i, port in ipairs(params) do
|
||||
L = yc.set_portstate (port, false, L)
|
||||
end
|
||||
@ -405,7 +402,7 @@ yc.command_print = function(params, eeprom, L)
|
||||
if param:sub(1,1) == '"' and param:sub(#param, #param) == '"' then
|
||||
s = s..param:sub(2, #param-1)
|
||||
else
|
||||
r = yc.command_parsecondition(param, L, eeprom)
|
||||
local r = yc.command_parsecondition(param, L, eeprom)
|
||||
if r == "1" or r == "0" then
|
||||
s = s..r
|
||||
else return nil end
|
||||
@ -469,8 +466,8 @@ yc.command_after_execute = function(params)
|
||||
if yc.parsecode(params.code, params.pos) == nil then
|
||||
meta:set_string("infotext", "Code in after() not valid!")
|
||||
else
|
||||
if code ~= nil then
|
||||
meta:set_string("infotext", "Working Microcontroller\n"..code)
|
||||
if params.code ~= nil then
|
||||
meta:set_string("infotext", "Working Microcontroller\n"..params.code)
|
||||
else
|
||||
meta:set_string("infotext", "Working Microcontroller")
|
||||
end
|
||||
@ -543,8 +540,8 @@ yc.command_parsecondition = function(cond, L, eeprom)
|
||||
cond = string.gsub(cond, "!0", "1")
|
||||
cond = string.gsub(cond, "!1", "0")
|
||||
|
||||
local i = 2
|
||||
local l = string.len(cond)
|
||||
i = 2
|
||||
l = string.len(cond)
|
||||
while i<=l do
|
||||
local s = cond:sub(i,i)
|
||||
local b = tonumber(cond:sub(i-1, i-1))
|
||||
@ -553,8 +550,7 @@ yc.command_parsecondition = function(cond, L, eeprom)
|
||||
if s == "=" then
|
||||
if a==nil then return nil end
|
||||
if b==nil then return nil end
|
||||
if a == b then buf = "1" end
|
||||
if a ~= b then buf = "0" end
|
||||
local buf = a == b and "1" or "0"
|
||||
cond = string.gsub(cond, b..s..a, buf)
|
||||
i = 1
|
||||
l = string.len(cond)
|
||||
@ -562,8 +558,8 @@ yc.command_parsecondition = function(cond, L, eeprom)
|
||||
i = i + 1
|
||||
end
|
||||
|
||||
local i = 2
|
||||
local l = string.len(cond)
|
||||
i = 2
|
||||
l = string.len(cond)
|
||||
while i<=l do
|
||||
local s = cond:sub(i,i)
|
||||
local b = tonumber(cond:sub(i-1, i-1))
|
||||
@ -659,7 +655,7 @@ yc.set_portstate = function(port, state, L)
|
||||
return L
|
||||
end
|
||||
|
||||
yc.update_real_portstates = function(pos, node, rulename, newstate)
|
||||
yc.update_real_portstates = function(pos, _, rulename, newstate)
|
||||
local meta = minetest.get_meta(pos)
|
||||
if rulename == nil then
|
||||
meta:set_int("real_portstates", 1)
|
||||
@ -696,7 +692,7 @@ end
|
||||
|
||||
yc.get_virtual_portstates = function(pos) -- portstates according to the name
|
||||
local name = minetest.get_node(pos).name
|
||||
local b, a = string.find(name, ":microcontroller")
|
||||
local _, a = string.find(name, ":microcontroller")
|
||||
if a == nil then return nil end
|
||||
a = a + 1
|
||||
|
||||
|
@ -71,7 +71,7 @@ function mesecon.register_movestone(name, def, is_sticky, is_vertical)
|
||||
-- ### Step 3: If sticky, pull stack behind ###
|
||||
if is_sticky then
|
||||
local backpos = vector.subtract(pos, direction)
|
||||
success, stack, oldstack = mesecon.mvps_pull_all(backpos, direction, max_pull, owner)
|
||||
local success, _, oldstack = mesecon.mvps_pull_all(backpos, direction, max_pull, owner)
|
||||
if success then
|
||||
mesecon.mvps_move_objects(backpos, vector.multiply(direction, -1), oldstack, -1)
|
||||
end
|
||||
@ -94,7 +94,7 @@ function mesecon.register_movestone(name, def, is_sticky, is_vertical)
|
||||
|
||||
def.after_place_node = mesecon.mvps_set_owner
|
||||
|
||||
def.on_punch = function(pos, node, player)
|
||||
def.on_punch = function(pos, _, player)
|
||||
local player_name = player and player.get_player_name and player:get_player_name()
|
||||
if mesecon.mvps_claim(pos, player_name) then
|
||||
minetest.get_node_timer(pos):start(timer_interval)
|
||||
@ -102,7 +102,7 @@ function mesecon.register_movestone(name, def, is_sticky, is_vertical)
|
||||
end
|
||||
end
|
||||
|
||||
def.on_timer = function(pos, elapsed)
|
||||
def.on_timer = function(pos)
|
||||
local sourcepos = mesecon.is_powered(pos)
|
||||
if not sourcepos then
|
||||
return
|
||||
|
@ -271,7 +271,6 @@ function mesecon.mvps_push_or_pull(pos, stackdir, movedir, maximum, all_pull_sti
|
||||
end
|
||||
|
||||
function mesecon.mvps_move_objects(pos, dir, nodestack, movefactor)
|
||||
local objects_to_move = {}
|
||||
local dir_k
|
||||
local dir_l
|
||||
for k, v in pairs(dir) do
|
||||
|
@ -107,7 +107,7 @@ local function piston_off(pos, node)
|
||||
local dir = minetest.facedir_to_dir(node.param2)
|
||||
local pullpos = vector.add(pos, vector.multiply(dir, -2))
|
||||
local meta = minetest.get_meta(pos)
|
||||
local success, stack, oldstack = mesecon.mvps_pull_single(pullpos, dir, max_pull, meta:get_string("owner"))
|
||||
local success, _, oldstack = mesecon.mvps_pull_single(pullpos, dir, max_pull, meta:get_string("owner"))
|
||||
if success then
|
||||
mesecon.mvps_move_objects(pullpos, vector.multiply(dir, -1), oldstack, -1)
|
||||
end
|
||||
@ -234,7 +234,7 @@ local function piston_rotate_pusher(pos, node, player, mode)
|
||||
return piston_rotate_on(piston_pos, piston_node, player, mode)
|
||||
end
|
||||
|
||||
local function piston_punch(pos, node, player)
|
||||
local function piston_punch(pos, _, player)
|
||||
local player_name = player and player.get_player_name and player:get_player_name()
|
||||
if mesecon.mvps_claim(pos, player_name) then
|
||||
minetest.chat_send_player(player_name, "Reclaimed piston")
|
||||
@ -422,7 +422,7 @@ minetest.register_node("mesecons_pistons:piston_pusher_sticky", {
|
||||
|
||||
|
||||
-- Register pushers as stoppers if they would be seperated from the piston
|
||||
local function piston_pusher_get_stopper(node, dir, stack, stackid)
|
||||
local function piston_pusher_get_stopper(node, _, stack, stackid)
|
||||
if (stack[stackid + 1]
|
||||
and stack[stackid + 1].node.name == get_pistonspec(node.name, "pusher").onname
|
||||
and stack[stackid + 1].node.param2 == node.param2)
|
||||
@ -434,32 +434,12 @@ local function piston_pusher_get_stopper(node, dir, stack, stackid)
|
||||
return true
|
||||
end
|
||||
|
||||
local function piston_pusher_up_down_get_stopper(node, dir, stack, stackid)
|
||||
if (stack[stackid + 1]
|
||||
and stack[stackid + 1].node.name == get_pistonspec(node.name, "pusher").onname)
|
||||
or (stack[stackid - 1]
|
||||
and stack[stackid - 1].node.name == get_pistonspec(node.name, "pusher").onname) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
mesecon.register_mvps_stopper("mesecons_pistons:piston_pusher_normal", piston_pusher_get_stopper)
|
||||
mesecon.register_mvps_stopper("mesecons_pistons:piston_pusher_sticky", piston_pusher_get_stopper)
|
||||
|
||||
|
||||
-- Register pistons as stoppers if they would be seperated from the stopper
|
||||
local piston_up_down_get_stopper = function (node, dir, stack, stackid)
|
||||
if (stack[stackid + 1]
|
||||
and stack[stackid + 1].node.name == get_pistonspec(node.name, "onname").pusher)
|
||||
or (stack[stackid - 1]
|
||||
and stack[stackid - 1].node.name == get_pistonspec(node.name, "onname").pusher) then
|
||||
return false
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
local function piston_get_stopper(node, dir, stack, stackid)
|
||||
local function piston_get_stopper(node, _, stack, stackid)
|
||||
local pistonspec = get_pistonspec(node.name, "onname")
|
||||
local dir = vector.multiply(minetest.facedir_to_dir(node.param2), -1)
|
||||
local pusherpos = vector.add(stack[stackid].pos, dir)
|
||||
@ -499,4 +479,4 @@ minetest.register_craft({
|
||||
|
||||
|
||||
-- load legacy code
|
||||
dofile(minetest.get_modpath("mesecons_pistons")..DIR_DELIM.."legacy.lua")
|
||||
dofile(minetest.get_modpath("mesecons_pistons").."/legacy.lua")
|
||||
|
@ -11,7 +11,7 @@ minetest.register_node("mesecons_powerplant:power_plant", {
|
||||
walkable = false,
|
||||
groups = {dig_immediate=3, mesecon = 2},
|
||||
light_source = minetest.LIGHT_MAX-9,
|
||||
description="Power Plant",
|
||||
description="Power Plant",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.3, -0.5, -0.3, 0.3, -0.5+0.7, 0.3},
|
||||
|
@ -8,7 +8,7 @@ local pp_box_on = {
|
||||
fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 },
|
||||
}
|
||||
|
||||
local function pp_on_timer(pos, elapsed)
|
||||
local function pp_on_timer(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
local basename = minetest.registered_nodes[node.name].pressureplate_basename
|
||||
|
||||
@ -17,7 +17,6 @@ local function pp_on_timer(pos, elapsed)
|
||||
if not basename then return end
|
||||
|
||||
local objs = minetest.get_objects_inside_radius(pos, 1)
|
||||
local two_below = vector.add(pos, vector.new(0, -2, 0))
|
||||
|
||||
if objs[1] == nil and node.name == basename .. "_on" then
|
||||
minetest.set_node(pos, {name = basename .. "_off"})
|
||||
@ -46,7 +45,6 @@ end
|
||||
-- sounds: sound table
|
||||
|
||||
function mesecon.register_pressure_plate(basename, description, textures_off, textures_on, image_w, image_i, recipe, groups, sounds)
|
||||
local groups_off, groups_on
|
||||
if not groups then
|
||||
groups = {}
|
||||
end
|
||||
|
@ -59,7 +59,7 @@ minetest.register_node("mesecons_random:ghoststone_active", {
|
||||
}},
|
||||
on_construct = function(pos)
|
||||
-- remove shadow
|
||||
shadowpos = vector.add(pos, vector.new(0, 1, 0))
|
||||
local shadowpos = vector.add(pos, vector.new(0, 1, 0))
|
||||
if (minetest.get_node(shadowpos).name == "air") then
|
||||
minetest.dig_node(shadowpos)
|
||||
end
|
||||
|
@ -47,7 +47,7 @@ mesecon.register_node("mesecons_receiver:receiver", {
|
||||
walkable = false,
|
||||
on_rotate = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
type = "fixed",
|
||||
fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 }
|
||||
},
|
||||
node_box = {
|
||||
@ -96,7 +96,7 @@ mesecon.register_node("mesecons_receiver:receiver_up", {
|
||||
walkable = false,
|
||||
on_rotate = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
type = "fixed",
|
||||
fixed = up_rcvboxes
|
||||
},
|
||||
node_box = {
|
||||
@ -141,7 +141,7 @@ mesecon.register_node("mesecons_receiver:receiver_down", {
|
||||
walkable = false,
|
||||
on_rotate = false,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
type = "fixed",
|
||||
fixed = down_rcvboxes
|
||||
},
|
||||
node_box = {
|
||||
|
@ -8,7 +8,7 @@ minetest.register_node("mesecons_stickyblocks:sticky_block_all", {
|
||||
tiles = {"mesecons_stickyblocks_sticky.png"},
|
||||
is_ground_content = false,
|
||||
groups = {choppy=3, oddly_breakable_by_hand=2},
|
||||
mvps_sticky = function (pos, node)
|
||||
mvps_sticky = function (pos)
|
||||
local connected = {}
|
||||
for _, r in ipairs(mesecon.rules.alldirs) do
|
||||
table.insert(connected, vector.add(pos, r))
|
||||
|
@ -14,7 +14,7 @@ local wire_getconnect = function (from_pos, self_pos)
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecons then
|
||||
-- rules of node to possibly connect to
|
||||
local rules = {}
|
||||
local rules
|
||||
if (minetest.registered_nodes[node.name].mesecon_wire) then
|
||||
rules = mesecon.rules.default
|
||||
else
|
||||
@ -73,7 +73,7 @@ local update_on_place_dig = function (pos, node)
|
||||
end
|
||||
|
||||
-- Update nodes around it
|
||||
local rules = {}
|
||||
local rules
|
||||
if minetest.registered_nodes[node.name]
|
||||
and minetest.registered_nodes[node.name].mesecon_wire then
|
||||
rules = mesecon.rules.default
|
||||
|
Loading…
Reference in New Issue
Block a user