mirror of
				https://github.com/minetest-mods/mesecons.git
				synced 2025-11-04 04:55:26 +01:00 
			
		
		
		
	Add .luacheckrc and fix issues it pointed out (#589)
This commit is contained in:
		
				
					committed by
					
						
						GitHub
					
				
			
			
				
	
			
			
			
						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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user