forked from minetest-mods/MoreMesecons
		
	Compare commits
	
		
			1 Commits
		
	
	
		
			c77698d1fe
			...
			dev
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 6d278538a9 | 
							
								
								
									
										22
									
								
								.luacheckrc
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								.luacheckrc
									
									
									
									
									
								
							@@ -1,22 +0,0 @@
 | 
				
			|||||||
read_globals = {
 | 
					 | 
				
			||||||
	-- Defined by Minetest
 | 
					 | 
				
			||||||
	"vector", "PseudoRandom", "VoxelArea", "table",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	-- Mods
 | 
					 | 
				
			||||||
	"digiline", "default", "creative",
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	-- Required for the mesechest registration
 | 
					 | 
				
			||||||
	minetest = {
 | 
					 | 
				
			||||||
		fields = {
 | 
					 | 
				
			||||||
			register_lbm = {read_only = false},
 | 
					 | 
				
			||||||
			register_node = {read_only = false},
 | 
					 | 
				
			||||||
			registered_on_player_receive_fields = {
 | 
					 | 
				
			||||||
				read_only = false,
 | 
					 | 
				
			||||||
				other_fields = true,
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
					 | 
				
			||||||
		other_fields = true
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					 | 
				
			||||||
globals = {"moremesecons", "mesecon"}
 | 
					 | 
				
			||||||
ignore = {"212", "631", "422", "432"}
 | 
					 | 
				
			||||||
@@ -55,14 +55,14 @@ local function resolve_commands(commands, pos)
 | 
				
			|||||||
	local nearest = nil
 | 
						local nearest = nil
 | 
				
			||||||
	local min_distance = math.huge
 | 
						local min_distance = math.huge
 | 
				
			||||||
	local players = minetest.get_connected_players()
 | 
						local players = minetest.get_connected_players()
 | 
				
			||||||
	for _, player in pairs(players) do
 | 
						for index, player in pairs(players) do
 | 
				
			||||||
		local distance = vector.distance(pos, player:getpos())
 | 
							local distance = vector.distance(pos, player:getpos())
 | 
				
			||||||
		if distance < min_distance then
 | 
							if distance < min_distance then
 | 
				
			||||||
			min_distance = distance
 | 
								min_distance = distance
 | 
				
			||||||
			nearest = player:get_player_name()
 | 
								nearest = player:get_player_name()
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	local new_commands = commands:gsub("@nearest", nearest)
 | 
						new_commands = commands:gsub("@nearest", nearest)
 | 
				
			||||||
	return new_commands, min_distance, new_commands ~= commands
 | 
						return new_commands, min_distance, new_commands ~= commands
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ local nodebox = {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
local function signalchanger_get_output_rules(node)
 | 
					local function signalchanger_get_output_rules(node)
 | 
				
			||||||
	local rules = {{x=-1, y=0, z=0}}
 | 
						local rules = {{x=-1, y=0, z=0}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -13,7 +13,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
local function signalchanger_get_input_rules(node)
 | 
					local function signalchanger_get_input_rules(node)
 | 
				
			||||||
	local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}, {x=1, y=0, z=0, name="input_signal"}}
 | 
						local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}, {x=1, y=0, z=0, name="input_signal"}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
local function dual_delayer_get_input_rules(node)
 | 
					local function dual_delayer_get_input_rules(node)
 | 
				
			||||||
	local rules = {{x=1, y=0, z=0}}
 | 
						local rules = {{x=1, y=0, z=0}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -8,7 +8,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
local function dual_delayer_get_output_rules(node)
 | 
					local function dual_delayer_get_output_rules(node)
 | 
				
			||||||
	local rules = {{x=0, y=0, z=1}, {x=0, y=0, z=-1}}
 | 
						local rules = {{x=0, y=0, z=1}, {x=0, y=0, z=-1}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -17,19 +17,19 @@ end
 | 
				
			|||||||
local dual_delayer_activate = function(pos, node)
 | 
					local dual_delayer_activate = function(pos, node)
 | 
				
			||||||
	mesecon.receptor_on(pos, {dual_delayer_get_output_rules(node)[1]}) -- Turn on the port 1
 | 
						mesecon.receptor_on(pos, {dual_delayer_get_output_rules(node)[1]}) -- Turn on the port 1
 | 
				
			||||||
	minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_10", param2 = node.param2})
 | 
						minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_10", param2 = node.param2})
 | 
				
			||||||
	minetest.after(0.4, function()
 | 
						minetest.after(0.4, function(pos, node)
 | 
				
			||||||
		mesecon.receptor_on(pos, {dual_delayer_get_output_rules(node)[2]}) -- Turn on the port 2
 | 
							mesecon.receptor_on(pos, {dual_delayer_get_output_rules(node)[2]}) -- Turn on the port 2
 | 
				
			||||||
		minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_11", param2 = node.param2})
 | 
							minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_11", param2 = node.param2})
 | 
				
			||||||
	end)
 | 
						end, pos, node)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local dual_delayer_deactivate = function(pos, node, link)
 | 
					local dual_delayer_deactivate = function(pos, node, link)
 | 
				
			||||||
	mesecon.receptor_off(pos, {dual_delayer_get_output_rules(node)[2]}) -- Turn off the port 2
 | 
						mesecon.receptor_off(pos, {dual_delayer_get_output_rules(node)[2]}) -- Turn off the port 2
 | 
				
			||||||
	minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_10", param2 = node.param2})
 | 
						minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_10", param2 = node.param2})
 | 
				
			||||||
	minetest.after(0.4, function()
 | 
						minetest.after(0.4, function(pos, node)
 | 
				
			||||||
		mesecon.receptor_off(pos, {dual_delayer_get_output_rules(node)[1]}) -- Turn off the port 1
 | 
							mesecon.receptor_off(pos, {dual_delayer_get_output_rules(node)[1]}) -- Turn off the port 1
 | 
				
			||||||
		minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_00", param2 = node.param2})
 | 
							minetest.swap_node(pos, {name = "moremesecons_dual_delayer:dual_delayer_00", param2 = node.param2})
 | 
				
			||||||
	end)
 | 
						end, pos, node)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -58,10 +58,6 @@ for n,i in pairs({{0,0},{1,0},{1,1}}) do
 | 
				
			|||||||
		top_texture = pre..top_texture
 | 
							top_texture = pre..top_texture
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local use_texture_alpha
 | 
					 | 
				
			||||||
	if minetest.features.use_texture_alpha_string_modes then
 | 
					 | 
				
			||||||
		use_texture_alpha = "opaque"
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
	minetest.register_node("moremesecons_dual_delayer:dual_delayer_"..i1 ..i2, {
 | 
						minetest.register_node("moremesecons_dual_delayer:dual_delayer_"..i1 ..i2, {
 | 
				
			||||||
		description = "Dual Delayer",
 | 
							description = "Dual Delayer",
 | 
				
			||||||
		drop = "moremesecons_dual_delayer:dual_delayer_00",
 | 
							drop = "moremesecons_dual_delayer:dual_delayer_00",
 | 
				
			||||||
@@ -78,7 +74,6 @@ for n,i in pairs({{0,0},{1,0},{1,1}}) do
 | 
				
			|||||||
		},
 | 
							},
 | 
				
			||||||
		groups = groups,
 | 
							groups = groups,
 | 
				
			||||||
		tiles = {top_texture, "moremesecons_dual_delayer_bottom.png", "moremesecons_dual_delayer_side_left.png", "moremesecons_dual_delayer_side_right.png", "moremesecons_dual_delayer_ends.png", "moremesecons_dual_delayer_ends.png"},
 | 
							tiles = {top_texture, "moremesecons_dual_delayer_bottom.png", "moremesecons_dual_delayer_side_left.png", "moremesecons_dual_delayer_side_right.png", "moremesecons_dual_delayer_ends.png", "moremesecons_dual_delayer_ends.png"},
 | 
				
			||||||
		use_texture_alpha = use_texture_alpha,
 | 
					 | 
				
			||||||
		mesecons = {
 | 
							mesecons = {
 | 
				
			||||||
			receptor = {
 | 
								receptor = {
 | 
				
			||||||
				state = mesecon.state.off,
 | 
									state = mesecon.state.off,
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,6 +18,10 @@ local function induction_transmitter_get_output_rules(node)
 | 
				
			|||||||
	return {vector.multiply(minetest.facedir_to_dir(node.param2), 2)}
 | 
						return {vector.multiply(minetest.facedir_to_dir(node.param2), 2)}
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					local function induction_transmitter_get_virtual_output_rules(node)
 | 
				
			||||||
 | 
						return {minetest.facedir_to_dir(node.param2)}
 | 
				
			||||||
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local function act(pos, node, state)
 | 
					local function act(pos, node, state)
 | 
				
			||||||
	minetest.swap_node(pos, {name = "moremesecons_induction_transmitter:induction_transmitter_"..state, param2 = node.param2})
 | 
						minetest.swap_node(pos, {name = "moremesecons_induction_transmitter:induction_transmitter_"..state, param2 = node.param2})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
local injector_controller_get_output_rules = function(node)
 | 
					local injector_controller_get_output_rules = function(node)
 | 
				
			||||||
	local rules = {{x = 0, y = 0, z = 1}}
 | 
						local rules = {{x = 0, y = 0, z = 1}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -10,7 +10,7 @@ local injector_controller_get_input_rules = function(node)
 | 
				
			|||||||
	local rules = {{x = 0, y = 0, z = -1},
 | 
						local rules = {{x = 0, y = 0, z = -1},
 | 
				
			||||||
			{x = 1, y = 0, z = 0},
 | 
								{x = 1, y = 0, z = 0},
 | 
				
			||||||
			{x = -1, y = 0, z = 0}}
 | 
								{x = -1, y = 0, z = 0}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -128,33 +128,33 @@ minetest.register_node("moremesecons_luablock:luablock", {
 | 
				
			|||||||
			env.pos = table.copy(npos)
 | 
								env.pos = table.copy(npos)
 | 
				
			||||||
			env.mem = minetest.deserialize(meta:get_string("mem")) or {}
 | 
								env.mem = minetest.deserialize(meta:get_string("mem")) or {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			local func, err_syntax
 | 
								local func, err
 | 
				
			||||||
			if _VERSION == "Lua 5.1" then
 | 
								if _VERSION == "Lua 5.1" then
 | 
				
			||||||
				func, err_syntax = loadstring(code)
 | 
									func, err = loadstring(code)
 | 
				
			||||||
				if func then
 | 
									if func then
 | 
				
			||||||
					setfenv(func, env)
 | 
										setfenv(func, env)
 | 
				
			||||||
				end
 | 
									end
 | 
				
			||||||
			else
 | 
								else
 | 
				
			||||||
				func, err_syntax = load(code, nil, "t", env)
 | 
									func, err = load(code, nil, "t", env)
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
			if not func then
 | 
								if not func then
 | 
				
			||||||
				meta:set_string("errmsg", err_syntax)
 | 
									meta:set_string("errmsg", err)
 | 
				
			||||||
				make_formspec(meta, npos)
 | 
									make_formspec(meta, pos)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			local good, err_runtime = pcall(func)
 | 
								local good, err = pcall(func)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			if not good then
 | 
								if not good then -- Runtime error
 | 
				
			||||||
				meta:set_string("errmsg", err_runtime)
 | 
									meta:set_string("errmsg", err)
 | 
				
			||||||
				make_formspec(meta, npos)
 | 
									make_formspec(meta, pos)
 | 
				
			||||||
				return
 | 
									return
 | 
				
			||||||
			end
 | 
								end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			meta:set_string("mem", minetest.serialize(env.mem))
 | 
								meta:set_string("mem", minetest.serialize(env.mem))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			meta:set_string("errmsg", "")
 | 
								meta:set_string("errmsg", "")
 | 
				
			||||||
			make_formspec(meta, npos)
 | 
								make_formspec(meta, pos)
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	}}
 | 
						}}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -76,17 +76,14 @@ end]]
 | 
				
			|||||||
local file_path = minetest.get_worldpath().."/MoreMesecons_lctt"
 | 
					local file_path = minetest.get_worldpath().."/MoreMesecons_lctt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- load templates from a compressed file
 | 
					-- load templates from a compressed file
 | 
				
			||||||
do
 | 
					local templates_file = io.open(file_path, "rb")
 | 
				
			||||||
	local templates_file = io.open(file_path, "rb")
 | 
					if templates_file then
 | 
				
			||||||
	if templates_file then
 | 
						local templates_raw = templates_file:read("*all")
 | 
				
			||||||
		local templates_raw = templates_file:read("*all")
 | 
						io.close(templates_file)
 | 
				
			||||||
		io.close(templates_file)
 | 
						if templates_raw
 | 
				
			||||||
		if templates_raw
 | 
						and templates_raw ~= "" then
 | 
				
			||||||
		and templates_raw ~= "" then
 | 
							for name,t in pairs(minetest.deserialize(minetest.decompress(templates_raw))) do
 | 
				
			||||||
			local data = minetest.deserialize(minetest.decompress(templates_raw))
 | 
								templates[name] = t
 | 
				
			||||||
			for name,t in pairs(data) do
 | 
					 | 
				
			||||||
				templates[name] = t
 | 
					 | 
				
			||||||
			end
 | 
					 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ local function mesechest_get_output_rules(node)
 | 
				
			|||||||
	local rules = {{x=-1, y=0, z=0},
 | 
						local rules = {{x=-1, y=0, z=0},
 | 
				
			||||||
			{x=0, y=0, z=-1},
 | 
								{x=0, y=0, z=-1},
 | 
				
			||||||
			{x=0, y=0, z=1}}
 | 
								{x=0, y=0, z=1}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -61,7 +61,7 @@ for i, f in ipairs(minetest.registered_on_player_receive_fields) do
 | 
				
			|||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
default.chest.register_chest("moremesecons_mesechest:mesechest", {
 | 
					default.register_chest("mesechest", {
 | 
				
			||||||
	description = "Mese Chest",
 | 
						description = "Mese Chest",
 | 
				
			||||||
	tiles = {
 | 
						tiles = {
 | 
				
			||||||
		"default_chest_top.png^[colorize:#d8e002:70",
 | 
							"default_chest_top.png^[colorize:#d8e002:70",
 | 
				
			||||||
@@ -82,7 +82,7 @@ default.chest.register_chest("moremesecons_mesechest:mesechest", {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
default.chest.register_chest("moremesecons_mesechest:mesechest_locked", {
 | 
					default.register_chest("mesechest_locked", {
 | 
				
			||||||
	description = "Locked Mese Chest",
 | 
						description = "Locked Mese Chest",
 | 
				
			||||||
	tiles = {
 | 
						tiles = {
 | 
				
			||||||
		"default_chest_top.png^[colorize:#d8e002:70",
 | 
							"default_chest_top.png^[colorize:#d8e002:70",
 | 
				
			||||||
@@ -108,19 +108,13 @@ minetest.register_node = old_minetest_register_node
 | 
				
			|||||||
minetest.register_lbm = old_minetest_register_lbm
 | 
					minetest.register_lbm = old_minetest_register_lbm
 | 
				
			||||||
 | 
					
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	output = "moremesecons_mesechest:mesechest",
 | 
						output = "default:mesechest",
 | 
				
			||||||
	recipe = {{"group:mesecon_conductor_craftable", "default:chest", "group:mesecon_conductor_craftable"}}
 | 
						recipe = {{"group:mesecon_conductor_craftable", "default:chest", "group:mesecon_conductor_craftable"}}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
	output = "moremesecons_mesechest:mesechest_locked",
 | 
						output = "default:mesechest_locked",
 | 
				
			||||||
	recipe = {{"group:mesecon_conductor_craftable", "default:chest_locked", "group:mesecon_conductor_craftable"}}
 | 
						recipe = {{"group:mesecon_conductor_craftable", "default:chest_locked", "group:mesecon_conductor_craftable"}}
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- Legacy
 | 
					 | 
				
			||||||
minetest.register_alias("default:mesechest", "moremesecons_mesechest:mesechest")
 | 
					 | 
				
			||||||
minetest.register_alias("mesechest", "moremesecons_mesechest:mesechest")
 | 
					 | 
				
			||||||
minetest.register_alias("default:mesechest_locked", "moremesecons_mesechest:mesechest")
 | 
					 | 
				
			||||||
minetest.register_alias("mesechest_locked", "moremesecons_mesechest:mesechest_locked")
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
minetest.log("action", "[moremesecons_mesechest] loaded.")
 | 
					minetest.log("action", "[moremesecons_mesechest] loaded.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ local kill_nearest_player = function(pos)
 | 
				
			|||||||
	-- Search the nearest player
 | 
						-- Search the nearest player
 | 
				
			||||||
	local nearest
 | 
						local nearest
 | 
				
			||||||
	local min_distance = MAX_DISTANCE
 | 
						local min_distance = MAX_DISTANCE
 | 
				
			||||||
	for _, player in pairs(minetest.get_connected_players()) do
 | 
						for index, player in pairs(minetest.get_connected_players()) do
 | 
				
			||||||
		local distance = vector.distance(pos, player:getpos())
 | 
							local distance = vector.distance(pos, player:getpos())
 | 
				
			||||||
		if distance < min_distance then
 | 
							if distance < min_distance then
 | 
				
			||||||
			min_distance = distance
 | 
								min_distance = distance
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ local nodebox = {
 | 
				
			|||||||
local function signalchanger_get_output_rules(node)
 | 
					local function signalchanger_get_output_rules(node)
 | 
				
			||||||
	local rules = {{x=-1, y=0, z=0},
 | 
						local rules = {{x=-1, y=0, z=0},
 | 
				
			||||||
			{x=1, y=0, z=0}}
 | 
								{x=1, y=0, z=0}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -14,7 +14,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
local function signalchanger_get_input_rules(node)
 | 
					local function signalchanger_get_input_rules(node)
 | 
				
			||||||
	local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}}
 | 
						local rules = {{x=0, y=0, z=-1, name="input_on"}, {x=0, y=0, z=1, name="input_off"}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -80,7 +80,7 @@ minetest.register_node("moremesecons_switchtorch:switchtorch_on", {
 | 
				
			|||||||
	selection_box = torch_selectionbox,
 | 
						selection_box = torch_selectionbox,
 | 
				
			||||||
	groups = {dig_immediate=3, not_in_creative_inventory = 1},
 | 
						groups = {dig_immediate=3, not_in_creative_inventory = 1},
 | 
				
			||||||
	drop = "moremesecons_switchtorch:switchtorch_off",
 | 
						drop = "moremesecons_switchtorch:switchtorch_off",
 | 
				
			||||||
	light_source = 9,
 | 
						light_source = LIGHT_MAX-5,
 | 
				
			||||||
	mesecons = {receptor = {
 | 
						mesecons = {receptor = {
 | 
				
			||||||
		state = mesecon.state.on,
 | 
							state = mesecon.state.on,
 | 
				
			||||||
		rules = torch_get_output_rules
 | 
							rules = torch_get_output_rules
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -24,12 +24,12 @@ local function teleport_nearest(pos)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	-- Search for the nearest player
 | 
						-- Search for the nearest player
 | 
				
			||||||
	local nearest = nil
 | 
						local nearest = nil
 | 
				
			||||||
	local min_distance_player = MAX_PLAYER_DISTANCE
 | 
						local min_distance = MAX_PLAYER_DISTANCE
 | 
				
			||||||
	local players = minetest.get_connected_players()
 | 
						local players = minetest.get_connected_players()
 | 
				
			||||||
	for _, player in pairs(players) do
 | 
						for index, player in pairs(players) do
 | 
				
			||||||
		local distance = vector.distance(pos, player:getpos())
 | 
							local distance = vector.distance(pos, player:getpos())
 | 
				
			||||||
		if distance <= min_distance_player then
 | 
							if distance <= min_distance then
 | 
				
			||||||
			min_distance_player = distance
 | 
								min_distance = distance
 | 
				
			||||||
			nearest = player
 | 
								nearest = player
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
local timegate_get_output_rules = function(node)
 | 
					local timegate_get_output_rules = function(node)
 | 
				
			||||||
	local rules = {{x = 0, y = 0, z = 1}}
 | 
						local rules = {{x = 0, y = 0, z = 1}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -8,7 +8,7 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
local timegate_get_input_rules = function(node)
 | 
					local timegate_get_input_rules = function(node)
 | 
				
			||||||
	local rules = {{x = 0, y = 0, z = -1}}
 | 
						local rules = {{x = 0, y = 0, z = -1}}
 | 
				
			||||||
	for _ = 0, node.param2 do
 | 
						for i = 0, node.param2 do
 | 
				
			||||||
		rules = mesecon.rotate_rules_left(rules)
 | 
							rules = mesecon.rotate_rules_left(rules)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	return rules
 | 
						return rules
 | 
				
			||||||
@@ -35,7 +35,7 @@ local function timegate_activate(pos, node)
 | 
				
			|||||||
	end)
 | 
						end)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
 | 
					boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	 { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 },		-- the jeweled "on" indicator
 | 
						 { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 },		-- the jeweled "on" indicator
 | 
				
			||||||
	 { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 },
 | 
						 { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 },
 | 
				
			||||||
@@ -47,10 +47,6 @@ local boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 },		-- the main slab
 | 
				
			|||||||
	 { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 },		-- the two wire stubs
 | 
						 { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 },		-- the two wire stubs
 | 
				
			||||||
	 { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }}
 | 
						 { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local use_texture_alpha
 | 
					 | 
				
			||||||
if minetest.features.use_texture_alpha_string_modes then
 | 
					 | 
				
			||||||
	use_texture_alpha = "opaque"
 | 
					 | 
				
			||||||
end
 | 
					 | 
				
			||||||
mesecon.register_node("moremesecons_timegate:timegate", {
 | 
					mesecon.register_node("moremesecons_timegate:timegate", {
 | 
				
			||||||
	description = "Time Gate",
 | 
						description = "Time Gate",
 | 
				
			||||||
	drawtype = "nodebox",
 | 
						drawtype = "nodebox",
 | 
				
			||||||
@@ -88,7 +84,6 @@ mesecon.register_node("moremesecons_timegate:timegate", {
 | 
				
			|||||||
			"moremesecons_timegate_sides_off.png",
 | 
								"moremesecons_timegate_sides_off.png",
 | 
				
			||||||
			"moremesecons_timegate_sides_off.png"
 | 
								"moremesecons_timegate_sides_off.png"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		use_texture_alpha = use_texture_alpha,
 | 
					 | 
				
			||||||
		groups = {bendy=2,snappy=1,dig_immediate=2},
 | 
							groups = {bendy=2,snappy=1,dig_immediate=2},
 | 
				
			||||||
		mesecons = {
 | 
							mesecons = {
 | 
				
			||||||
			receptor =
 | 
								receptor =
 | 
				
			||||||
@@ -111,7 +106,6 @@ mesecon.register_node("moremesecons_timegate:timegate", {
 | 
				
			|||||||
			"moremesecons_timegate_sides_on.png",
 | 
								"moremesecons_timegate_sides_on.png",
 | 
				
			||||||
			"moremesecons_timegate_sides_on.png"
 | 
								"moremesecons_timegate_sides_on.png"
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		use_texture_alpha = use_texture_alpha,
 | 
					 | 
				
			||||||
		groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1},
 | 
							groups = {bendy=2,snappy=1,dig_immediate=2, not_in_creative_inventory=1},
 | 
				
			||||||
		mesecons = {
 | 
							mesecons = {
 | 
				
			||||||
			receptor = {
 | 
								receptor = {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -243,11 +243,12 @@ MapDataStorage.__index = {
 | 
				
			|||||||
			indices[i] = ("%.17g"):format(vi)
 | 
								indices[i] = ("%.17g"):format(vi)
 | 
				
			||||||
			values[i] = v
 | 
								values[i] = v
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
		return minetest.serialize({
 | 
							result = {
 | 
				
			||||||
			version = "MapDataStorage_v1",
 | 
								version = "MapDataStorage_v1",
 | 
				
			||||||
			indices = "return {" .. table.concat(indices, ",") .. "}",
 | 
								indices = "return {" .. table.concat(indices, ",") .. "}",
 | 
				
			||||||
			values = minetest.serialize(values),
 | 
								values = minetest.serialize(values),
 | 
				
			||||||
		})
 | 
							}
 | 
				
			||||||
 | 
							return minetest.serialize(result)
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
MapDataStorage.deserialize = function(txtdata)
 | 
					MapDataStorage.deserialize = function(txtdata)
 | 
				
			||||||
@@ -316,7 +317,6 @@ end
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
--[[
 | 
					 | 
				
			||||||
-- This testing code shows an example usage of the MapDataStorage code
 | 
					-- This testing code shows an example usage of the MapDataStorage code
 | 
				
			||||||
local function do_test()
 | 
					local function do_test()
 | 
				
			||||||
	print("Test if iter returns correct positions when a lot is set")
 | 
						print("Test if iter returns correct positions when a lot is set")
 | 
				
			||||||
@@ -339,14 +339,14 @@ local function do_test()
 | 
				
			|||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	local i = 0
 | 
						local i = 0
 | 
				
			||||||
	for pos in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
 | 
						for pos, v in data:iter({x=-4, y=-4, z=-4}, {x=2, y=2, z=2}) do
 | 
				
			||||||
		i = i + 1
 | 
							i = i + 1
 | 
				
			||||||
		assert(vector.equals(pos, expected_positions[i]))
 | 
							assert(vector.equals(pos, expected_positions[i]))
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	print("Test if iter works correctly on a corner")
 | 
						print("Test if iter works correctly on a corner")
 | 
				
			||||||
	local found = false
 | 
						local found = false
 | 
				
			||||||
	for pos in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
 | 
						for pos, v in data:iter({x=-8, y=-7, z=-80}, {x=-5, y=-5, z=-5}) do
 | 
				
			||||||
		assert(not found)
 | 
							assert(not found)
 | 
				
			||||||
		found = true
 | 
							found = true
 | 
				
			||||||
		assert(vector.equals(pos, {x=-5, y=-5, z=-5}))
 | 
							assert(vector.equals(pos, {x=-5, y=-5, z=-5}))
 | 
				
			||||||
@@ -377,6 +377,6 @@ local function do_test()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
	--~ data:iterAll()
 | 
						--~ data:iterAll()
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
do_test()
 | 
					
 | 
				
			||||||
--]]
 | 
					--~ do_test()
 | 
				
			||||||
minetest.log("action", "[moremesecons_utils] loaded.")
 | 
					minetest.log("action", "[moremesecons_utils] loaded.")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -186,10 +186,10 @@ function wireless_receptor_off(pos, id, network, check)
 | 
				
			|||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
local function activate_network(owner, channel)
 | 
					function activate_network(owner, channel)
 | 
				
			||||||
	local network = wireless[owner][channel]
 | 
						local network = wireless[owner][channel]
 | 
				
			||||||
	for i, wl_pos in pairs(network.members) do
 | 
						for i, wl_pos in pairs(network.members) do
 | 
				
			||||||
		wireless_receptor_on(wl_pos, i, network)
 | 
							wireless_receptor_on(wl_pos, id, network)
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -253,35 +253,22 @@ function wireless_effector_off(pos)
 | 
				
			|||||||
	update_mod_storage()
 | 
						update_mod_storage()
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- This table is required to prevent a message from being sent in loop between wireless nodes
 | 
					 | 
				
			||||||
local sending_digilines = {}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local function on_digiline_receive(pos, node, channel, msg)
 | 
					local function on_digiline_receive(pos, node, channel, msg)
 | 
				
			||||||
	if is_jammed(pos) then
 | 
						if is_jammed(pos) then
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local wls = moremesecons.get_data_from_pos(wireless_meta, pos)
 | 
						local wls = moremesecons.get_data_from_pos(wireless_meta, pos)
 | 
				
			||||||
	if not wls then
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if wls.owner == "" or not wireless[wls.owner] or channel == "" or not wireless[wls.owner][wls.channel] then
 | 
						if wls.owner == "" or not wireless[wls.owner] or channel == "" or not wireless[wls.owner][wls.channel] then
 | 
				
			||||||
		return
 | 
							return
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	local pos_hash = minetest.hash_node_position(pos)
 | 
					 | 
				
			||||||
	if sending_digilines[pos_hash] then
 | 
					 | 
				
			||||||
		return
 | 
					 | 
				
			||||||
	end
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	sending_digilines[pos_hash] = true
 | 
					 | 
				
			||||||
	for i, wl_pos in pairs(wireless[wls.owner][wls.channel].members) do
 | 
						for i, wl_pos in pairs(wireless[wls.owner][wls.channel].members) do
 | 
				
			||||||
		if i ~= wls.id then
 | 
							if i ~= wls.id and check_wireless_exists(wl_pos) then
 | 
				
			||||||
			digiline:receptor_send(wl_pos, digiline.rules.default, channel, msg)
 | 
								digiline:receptor_send(wl_pos, digiline.rules.default, channel, msg)
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	end
 | 
						end
 | 
				
			||||||
	sending_digilines[pos_hash] = nil
 | 
					 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
mesecon.register_node("moremesecons_wireless:wireless", {
 | 
					mesecon.register_node("moremesecons_wireless:wireless", {
 | 
				
			||||||
@@ -303,6 +290,7 @@ mesecon.register_node("moremesecons_wireless:wireless", {
 | 
				
			|||||||
		mesecon.receptor_off(pos)
 | 
							mesecon.receptor_off(pos)
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
	after_place_node = function(pos, placer)
 | 
						after_place_node = function(pos, placer)
 | 
				
			||||||
 | 
							local placername = placer:get_player_name()
 | 
				
			||||||
		set_owner(pos, placer:get_player_name())
 | 
							set_owner(pos, placer:get_player_name())
 | 
				
			||||||
	end,
 | 
						end,
 | 
				
			||||||
	on_receive_fields = function(pos, _, fields, player)
 | 
						on_receive_fields = function(pos, _, fields, player)
 | 
				
			||||||
@@ -339,15 +327,6 @@ mesecon.register_node("moremesecons_wireless:wireless", {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
minetest.register_alias("moremesecons_wireless:wireless", "moremesecons_wireless:wireless_off")
 | 
					minetest.register_alias("moremesecons_wireless:wireless", "moremesecons_wireless:wireless_off")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
minetest.register_craft({
 | 
					 | 
				
			||||||
	output = "moremesecons_wireless:wireless_off 2",
 | 
					 | 
				
			||||||
	recipe = {
 | 
					 | 
				
			||||||
		{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
 | 
					 | 
				
			||||||
		{"", "mesecons_torch:mesecon_torch_on", ""},
 | 
					 | 
				
			||||||
		{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
})
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
local function remove_jammer(pos)
 | 
					local function remove_jammer(pos)
 | 
				
			||||||
	moremesecons.remove_data_from_pos(jammers, pos)
 | 
						moremesecons.remove_data_from_pos(jammers, pos)
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
@@ -375,76 +354,83 @@ function is_jammed(pos)
 | 
				
			|||||||
	return false
 | 
						return false
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moremesecons.setting("wireless", "enable_jammer", true) then
 | 
					mesecon.register_node("moremesecons_wireless:jammer", {
 | 
				
			||||||
	mesecon.register_node("moremesecons_wireless:jammer", {
 | 
						description = "Wireless Jammer",
 | 
				
			||||||
		description = "Wireless Jammer",
 | 
						paramtype = "light",
 | 
				
			||||||
		paramtype = "light",
 | 
						drawtype = "nodebox",
 | 
				
			||||||
		drawtype = "nodebox",
 | 
					},{
 | 
				
			||||||
	},{
 | 
						tiles = {"mesecons_wire_off.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_off.png^moremesecons_jammer_side_off.png"},
 | 
				
			||||||
		tiles = {"mesecons_wire_off.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_off.png^moremesecons_jammer_side_off.png"},
 | 
						node_box = {
 | 
				
			||||||
		node_box = {
 | 
							type = "fixed",
 | 
				
			||||||
			type = "fixed",
 | 
							fixed = {
 | 
				
			||||||
			fixed = {
 | 
								-- connection
 | 
				
			||||||
				-- connection
 | 
								{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
 | 
				
			||||||
				{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
 | 
								{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
 | 
				
			||||||
				{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
				--stabilization
 | 
								--stabilization
 | 
				
			||||||
				{-1/16, -7/16, -1/16, 1/16, -6/16, 1/16},
 | 
								{-1/16, -7/16, -1/16, 1/16, -6/16, 1/16},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				-- fields
 | 
								-- fields
 | 
				
			||||||
				{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
 | 
								{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
 | 
				
			||||||
				{-5/16, -4/16, -5/16, 5/16, -3/16, 5/16},
 | 
								{-5/16, -4/16, -5/16, 5/16, -3/16, 5/16},
 | 
				
			||||||
				{-3/16, -3/16, -3/16, 3/16, -2/16, 3/16},
 | 
								{-3/16, -3/16, -3/16, 3/16, -2/16, 3/16},
 | 
				
			||||||
				{-1/16, -2/16, -1/16, 1/16, -1/16, 1/16},
 | 
								{-1/16, -2/16, -1/16, 1/16, -1/16, 1/16},
 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		groups = {dig_immediate=2},
 | 
						},
 | 
				
			||||||
		mesecons = {effector = {
 | 
						groups = {dig_immediate=2},
 | 
				
			||||||
			rules = mesecon.rules.flat,
 | 
						mesecons = {effector = {
 | 
				
			||||||
			action_on = function(pos)
 | 
							rules = mesecon.rules.flat,
 | 
				
			||||||
				add_jammer(pos)
 | 
							action_on = function(pos)
 | 
				
			||||||
				minetest.swap_node(pos, {name="moremesecons_wireless:jammer_on"})
 | 
								add_jammer(pos)
 | 
				
			||||||
			end
 | 
								minetest.swap_node(pos, {name="moremesecons_wireless:jammer_on"})
 | 
				
			||||||
		}}
 | 
							end
 | 
				
			||||||
	},{
 | 
						}}
 | 
				
			||||||
		tiles = {"mesecons_wire_on.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_on.png^moremesecons_jammer_side_on.png"},
 | 
					},{
 | 
				
			||||||
		node_box = {
 | 
						tiles = {"mesecons_wire_on.png^moremesecons_jammer_top.png", "moremesecons_jammer_bottom.png", "mesecons_wire_on.png^moremesecons_jammer_side_on.png"},
 | 
				
			||||||
			type = "fixed",
 | 
						node_box = {
 | 
				
			||||||
			fixed = {
 | 
							type = "fixed",
 | 
				
			||||||
				-- connection
 | 
							fixed = {
 | 
				
			||||||
				{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
 | 
								-- connection
 | 
				
			||||||
				{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
 | 
								{-1/16, -0.5, -0.5, 1/16, -7/16, 0.5},
 | 
				
			||||||
 | 
								{-0.5, -0.5, -1/16, 0.5, -7/16, 1/16},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				--stabilization
 | 
								--stabilization
 | 
				
			||||||
				{-1/16, -7/16, -1/16, 1/16, 5/16, 1/16},
 | 
								{-1/16, -7/16, -1/16, 1/16, 5/16, 1/16},
 | 
				
			||||||
 | 
					
 | 
				
			||||||
				-- fields
 | 
								-- fields
 | 
				
			||||||
				{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
 | 
								{-7/16, -6/16, -7/16, 7/16, -4/16, 7/16},
 | 
				
			||||||
				{-5/16, -3/16, -5/16, 5/16, -1/16, 5/16},
 | 
								{-5/16, -3/16, -5/16, 5/16, -1/16, 5/16},
 | 
				
			||||||
				{-3/16, 0, -3/16, 3/16, 2/16, 3/16},
 | 
								{-3/16, 0, -3/16, 3/16, 2/16, 3/16},
 | 
				
			||||||
				{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16},
 | 
								{-1/16, 3/16, -1/16, 1/16, 5/16, 1/16},
 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		groups = {dig_immediate=2, not_in_creative_inventory=1},
 | 
						},
 | 
				
			||||||
		mesecons = {effector = {
 | 
						groups = {dig_immediate=2, not_in_creative_inventory=1},
 | 
				
			||||||
			rules = mesecon.rules.flat,
 | 
						mesecons = {effector = {
 | 
				
			||||||
			action_off = function(pos)
 | 
							rules = mesecon.rules.flat,
 | 
				
			||||||
				remove_jammer(pos)
 | 
							action_off = function(pos)
 | 
				
			||||||
				minetest.swap_node(pos, {name="moremesecons_wireless:jammer_off"})
 | 
								remove_jammer(pos)
 | 
				
			||||||
			end
 | 
								minetest.swap_node(pos, {name="moremesecons_wireless:jammer_off"})
 | 
				
			||||||
		}},
 | 
							end
 | 
				
			||||||
		on_destruct = remove_jammer,
 | 
						}},
 | 
				
			||||||
		on_construct = add_jammer,
 | 
						on_destruct = remove_jammer,
 | 
				
			||||||
	})
 | 
						on_construct = add_jammer,
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	minetest.register_craft({
 | 
					minetest.register_craft({
 | 
				
			||||||
		output = "moremesecons_wireless:jammer_off",
 | 
						output = "moremesecons_wireless:jammer_off",
 | 
				
			||||||
		recipe = {
 | 
						recipe = {
 | 
				
			||||||
			{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
 | 
							{"moremesecons_wireless:wireless", "mesecons_torch:mesecon_torch_on", "moremesecons_wireless:wireless"}
 | 
				
			||||||
		}
 | 
						}
 | 
				
			||||||
	})
 | 
					})
 | 
				
			||||||
end
 | 
					
 | 
				
			||||||
 | 
					minetest.register_craft({
 | 
				
			||||||
 | 
						output = "moremesecons_wireless:wireless_off 2",
 | 
				
			||||||
 | 
						recipe = {
 | 
				
			||||||
 | 
							{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
 | 
				
			||||||
 | 
							{"", "mesecons_torch:mesecon_torch_on", ""},
 | 
				
			||||||
 | 
							{"group:mesecon_conductor_craftable", "", "group:mesecon_conductor_craftable"},
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
if moremesecons.setting("wireless", "enable_lbm", false) then
 | 
					if moremesecons.setting("wireless", "enable_lbm", false) then
 | 
				
			||||||
	minetest.register_lbm({
 | 
						minetest.register_lbm({
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -63,9 +63,6 @@ moremesecons_teleporter.enable_lbm (Enable Registration LBM) bool false
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
[Wireless]
 | 
					[Wireless]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Whether to enable the wireless jammer node
 | 
					 | 
				
			||||||
moremesecons_wireless.enable_jammer (Enable wireless jammer) bool true
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
# Wireless Jammer action range
 | 
					# Wireless Jammer action range
 | 
				
			||||||
# Any value less than or equal to 0 will be changed to 1 and a NaN value will be changed to the default value
 | 
					# Any value less than or equal to 0 will be changed to 1 and a NaN value will be changed to the default value
 | 
				
			||||||
moremesecons_wireless.jammer_max_distance (Wireless Jammer action range) float 15
 | 
					moremesecons_wireless.jammer_max_distance (Wireless Jammer action range) float 15
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user