Add .luacheckrc and fix issues it pointed out (#589)

This commit is contained in:
Jude Melton-Houghton 2022-02-12 14:12:12 -05:00 committed by GitHub
parent c9dd323207
commit fb255d292e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 141 additions and 136 deletions

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

@ -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