Compare commits
	
		
			1 Commits
		
	
	
		
			75bd1e8be6
			...
			78b10c505f
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					78b10c505f | 
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						@@ -1 +0,0 @@
 | 
			
		||||
*~
 | 
			
		||||
							
								
								
									
										0
									
								
								LICENSE.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons/actionqueue.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										2
									
								
								mesecons/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -126,7 +126,7 @@ function mesecon.receptor_off(pos, rules)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
print("[OK] Mesecons")
 | 
			
		||||
minetest.log("action", "[OK] Mesecons")
 | 
			
		||||
 | 
			
		||||
-- Deprecated stuff
 | 
			
		||||
-- To be removed in future releases
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons/internal.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons/legacy.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								mesecons/oldwires.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -10,7 +10,7 @@ minetest.register_node("mesecons:mesecon_off", {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate=3, mesecon=1, mesecon_conductor_craftable=1},
 | 
			
		||||
	groups = {dig_immediate=2, mesecon=1, mesecon_conductor_craftable=1}, --MFF
 | 
			
		||||
    	description="Mesecons",
 | 
			
		||||
	mesecons = {conductor={
 | 
			
		||||
		state = mesecon.state.off,
 | 
			
		||||
@@ -28,7 +28,7 @@ minetest.register_node("mesecons:mesecon_on", {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = {-0.5, -0.5, -0.5, 0.5, -0.45, 0.5},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate=3, not_in_creaive_inventory=1, mesecon=1},
 | 
			
		||||
	groups = {dig_immediate=2, not_in_creaive_inventory=1, mesecon=1}, --MFF
 | 
			
		||||
	drop = "mesecons:mesecon_off 1",
 | 
			
		||||
	light_source = default.LIGHT_MAX-11,
 | 
			
		||||
	mesecons = {conductor={
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons/presets.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons/services.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										30
									
								
								mesecons/settings.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -1,15 +1,15 @@
 | 
			
		||||
-- SETTINGS
 | 
			
		||||
function mesecon.setting(setting, default)
 | 
			
		||||
	if type(default) == "boolean" then
 | 
			
		||||
		local read = minetest.setting_getbool("mesecon."..setting)
 | 
			
		||||
		if read == nil then
 | 
			
		||||
			return default
 | 
			
		||||
		else
 | 
			
		||||
			return read
 | 
			
		||||
		end
 | 
			
		||||
	elseif type(default) == "string" then
 | 
			
		||||
		return minetest.setting_get("mesecon."..setting) or default
 | 
			
		||||
	elseif type(default) == "number" then
 | 
			
		||||
		return tonumber(minetest.setting_get("mesecon."..setting) or default)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
-- SETTINGS
 | 
			
		||||
function mesecon.setting(setting, default)
 | 
			
		||||
	if type(default) == "boolean" then
 | 
			
		||||
		local read = minetest.setting_getbool("mesecon."..setting)
 | 
			
		||||
		if read == nil then
 | 
			
		||||
			return default
 | 
			
		||||
		else
 | 
			
		||||
			return read
 | 
			
		||||
		end
 | 
			
		||||
	elseif type(default) == "string" then
 | 
			
		||||
		return minetest.setting_get("mesecon."..setting) or default
 | 
			
		||||
	elseif type(default) == "number" then
 | 
			
		||||
		return tonumber(minetest.setting_get("mesecon."..setting) or default)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mesecons/textures/mesecons_wire_inv.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 204 B After Width: | Height: | Size: 186 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons/textures/mesecons_wire_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 465 B After Width: | Height: | Size: 378 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons/textures/mesecons_wire_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 464 B After Width: | Height: | Size: 366 B  | 
							
								
								
									
										0
									
								
								mesecons/util.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										6
									
								
								mesecons/wires.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -197,9 +197,9 @@ register_wires = function()
 | 
			
		||||
			offstate = "mesecons:wire_"..nodeid.."_off"
 | 
			
		||||
		}}
 | 
			
		||||
 | 
			
		||||
		local groups_on = {dig_immediate = 3, mesecon_conductor_craftable = 1,
 | 
			
		||||
			not_in_creative_inventory = 1}
 | 
			
		||||
		local groups_off = {dig_immediate = 3, mesecon_conductor_craftable = 1}
 | 
			
		||||
		local groups_on = {dig_immediate = 2, mesecon_conductor_craftable = 1,
 | 
			
		||||
			not_in_creative_inventory = 1} --MFF
 | 
			
		||||
		local groups_off = {dig_immediate = 2, mesecon_conductor_craftable = 1} --MFF
 | 
			
		||||
		if nodeid ~= "00000000" then
 | 
			
		||||
			groups_off["not_in_creative_inventory"] = 1
 | 
			
		||||
		end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons_alias/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_alias/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_blinkyplant/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										24
									
								
								mesecons_blinkyplant/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -10,11 +10,25 @@ local toggle_timer = function (pos)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local on_timer = function (pos)
 | 
			
		||||
	local node = minetest.get_node(pos)
 | 
			
		||||
	if(mesecon.flipstate(pos, node) == "on") then
 | 
			
		||||
		mesecon.receptor_on(pos)
 | 
			
		||||
	else
 | 
			
		||||
		mesecon.receptor_off(pos)
 | 
			
		||||
	-- DO NOT TOUCH OR.. THREATS! Thanks, MFF
 | 
			
		||||
	local activate = false
 | 
			
		||||
	for _, player in pairs(minetest.get_connected_players()) do
 | 
			
		||||
		local p = player:getpos()
 | 
			
		||||
		local dist = ((p.x-pos.x)^2 + (p.y-pos.y)^2 + (p.z-pos.z)^2)^0.5
 | 
			
		||||
		if dist < 40 then
 | 
			
		||||
			activate = true
 | 
			
		||||
			break
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	if activate then
 | 
			
		||||
		local node = minetest.get_node(pos)
 | 
			
		||||
		if(mesecon.flipstate(pos, node) == "on") then
 | 
			
		||||
			mesecon.receptor_on(pos)
 | 
			
		||||
		else
 | 
			
		||||
			mesecon.receptor_off(pos)
 | 
			
		||||
		end
 | 
			
		||||
	-- Our modification stops there, thank you, @crabman77
 | 
			
		||||
	end
 | 
			
		||||
	toggle_timer(pos)
 | 
			
		||||
end
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mesecons_blinkyplant/textures/jeija_blinky_plant_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 454 B After Width: | Height: | Size: 370 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_blinkyplant/textures/jeija_blinky_plant_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 463 B After Width: | Height: | Size: 395 B  | 
							
								
								
									
										0
									
								
								mesecons_button/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_button/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_button/sounds/mesecons_button_pop.ogg
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_button/sounds/mesecons_button_push.ogg
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_button/textures/jeija_wall_button_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 411 B After Width: | Height: | Size: 411 B  | 
							
								
								
									
										0
									
								
								mesecons_button/textures/jeija_wall_button_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 449 B After Width: | Height: | Size: 449 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_button/textures/jeija_wall_button_sides.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 434 B After Width: | Height: | Size: 220 B  | 
							
								
								
									
										0
									
								
								mesecons_commandblock/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										416
									
								
								mesecons_commandblock/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -1,208 +1,208 @@
 | 
			
		||||
minetest.register_chatcommand("say", {
 | 
			
		||||
	params = "<text>",
 | 
			
		||||
	description = "Say <text> as the server",
 | 
			
		||||
	privs = {server=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		minetest.chat_send_all(name .. ": " .. param)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("tell", {
 | 
			
		||||
	params = "<name> <text>",
 | 
			
		||||
	description = "Say <text> to <name> privately",
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		local found, _, target, message = param:find("^([^%s]+)%s+(.*)$")
 | 
			
		||||
		if found == nil then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid usage: " .. param)
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		if not minetest.get_player_by_name(target) then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid target: " .. target)
 | 
			
		||||
		end
 | 
			
		||||
		minetest.chat_send_player(target, name .. " whispers: " .. message, false)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("hp", {
 | 
			
		||||
	params = "<name> <value>",
 | 
			
		||||
	description = "Set health of <name> to <value> hitpoints",
 | 
			
		||||
	privs = {ban=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		local found, _, target, value = param:find("^([^%s]+)%s+(%d+)$")
 | 
			
		||||
		if found == nil then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid usage: " .. param)
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		local player = minetest.get_player_by_name(target)
 | 
			
		||||
		if player then
 | 
			
		||||
			player:set_hp(value)
 | 
			
		||||
		else
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid target: " .. target)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
local function initialize_data(meta)
 | 
			
		||||
	local commands = minetest.formspec_escape(meta:get_string("commands"))
 | 
			
		||||
	meta:set_string("formspec",
 | 
			
		||||
		"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]")
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner == "" then
 | 
			
		||||
		owner = "not owned"
 | 
			
		||||
	else
 | 
			
		||||
		owner = "owned by " .. owner
 | 
			
		||||
	end
 | 
			
		||||
	meta:set_string("infotext", "Command Block\n" ..
 | 
			
		||||
		"(" .. owner .. ")\n" ..
 | 
			
		||||
		"Commands: "..commands)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function construct(pos)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
 | 
			
		||||
	meta:set_string("commands", "tell @nearest Commandblock unconfigured")
 | 
			
		||||
 | 
			
		||||
	meta:set_string("owner", "")
 | 
			
		||||
 | 
			
		||||
	initialize_data(meta)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function after_place(pos, placer)
 | 
			
		||||
	if placer then
 | 
			
		||||
		local meta = minetest.get_meta(pos)
 | 
			
		||||
		meta:set_string("owner", placer:get_player_name())
 | 
			
		||||
		initialize_data(meta)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function receive_fields(pos, formname, fields, sender)
 | 
			
		||||
	if not fields.submit then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner ~= "" and sender:get_player_name() ~= owner then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	meta:set_string("commands", fields.commands)
 | 
			
		||||
 | 
			
		||||
	initialize_data(meta)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function resolve_commands(commands, pos)
 | 
			
		||||
	local players = minetest.get_connected_players()
 | 
			
		||||
 | 
			
		||||
	-- No players online: remove all commands containing
 | 
			
		||||
	-- @nearest, @farthest and @random
 | 
			
		||||
	if #players == 0 then
 | 
			
		||||
		commands = commands:gsub("[^\r\n]+", function (line)
 | 
			
		||||
			if line:find("@nearest") then return "" end
 | 
			
		||||
			if line:find("@farthest") then return "" end
 | 
			
		||||
			if line:find("@random") then return "" end
 | 
			
		||||
			return line
 | 
			
		||||
		end)
 | 
			
		||||
		return commands
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local nearest, farthest = nil, nil
 | 
			
		||||
	local min_distance, max_distance = math.huge, -1
 | 
			
		||||
	for index, player in pairs(players) do
 | 
			
		||||
		local distance = vector.distance(pos, player:getpos())
 | 
			
		||||
		if distance < min_distance then
 | 
			
		||||
			min_distance = distance
 | 
			
		||||
			nearest = player:get_player_name()
 | 
			
		||||
		end
 | 
			
		||||
		if distance > max_distance then
 | 
			
		||||
			max_distance = distance
 | 
			
		||||
			farthest = player:get_player_name()
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	local random = players[math.random(#players)]:get_player_name()
 | 
			
		||||
	commands = commands:gsub("@nearest", nearest)
 | 
			
		||||
	commands = commands:gsub("@farthest", farthest)
 | 
			
		||||
	commands = commands:gsub("@random", random)
 | 
			
		||||
	return commands
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function commandblock_action_on(pos, node)
 | 
			
		||||
	if node.name ~= "mesecons_commandblock:commandblock_off" then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_on"})
 | 
			
		||||
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner == "" then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local commands = resolve_commands(meta:get_string("commands"), pos)
 | 
			
		||||
	for _, command in pairs(commands:split("\n")) do
 | 
			
		||||
		local pos = command:find(" ")
 | 
			
		||||
		local cmd, param = command, ""
 | 
			
		||||
		if pos then
 | 
			
		||||
			cmd = command:sub(1, pos - 1)
 | 
			
		||||
			param = command:sub(pos + 1)
 | 
			
		||||
		end
 | 
			
		||||
		local cmddef = minetest.chatcommands[cmd]
 | 
			
		||||
		if not cmddef then
 | 
			
		||||
			minetest.chat_send_player(owner, "The command "..cmd.." does not exist")
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		local has_privs, missing_privs = minetest.check_player_privs(owner, cmddef.privs)
 | 
			
		||||
		if not has_privs then
 | 
			
		||||
			minetest.chat_send_player(owner, "You don't have permission "
 | 
			
		||||
					.."to run "..cmd
 | 
			
		||||
					.." (missing privileges: "
 | 
			
		||||
					..table.concat(missing_privs, ", ")..")")
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		cmddef.func(owner, param)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function commandblock_action_off(pos, node)
 | 
			
		||||
	if node.name == "mesecons_commandblock:commandblock_on" then
 | 
			
		||||
		minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_off"})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function can_dig(pos, player)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	return owner == "" or owner == player:get_player_name()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_commandblock:commandblock_off", {
 | 
			
		||||
	description = "Command Block",
 | 
			
		||||
	tiles = {"jeija_commandblock_off.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("jeija_commandblock_off.png"),
 | 
			
		||||
	groups = {cracky=2, mesecon_effector_off=1},
 | 
			
		||||
	on_construct = construct,
 | 
			
		||||
	after_place_node = after_place,
 | 
			
		||||
	on_receive_fields = receive_fields,
 | 
			
		||||
	can_dig = can_dig,
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
	mesecons = {effector = {
 | 
			
		||||
		action_on = commandblock_action_on
 | 
			
		||||
	}}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_commandblock:commandblock_on", {
 | 
			
		||||
	tiles = {"jeija_commandblock_on.png"},
 | 
			
		||||
	groups = {cracky=2, mesecon_effector_on=1, not_in_creative_inventory=1},
 | 
			
		||||
	light_source = 10,
 | 
			
		||||
	drop = "mesecons_commandblock:commandblock_off",
 | 
			
		||||
	on_construct = construct,
 | 
			
		||||
	after_place_node = after_place,
 | 
			
		||||
	on_receive_fields = receive_fields,
 | 
			
		||||
	can_dig = can_dig,
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
	mesecons = {effector = {
 | 
			
		||||
		action_off = commandblock_action_off
 | 
			
		||||
	}}
 | 
			
		||||
})
 | 
			
		||||
minetest.register_chatcommand("say", {
 | 
			
		||||
	params = "<text>",
 | 
			
		||||
	description = "Say <text> as the server",
 | 
			
		||||
	privs = {server=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		minetest.chat_send_all(name .. ": " .. param)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("tell", {
 | 
			
		||||
	params = "<name> <text>",
 | 
			
		||||
	description = "Say <text> to <name> privately",
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		local found, _, target, message = param:find("^([^%s]+)%s+(.*)$")
 | 
			
		||||
		if found == nil then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid usage: " .. param)
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		if not minetest.get_player_by_name(target) then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid target: " .. target)
 | 
			
		||||
		end
 | 
			
		||||
		minetest.chat_send_player(target, name .. " whispers: " .. message, false)
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_chatcommand("hp", {
 | 
			
		||||
	params = "<name> <value>",
 | 
			
		||||
	description = "Set health of <name> to <value> hitpoints",
 | 
			
		||||
	privs = {ban=true},
 | 
			
		||||
	func = function(name, param)
 | 
			
		||||
		local found, _, target, value = param:find("^([^%s]+)%s+(%d+)$")
 | 
			
		||||
		if found == nil then
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid usage: " .. param)
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		local player = minetest.get_player_by_name(target)
 | 
			
		||||
		if player then
 | 
			
		||||
			player:set_hp(value)
 | 
			
		||||
		else
 | 
			
		||||
			minetest.chat_send_player(name, "Invalid target: " .. target)
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
local function initialize_data(meta)
 | 
			
		||||
	local commands = minetest.formspec_escape(meta:get_string("commands"))
 | 
			
		||||
	meta:set_string("formspec",
 | 
			
		||||
		"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]")
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner == "" then
 | 
			
		||||
		owner = "not owned"
 | 
			
		||||
	else
 | 
			
		||||
		owner = "owned by " .. owner
 | 
			
		||||
	end
 | 
			
		||||
	meta:set_string("infotext", "Command Block\n" ..
 | 
			
		||||
		"(" .. owner .. ")\n" ..
 | 
			
		||||
		"Commands: "..commands)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function construct(pos)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
 | 
			
		||||
	meta:set_string("commands", "tell @nearest Commandblock unconfigured")
 | 
			
		||||
 | 
			
		||||
	meta:set_string("owner", "")
 | 
			
		||||
 | 
			
		||||
	initialize_data(meta)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function after_place(pos, placer)
 | 
			
		||||
	if placer then
 | 
			
		||||
		local meta = minetest.get_meta(pos)
 | 
			
		||||
		meta:set_string("owner", placer:get_player_name())
 | 
			
		||||
		initialize_data(meta)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function receive_fields(pos, formname, fields, sender)
 | 
			
		||||
	if not fields.submit then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner ~= "" and sender:get_player_name() ~= owner then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
	meta:set_string("commands", fields.commands)
 | 
			
		||||
 | 
			
		||||
	initialize_data(meta)
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function resolve_commands(commands, pos)
 | 
			
		||||
	local players = minetest.get_connected_players()
 | 
			
		||||
 | 
			
		||||
	-- No players online: remove all commands containing
 | 
			
		||||
	-- @nearest, @farthest and @random
 | 
			
		||||
	if #players == 0 then
 | 
			
		||||
		commands = commands:gsub("[^\r\n]+", function (line)
 | 
			
		||||
			if line:find("@nearest") then return "" end
 | 
			
		||||
			if line:find("@farthest") then return "" end
 | 
			
		||||
			if line:find("@random") then return "" end
 | 
			
		||||
			return line
 | 
			
		||||
		end)
 | 
			
		||||
		return commands
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local nearest, farthest = nil, nil
 | 
			
		||||
	local min_distance, max_distance = math.huge, -1
 | 
			
		||||
	for index, player in pairs(players) do
 | 
			
		||||
		local distance = vector.distance(pos, player:getpos())
 | 
			
		||||
		if distance < min_distance then
 | 
			
		||||
			min_distance = distance
 | 
			
		||||
			nearest = player:get_player_name()
 | 
			
		||||
		end
 | 
			
		||||
		if distance > max_distance then
 | 
			
		||||
			max_distance = distance
 | 
			
		||||
			farthest = player:get_player_name()
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
	local random = players[math.random(#players)]:get_player_name()
 | 
			
		||||
	commands = commands:gsub("@nearest", nearest)
 | 
			
		||||
	commands = commands:gsub("@farthest", farthest)
 | 
			
		||||
	commands = commands:gsub("@random", random)
 | 
			
		||||
	return commands
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function commandblock_action_on(pos, node)
 | 
			
		||||
	if node.name ~= "mesecons_commandblock:commandblock_off" then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_on"})
 | 
			
		||||
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	if owner == "" then
 | 
			
		||||
		return
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	local commands = resolve_commands(meta:get_string("commands"), pos)
 | 
			
		||||
	for _, command in pairs(commands:split("\n")) do
 | 
			
		||||
		local pos = command:find(" ")
 | 
			
		||||
		local cmd, param = command, ""
 | 
			
		||||
		if pos then
 | 
			
		||||
			cmd = command:sub(1, pos - 1)
 | 
			
		||||
			param = command:sub(pos + 1)
 | 
			
		||||
		end
 | 
			
		||||
		local cmddef = minetest.chatcommands[cmd]
 | 
			
		||||
		if not cmddef then
 | 
			
		||||
			minetest.chat_send_player(owner, "The command "..cmd.." does not exist")
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		local has_privs, missing_privs = minetest.check_player_privs(owner, cmddef.privs)
 | 
			
		||||
		if not has_privs then
 | 
			
		||||
			minetest.chat_send_player(owner, "You don't have permission "
 | 
			
		||||
					.."to run "..cmd
 | 
			
		||||
					.." (missing privileges: "
 | 
			
		||||
					..table.concat(missing_privs, ", ")..")")
 | 
			
		||||
			return
 | 
			
		||||
		end
 | 
			
		||||
		cmddef.func(owner, param)
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function commandblock_action_off(pos, node)
 | 
			
		||||
	if node.name == "mesecons_commandblock:commandblock_on" then
 | 
			
		||||
		minetest.swap_node(pos, {name = "mesecons_commandblock:commandblock_off"})
 | 
			
		||||
	end
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
local function can_dig(pos, player)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	local owner = meta:get_string("owner")
 | 
			
		||||
	return owner == "" or owner == player:get_player_name()
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_commandblock:commandblock_off", {
 | 
			
		||||
	description = "Command Block",
 | 
			
		||||
	tiles = {"jeija_commandblock_off.png"},
 | 
			
		||||
	inventory_image = minetest.inventorycube("jeija_commandblock_off.png"),
 | 
			
		||||
	groups = {cracky=2, mesecon_effector_off=1},
 | 
			
		||||
	on_construct = construct,
 | 
			
		||||
	after_place_node = after_place,
 | 
			
		||||
	on_receive_fields = receive_fields,
 | 
			
		||||
	can_dig = can_dig,
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
	mesecons = {effector = {
 | 
			
		||||
		action_on = commandblock_action_on
 | 
			
		||||
	}}
 | 
			
		||||
})
 | 
			
		||||
 | 
			
		||||
minetest.register_node("mesecons_commandblock:commandblock_on", {
 | 
			
		||||
	tiles = {"jeija_commandblock_on.png"},
 | 
			
		||||
	groups = {cracky=2, mesecon_effector_on=1, not_in_creative_inventory=1},
 | 
			
		||||
	light_source = 10,
 | 
			
		||||
	drop = "mesecons_commandblock:commandblock_off",
 | 
			
		||||
	on_construct = construct,
 | 
			
		||||
	after_place_node = after_place,
 | 
			
		||||
	on_receive_fields = receive_fields,
 | 
			
		||||
	can_dig = can_dig,
 | 
			
		||||
	sounds = default.node_sound_stone_defaults(),
 | 
			
		||||
	mesecons = {effector = {
 | 
			
		||||
		action_off = commandblock_action_off
 | 
			
		||||
	}}
 | 
			
		||||
})
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mesecons_commandblock/textures/jeija_close_window.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 323 B After Width: | Height: | Size: 191 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_commandblock/textures/jeija_commandblock_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 282 B After Width: | Height: | Size: 183 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_commandblock/textures/jeija_commandblock_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 278 B After Width: | Height: | Size: 183 B  | 
							
								
								
									
										0
									
								
								mesecons_delayer/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_delayer/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_bottom.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 438 B After Width: | Height: | Size: 261 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_ends_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 226 B After Width: | Height: | Size: 204 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_ends_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 228 B After Width: | Height: | Size: 204 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_off_1.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 562 B After Width: | Height: | Size: 448 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_off_2.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 558 B After Width: | Height: | Size: 449 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_off_3.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 561 B After Width: | Height: | Size: 448 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_off_4.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 556 B After Width: | Height: | Size: 446 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_on_1.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 544 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_on_2.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 632 B After Width: | Height: | Size: 544 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_on_3.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 635 B After Width: | Height: | Size: 544 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_on_4.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 630 B After Width: | Height: | Size: 539 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_sides_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 204 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_delayer/textures/mesecons_delayer_sides_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 234 B After Width: | Height: | Size: 204 B  | 
							
								
								
									
										0
									
								
								mesecons_detector/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										48
									
								
								mesecons_detector/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -4,10 +4,12 @@ local GET_COMMAND = "GET"
 | 
			
		||||
-- Detects players in a certain radius
 | 
			
		||||
-- The radius can be specified in mesecons/settings.lua
 | 
			
		||||
 | 
			
		||||
local function object_detector_make_formspec(pos)
 | 
			
		||||
	minetest.get_meta(pos):set_string("formspec", "size[9,2.5]" ..
 | 
			
		||||
		"field[0.3,  0;9,2;scanname;Name of player to scan for (empty for any):;${scanname}]"..
 | 
			
		||||
		"field[0.3,1.5;4,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
 | 
			
		||||
-- The following file was modified to detect multiple players
 | 
			
		||||
local object_detector_make_formspec = function (pos)
 | 
			
		||||
	local meta = minetest.get_meta(pos)
 | 
			
		||||
	meta:set_string("formspec", "size[9,2.5]" ..
 | 
			
		||||
		"field[0.3,  0;12,2;scanname;Name of player(s) to scan for (empty for any, separate with comma):;${scanname}]"..
 | 
			
		||||
		"field[0.3,1.5;4 ,2;digiline_channel;Digiline Channel (optional):;${digiline_channel}]"..
 | 
			
		||||
		"button_exit[7,0.75;2,3;;Save]")
 | 
			
		||||
end
 | 
			
		||||
 | 
			
		||||
@@ -23,34 +25,36 @@ end
 | 
			
		||||
-- returns true if player was found, false if not
 | 
			
		||||
local function object_detector_scan(pos)
 | 
			
		||||
	local objs = minetest.get_objects_inside_radius(pos, mesecon.setting("detector_radius", 6))
 | 
			
		||||
 | 
			
		||||
	-- abort if no scan results were found
 | 
			
		||||
	if next(objs) == nil then return false end
 | 
			
		||||
 | 
			
		||||
	local scanname = minetest.get_meta(pos):get_string("scanname")
 | 
			
		||||
	local every_player = scanname == ""
 | 
			
		||||
	for _, obj in pairs(objs) do
 | 
			
		||||
		-- "" is returned if it is not a player; "" ~= nil; so only handle objects with foundname ~= ""
 | 
			
		||||
		local foundname = obj:get_player_name()
 | 
			
		||||
 | 
			
		||||
		if foundname ~= "" then
 | 
			
		||||
			-- return true if scanning for any player or if specific playername was detected
 | 
			
		||||
			if scanname == "" or foundname == scanname then
 | 
			
		||||
				return true
 | 
			
		||||
	for k, obj in pairs(objs) do
 | 
			
		||||
		local isname = obj:get_player_name() -- "" is returned if it is not a player; "" ~= nil!
 | 
			
		||||
		local scanname = minetest.get_meta(pos):get_string("scanname"):gsub(' ', "")
 | 
			
		||||
		if (scanname == "" and isname ~= "") then
 | 
			
		||||
			minetest.get_meta(pos):set_string("scanedname", "")
 | 
			
		||||
			return true
 | 
			
		||||
		end
 | 
			
		||||
		local founds = {}
 | 
			
		||||
		for _, name in pairs(scanname:split(',')) do
 | 
			
		||||
			if (isname == name and isname ~= "") then
 | 
			
		||||
				table.insert(founds, isname)
 | 
			
		||||
			end
 | 
			
		||||
		end
 | 
			
		||||
		if #founds > 0 then
 | 
			
		||||
			minetest.get_meta(pos):set_string("scannedname", table.concat(founds, ','))
 | 
			
		||||
			return true
 | 
			
		||||
		end
 | 
			
		||||
	end
 | 
			
		||||
 | 
			
		||||
	minetest.get_meta(pos):set_string("scanedname", "")
 | 
			
		||||
	return false
 | 
			
		||||
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, node, channel, msg)
 | 
			
		||||
			local meta = minetest.get_meta(pos)
 | 
			
		||||
			if channel == meta:get_string("digiline_channel") then
 | 
			
		||||
				meta:set_string("scanname", msg)
 | 
			
		||||
			local active_channel = meta:get_string("digiline_channel")
 | 
			
		||||
			if channel == active_channel then
 | 
			
		||||
				meta:set_string("scanedname", msg)
 | 
			
		||||
				object_detector_make_formspec(pos)
 | 
			
		||||
			end
 | 
			
		||||
		end,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mesecons_detector/textures/jeija_node_detector_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 717 B After Width: | Height: | Size: 680 B  | 
							
								
								
									
										0
									
								
								mesecons_detector/textures/jeija_node_detector_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 727 B After Width: | Height: | Size: 727 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_detector/textures/jeija_object_detector_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 712 B After Width: | Height: | Size: 655 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_detector/textures/jeija_object_detector_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 735 B After Width: | Height: | Size: 733 B  | 
							
								
								
									
										0
									
								
								mesecons_doors/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										13
									
								
								mesecons_doors/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -74,6 +74,19 @@ meseconify_door("doors:door_steel")
 | 
			
		||||
meseconify_door("doors:door_glass")
 | 
			
		||||
meseconify_door("doors:door_obsidian_glass")
 | 
			
		||||
 | 
			
		||||
--MFF meseconify all doors, crabman 12/06/2016 
 | 
			
		||||
meseconify_door("doors:door_cherry")
 | 
			
		||||
meseconify_door("doors:door_tin")
 | 
			
		||||
meseconify_door("doors:door_prison")
 | 
			
		||||
meseconify_door("doors:door_gardengate_white")
 | 
			
		||||
meseconify_door("doors:door3_wood")
 | 
			
		||||
meseconify_door("doors:door3_steel")
 | 
			
		||||
meseconify_door("doors:door3_glass")
 | 
			
		||||
meseconify_door("doors:door3_obsidian_glass")
 | 
			
		||||
meseconify_door("doors:door3_cherry")
 | 
			
		||||
meseconify_door("doors:door3_prison")
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
-- Trapdoor
 | 
			
		||||
local function trapdoor_switch(pos, node)
 | 
			
		||||
	local state = minetest.get_meta(pos):get_int("state")
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								mesecons_extrawires/corner.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -37,7 +37,7 @@ minetest.register_node("mesecons_extrawires:corner_on", {
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	selection_box = corner_selectionbox,
 | 
			
		||||
	node_box = corner_nodebox,
 | 
			
		||||
	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 | 
			
		||||
	groups = {dig_immediate = 2, not_in_creative_inventory = 1}, -- MFF
 | 
			
		||||
	drop = "mesecons_extrawires:corner_off",
 | 
			
		||||
	mesecons = {conductor =
 | 
			
		||||
	{
 | 
			
		||||
@@ -64,7 +64,7 @@ minetest.register_node("mesecons_extrawires:corner_off", {
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	selection_box = corner_selectionbox,
 | 
			
		||||
	node_box = corner_nodebox,
 | 
			
		||||
	groups = {dig_immediate = 3},
 | 
			
		||||
	groups = {dig_immediate = 2}, --MFF
 | 
			
		||||
	mesecons = {conductor =
 | 
			
		||||
	{
 | 
			
		||||
		state = mesecon.state.off,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								mesecons_extrawires/crossover.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -41,7 +41,7 @@ minetest.register_node("mesecons_extrawires:crossover_off", {
 | 
			
		||||
			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate=3, mesecon=3},
 | 
			
		||||
	groups = {dig_immediate=2, mesecon=3}, --MFF
 | 
			
		||||
	mesecons = {
 | 
			
		||||
		conductor = {
 | 
			
		||||
			states = crossover_states,
 | 
			
		||||
@@ -77,7 +77,7 @@ minetest.register_node("mesecons_extrawires:crossover_01", {
 | 
			
		||||
			{ -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 },
 | 
			
		||||
		},
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1},
 | 
			
		||||
	groups = {dig_immediate=2, mesecon=3, not_in_creative_inventory=1}, --MFF
 | 
			
		||||
	mesecons = {
 | 
			
		||||
		conductor = {
 | 
			
		||||
			states = crossover_states,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons_extrawires/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_extrawires/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_extrawires/mesewire.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								mesecons_extrawires/tjunction.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -38,7 +38,7 @@ minetest.register_node("mesecons_extrawires:tjunction_on", {
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	selection_box = tjunction_selectionbox,
 | 
			
		||||
	node_box = tjunction_nodebox,
 | 
			
		||||
	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 | 
			
		||||
	groups = {dig_immediate = 2, not_in_creative_inventory = 1}, --MFF
 | 
			
		||||
	drop = "mesecons_extrawires:tjunction_off",
 | 
			
		||||
	mesecons = {conductor =
 | 
			
		||||
	{
 | 
			
		||||
@@ -65,7 +65,7 @@ minetest.register_node("mesecons_extrawires:tjunction_off", {
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	selection_box = tjunction_selectionbox,
 | 
			
		||||
	node_box = tjunction_nodebox,
 | 
			
		||||
	groups = {dig_immediate = 3},
 | 
			
		||||
	groups = {dig_immediate = 2}, --MFF
 | 
			
		||||
	mesecons = {conductor =
 | 
			
		||||
	{
 | 
			
		||||
		state = mesecon.state.off,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										8
									
								
								mesecons_extrawires/vertical.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -90,7 +90,7 @@ mesecon.register_node("mesecons_extrawires:vertical", {
 | 
			
		||||
	after_dig_node = vertical_update
 | 
			
		||||
},{
 | 
			
		||||
	tiles = {"mesecons_wire_off.png"},
 | 
			
		||||
	groups = {dig_immediate=3},
 | 
			
		||||
	groups = {dig_immediate=2}, --MFF
 | 
			
		||||
	mesecons = {conductor = {
 | 
			
		||||
		state = mesecon.state.off,
 | 
			
		||||
		onstate = "mesecons_extrawires:vertical_on",
 | 
			
		||||
@@ -98,7 +98,7 @@ mesecon.register_node("mesecons_extrawires:vertical", {
 | 
			
		||||
	}}
 | 
			
		||||
},{
 | 
			
		||||
	tiles = {"mesecons_wire_on.png"},
 | 
			
		||||
	groups = {dig_immediate=3, not_in_creative_inventory=1},
 | 
			
		||||
	groups = {dig_immediate=2, not_in_creative_inventory=1}, --MFF
 | 
			
		||||
	mesecons = {conductor = {
 | 
			
		||||
		state = mesecon.state.on,
 | 
			
		||||
		offstate = "mesecons_extrawires:vertical_off",
 | 
			
		||||
@@ -113,7 +113,7 @@ mesecon.register_node("mesecons_extrawires:vertical_top", {
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {dig_immediate=3, not_in_creative_inventory=1},
 | 
			
		||||
	groups = {dig_immediate=2, not_in_creative_inventory=1}, --MFF
 | 
			
		||||
	selection_box = top_box,
 | 
			
		||||
	node_box = top_box,
 | 
			
		||||
	is_vertical_conductor = true,
 | 
			
		||||
@@ -143,7 +143,7 @@ mesecon.register_node("mesecons_extrawires:vertical_bottom", {
 | 
			
		||||
	walkable = false,
 | 
			
		||||
	paramtype = "light",
 | 
			
		||||
	sunlight_propagates = true,
 | 
			
		||||
	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 | 
			
		||||
	groups = {dig_immediate = 2, not_in_creative_inventory = 1}, --MFF
 | 
			
		||||
	selection_box = bottom_box,
 | 
			
		||||
	node_box = bottom_box,
 | 
			
		||||
	is_vertical_conductor = true,
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons_gates/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										0
									
								
								mesecons_gates/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_and.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 233 B After Width: | Height: | Size: 129 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_diode.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 231 B After Width: | Height: | Size: 134 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_nand.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 133 B  | 
| 
		 Before Width: | Height: | Size: 251 B After Width: | Height: | Size: 127 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_not.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 241 B After Width: | Height: | Size: 133 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 105 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 109 B  | 
| 
		 Before Width: | Height: | Size: 243 B After Width: | Height: | Size: 127 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_gates/textures/jeija_gate_xor.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 245 B After Width: | Height: | Size: 136 B  | 
							
								
								
									
										0
									
								
								mesecons_hydroturbine/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								mesecons_hydroturbine/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -59,7 +59,7 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_off"},
 | 
			
		||||
	chance = 1,
 | 
			
		||||
	action = function(pos, node, active_object_count, active_object_count_wider)
 | 
			
		||||
		local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
 | 
			
		||||
		if minetest.get_node(waterpos).name=="default:water_flowing" then
 | 
			
		||||
		if minetest.get_node(waterpos).name=="default:water_flowing" or minetest.get_node(waterpos).name == "default:river_water_flowing" then
 | 
			
		||||
			minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"})
 | 
			
		||||
			nodeupdate(pos)
 | 
			
		||||
			mesecon.receptor_on(pos)
 | 
			
		||||
@@ -73,7 +73,7 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_on"},
 | 
			
		||||
	chance = 1,
 | 
			
		||||
	action = function(pos, node, active_object_count, active_object_count_wider)
 | 
			
		||||
		local waterpos={x=pos.x, y=pos.y+1, z=pos.z}
 | 
			
		||||
		if minetest.get_node(waterpos).name~="default:water_flowing" then
 | 
			
		||||
		if minetest.get_node(waterpos).name~="default:water_flowing" or minetest.get_node(waterpos).name ~= "default:river_water_flowing" then
 | 
			
		||||
			minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"})
 | 
			
		||||
			nodeupdate(pos)
 | 
			
		||||
			mesecon.receptor_off(pos)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										0
									
								
								mesecons_hydroturbine/models/jeija_hydro_turbine.obj
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										
											BIN
										
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_inv.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 4.8 KiB After Width: | Height: | Size: 4.8 KiB  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 782 B After Width: | Height: | Size: 776 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_sides_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 758 B After Width: | Height: | Size: 754 B  | 
							
								
								
									
										0
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_top_bottom.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 564 B After Width: | Height: | Size: 564 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 820 B After Width: | Height: | Size: 729 B  | 
							
								
								
									
										0
									
								
								mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 496 B After Width: | Height: | Size: 496 B  | 
							
								
								
									
										0
									
								
								mesecons_insulated/depends.txt
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
							
								
								
									
										4
									
								
								mesecons_insulated/init.lua
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						@@ -30,7 +30,7 @@ minetest.register_node("mesecons_insulated:insulated_on", {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate = 3, not_in_creative_inventory = 1},
 | 
			
		||||
	groups = {dig_immediate = 2, not_in_creative_inventory = 1}, --MFF
 | 
			
		||||
	drop = "mesecons_insulated:insulated_off",
 | 
			
		||||
	mesecons = {conductor = {
 | 
			
		||||
		state = mesecon.state.on,
 | 
			
		||||
@@ -62,7 +62,7 @@ minetest.register_node("mesecons_insulated:insulated_off", {
 | 
			
		||||
		type = "fixed",
 | 
			
		||||
		fixed = { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }
 | 
			
		||||
	},
 | 
			
		||||
	groups = {dig_immediate = 3},
 | 
			
		||||
	groups = {dig_immediate = 2}, --MFF
 | 
			
		||||
	mesecons = {conductor = {
 | 
			
		||||
		state = mesecon.state.off,
 | 
			
		||||
		onstate = "mesecons_insulated:insulated_on",
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_01.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 305 B After Width: | Height: | Size: 169 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_10.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 270 B After Width: | Height: | Size: 169 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 293 B After Width: | Height: | Size: 156 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_crossing_tb_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 156 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_curved_tb_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 253 B After Width: | Height: | Size: 136 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_curved_tb_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 196 B After Width: | Height: | Size: 136 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_01x.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 246 B After Width: | Height: | Size: 173 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_01z.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 252 B After Width: | Height: | Size: 157 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_10x.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 238 B After Width: | Height: | Size: 161 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_10z.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 261 B After Width: | Height: | Size: 161 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 142 B After Width: | Height: | Size: 109 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_ends_on.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 126 B After Width: | Height: | Size: 109 B  | 
							
								
								
									
										
											BIN
										
									
								
								mesecons_insulated/textures/jeija_insulated_wire_sides_off.png
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						| 
		 Before Width: | Height: | Size: 200 B After Width: | Height: | Size: 100 B  |