[mesecons] Update; fix #446
							
								
								
									
										30
									
								
								mods/mesecons/COPYING.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						| @@ -0,0 +1,30 @@ | ||||
| The Mesecons Mod for Minetest is | ||||
| 	Copyright (C) 2011-2016 Mesecons Mod Developer Team and contributors | ||||
|  | ||||
| See the version control system log for information about other authors. | ||||
|  | ||||
| License of source code | ||||
| ---------------------- | ||||
| Copyright (C) 2011-2016 Mesecons Mod Developer Team and contributors | ||||
|  | ||||
| This program is free software; you can redistribute the Mesecons Mod and/or | ||||
| modify it under the terms of the GNU Lesser General Public License version 3 | ||||
| published by the Free Software Foundation. | ||||
|  | ||||
| This library is distributed in the hope that it will be useful, | ||||
| but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | ||||
| Library General Public License for more details. | ||||
|  | ||||
| You should have received a copy of the GNU Library General Public | ||||
| License along with this library; if not, write to the | ||||
| Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, | ||||
| Boston, MA  02110-1301, USA. | ||||
|  | ||||
| License of media (textures, sounds and documentation) | ||||
| ----------------------------------------------------- | ||||
| Copyright (C) 2011-2016 Mesecons Mod Developer Team and contributors | ||||
|  | ||||
| All textures, sounds and documentation files are licensed under the | ||||
| Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) | ||||
| http://creativecommons.org/licenses/by-sa/3.0/ | ||||
							
								
								
									
										
											BIN
										
									
								
								mods/mesecons/mesecons/doc/mesecon/preview.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 29 KiB | 
| Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 3.8 KiB | 
							
								
								
									
										
											BIN
										
									
								
								mods/mesecons/mesecons_blinkyplant/doc/blinkyplant/preview.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 65 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.9 KiB | 
| Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 78 KiB | 
| Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 7.8 KiB | 
| Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 36 KiB | 
| @@ -43,9 +43,9 @@ minetest.register_chatcommand("hp", { | ||||
| }) | ||||
|  | ||||
| local function initialize_data(meta) | ||||
| 	local commands = meta:get_string("commands") | ||||
| 	local commands = minetest.formspec_escape(meta:get_string("commands")) | ||||
| 	meta:set_string("formspec", | ||||
| 		"size[9,5;]" .. | ||||
| 		"invsize[9,5;]" .. | ||||
| 		"textarea[0.5,0.5;8.5,4;commands;Commands;"..commands.."]" .. | ||||
| 		"label[1,3.8;@nearest, @farthest, and @random are replaced by the respective player names]" .. | ||||
| 		"button_exit[3.3,4.5;2,1;submit;Submit]") | ||||
|   | ||||
| Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 61 KiB | 
| Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 8.3 KiB | 
| Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 48 KiB | 
| Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 9.8 KiB | 
| Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 84 KiB | 
| Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 9.6 KiB | 
| @@ -13,8 +13,8 @@ local object_detector_make_formspec = function (pos) | ||||
| 		"button_exit[7,0.75;2,3;;Save]") | ||||
| end | ||||
|  | ||||
| local object_detector_on_receive_fields = function(pos, formname, fields) | ||||
| 	if not fields.scanname or not fields.digiline_channel then return end; | ||||
| local function object_detector_on_receive_fields(pos, _, fields) | ||||
| 	if not fields.scanname or not fields.digiline_channel then return end | ||||
|  | ||||
| 	local meta = minetest.get_meta(pos) | ||||
| 	meta:set_string("scanname", fields.scanname) | ||||
| @@ -23,7 +23,7 @@ local object_detector_on_receive_fields = function(pos, formname, fields) | ||||
| end | ||||
|  | ||||
| -- returns true if player was found, false if not | ||||
| local object_detector_scan = function (pos) | ||||
| local function object_detector_scan(pos) | ||||
| 	local objs = minetest.get_objects_inside_radius(pos, mesecon.setting("detector_radius", 6)) | ||||
| 	for k, obj in pairs(objs) do | ||||
| 		local isname = obj:get_player_name() -- "" is returned if it is not a player; "" ~= nil! | ||||
|   | ||||
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 41 KiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 3.8 KiB | 
| Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 61 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 3.7 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 30 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 6.1 KiB | 
| Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 54 KiB | 
| Before Width: | Height: | Size: 2.0 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 3.0 KiB | 
| @@ -16,15 +16,21 @@ minetest.override_item("default:mese", { | ||||
| 	}} | ||||
| }) | ||||
|  | ||||
| minetest.register_node("mesecons_extrawires:mese_powered", { | ||||
| 	tiles = {minetest.registered_nodes["default:mese"].tiles[1].."^[brighten"}, | ||||
| 	is_ground_content = true, | ||||
| 	groups = {cracky=1, not_in_creative_inventory = 1}, | ||||
| 	sounds = default.node_sound_stone_defaults(), | ||||
| -- Copy node definition of powered mese from normal mese | ||||
| -- and brighten texture tiles to indicate mese is powered | ||||
| local powered_def = mesecon.mergetable(minetest.registered_nodes["default:mese"], { | ||||
| 	drop = "default:mese", | ||||
| 	light_source = 5, | ||||
| 	mesecons = {conductor = { | ||||
| 		state = mesecon.state.on, | ||||
| 		offstate = "default:mese", | ||||
| 		rules = mesewire_rules | ||||
| 	}}, | ||||
| 	drop = "default:mese" | ||||
| 	groups = {cracky = 1, not_in_creative_inventory = 1} | ||||
| }) | ||||
|  | ||||
| for i, v in pairs(powered_def.tiles) do | ||||
| 	powered_def.tiles[i] = v .. "^[brighten" | ||||
| end | ||||
|  | ||||
| minetest.register_node("mesecons_extrawires:mese_powered", powered_def) | ||||
|   | ||||
| Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 68 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 71 KiB | 
| Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.0 KiB | 
| Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 62 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.7 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 26 KiB | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.4 KiB | 
| Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 69 KiB | 
| Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 2.0 KiB | 
| Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 26 KiB | 
| Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 2.4 KiB | 
| Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 69 KiB | 
| Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 2.6 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 33 KiB | 
| Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 8.0 KiB | 
| Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 43 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 4.6 KiB | 
| Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 34 KiB | 
| Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 4.4 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 4.3 KiB | 
| Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 43 KiB | 
| Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 4.5 KiB | 
| Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 48 KiB | 
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 4.5 KiB | 
| Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 44 KiB | 
| Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 4.6 KiB | 
| Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 31 KiB | 
| Before Width: | Height: | Size: 2.5 KiB After Width: | Height: | Size: 3.9 KiB | 
| Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 28 KiB | 
| Before Width: | Height: | Size: 2.6 KiB After Width: | Height: | Size: 4.4 KiB | 
| Before Width: | Height: | Size: 61 KiB After Width: | Height: | Size: 66 KiB | 
| Before Width: | Height: | Size: 5.0 KiB After Width: | Height: | Size: 5.4 KiB | 
| @@ -229,23 +229,35 @@ end | ||||
|  | ||||
| local function remove_functions(x) | ||||
| 	local tp = type(x) | ||||
| 	if tp == "table" then | ||||
| 	if tp == "function" then | ||||
| 		return nil | ||||
| 	end | ||||
|  | ||||
| 	-- Make sure to not serialize the same table multiple times, otherwise | ||||
| 	-- writing mem.test = mem in the LuaController will lead to infinite recursion | ||||
| 	local seen = {} | ||||
|  | ||||
| 	local function rfuncs(x) | ||||
| 		if seen[x] then return end | ||||
| 		seen[x] = true | ||||
| 		if type(x) ~= "table" then return end | ||||
|  | ||||
| 		for key, value in pairs(x) do | ||||
| 			local key_t, val_t = type(key), type(value) | ||||
| 			if key_t == "function" or val_t == "function" then | ||||
| 			if type(key) == "function" or type(value) == "function" then | ||||
| 				x[key] = nil | ||||
| 			else | ||||
| 				if key_t == "table" then | ||||
| 					remove_functions(key) | ||||
| 				if type(key) == "table" then | ||||
| 					rfuncs(key) | ||||
| 				end | ||||
| 				if val_t == "table" then | ||||
| 					remove_functions(value) | ||||
| 				if type(value) == "table" then | ||||
| 					rfuncs(value) | ||||
| 				end | ||||
| 			end | ||||
| 		end | ||||
| 	elseif tp == "function" then | ||||
| 		return nil | ||||
| 	end | ||||
|  | ||||
| 	rfuncs(x) | ||||
|  | ||||
| 	return x | ||||
| end | ||||
|  | ||||
|   | ||||
| Before Width: | Height: | Size: 86 KiB After Width: | Height: | Size: 86 KiB | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 4.6 KiB | 
| Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 47 KiB | 
| Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 4.2 KiB | 
| Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 51 KiB | 
| Before Width: | Height: | Size: 6.0 KiB After Width: | Height: | Size: 11 KiB | 
| Before Width: | Height: | Size: 69 KiB After Width: | Height: | Size: 76 KiB | 
| Before Width: | Height: | Size: 7.8 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 76 KiB After Width: | Height: | Size: 81 KiB | 
| Before Width: | Height: | Size: 7.3 KiB After Width: | Height: | Size: 10 KiB | 
| Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 116 KiB | 
| Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 18 KiB | 
| Before Width: | Height: | Size: 104 KiB After Width: | Height: | Size: 110 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 96 KiB After Width: | Height: | Size: 99 KiB | 
| Before Width: | Height: | Size: 10 KiB After Width: | Height: | Size: 14 KiB | 
| Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 60 KiB | 
| Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 2.8 KiB | 
| Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 54 KiB | 
| Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 7.9 KiB | 
| Before Width: | Height: | Size: 62 KiB After Width: | Height: | Size: 62 KiB | 
| Before Width: | Height: | Size: 5.3 KiB After Width: | Height: | Size: 7.5 KiB | 
| Before Width: | Height: | Size: 32 KiB After Width: | Height: | Size: 36 KiB | 
| Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 88 KiB | 
| Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 23 KiB | 
| Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 56 KiB | 
| Before Width: | Height: | Size: 3.3 KiB After Width: | Height: | Size: 3.6 KiB | 
| Before Width: | Height: | Size: 72 KiB After Width: | Height: | Size: 84 KiB | 
| Before Width: | Height: | Size: 8.0 KiB After Width: | Height: | Size: 12 KiB | 
| Before Width: | Height: | Size: 9.0 KiB After Width: | Height: | Size: 9.9 KiB | 
| Before Width: | Height: | Size: 1.4 KiB After Width: | Height: | Size: 2.3 KiB | 
| Before Width: | Height: | Size: 68 KiB After Width: | Height: | Size: 78 KiB | 
| Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 7.1 KiB |