forked from mtcontrib/locks
		
	Compare commits
	
		
			2 Commits
		
	
	
		
			79b8186ed8
			...
			master
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | e789726fdf | ||
|  | 48103101ba | 
| @@ -1,3 +1,2 @@ | |||||||
| default | default | ||||||
| pipeworks? | pipeworks? | ||||||
| basic_materials? |  | ||||||
|   | |||||||
							
								
								
									
										15
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								init.lua
									
									
									
									
									
								
							| @@ -750,17 +750,14 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) | |||||||
| 	return false; | 	return false; | ||||||
| end) | end) | ||||||
|  |  | ||||||
| if minetest.get_modpath("basic_materials") then | -- craftitem; that can be used to craft shared locked objects | ||||||
| 	minetest.register_alias("locks:lock", "basic_materials:padlock") | minetest.register_craftitem("locks:lock", { | ||||||
| else |  | ||||||
| 	-- craftitem; that can be used to craft shared locked objects |  | ||||||
| 	minetest.register_craftitem("locks:lock", { |  | ||||||
|         description = "Lock to lock and share objects", |         description = "Lock to lock and share objects", | ||||||
|         image = "locks_lock16.png", |         image = "locks_lock16.png", | ||||||
| 	}); | }); | ||||||
|  |  | ||||||
|  |  | ||||||
| 	minetest.register_craft({ | minetest.register_craft({ | ||||||
|         output = "locks:lock 2", |         output = "locks:lock 2", | ||||||
|         recipe = { |         recipe = { | ||||||
|                  {'default:steel_ingot', 'default:steel_ingot','default:steel_ingot'}, |                  {'default:steel_ingot', 'default:steel_ingot','default:steel_ingot'}, | ||||||
| @@ -768,7 +765,7 @@ else | |||||||
|                  {'',                    'default:steel_ingot',''}, |                  {'',                    'default:steel_ingot',''}, | ||||||
|                 } |                 } | ||||||
|         }); |         }); | ||||||
| end |  | ||||||
|  |  | ||||||
| -- a key allowes to open your own shared locked objects | -- a key allowes to open your own shared locked objects | ||||||
| minetest.register_craftitem("locks:key", { | minetest.register_craftitem("locks:key", { | ||||||
| @@ -804,5 +801,3 @@ dofile(minetest.get_modpath("locks").."/shared_locked_chest.lua"); | |||||||
| dofile(minetest.get_modpath("locks").."/shared_locked_sign_wall.lua"); | dofile(minetest.get_modpath("locks").."/shared_locked_sign_wall.lua"); | ||||||
| dofile(minetest.get_modpath("locks").."/shared_locked_xdoors2.lua"); | dofile(minetest.get_modpath("locks").."/shared_locked_xdoors2.lua"); | ||||||
| dofile(minetest.get_modpath("locks").."/shared_locked_furnace.lua"); | dofile(minetest.get_modpath("locks").."/shared_locked_furnace.lua"); | ||||||
|  |  | ||||||
| minetest.log("action", "[locks] loaded.") |  | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								mod.conf
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								mod.conf
									
									
									
									
									
								
							| @@ -1,3 +1,4 @@ | |||||||
| name = locks | name = locks | ||||||
| depends=default | description = This Mod for Minetest adds objects that can be locked and shared. | ||||||
| optional_depends = pipeworks,basic_materials | depends = default | ||||||
|  | optional_depends = pipeworks | ||||||
|   | |||||||
| @@ -140,7 +140,7 @@ minetest.register_node("locks:shared_locked_chest", { | |||||||
| minetest.register_craft({ | minetest.register_craft({ | ||||||
|    output = 'locks:shared_locked_chest', |    output = 'locks:shared_locked_chest', | ||||||
|    recipe = { |    recipe = { | ||||||
|       { 'locks:lock', 'default:chest', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''}, |       { 'default:chest', 'locks:lock', '' }, | ||||||
|    }, |    }, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -428,7 +428,7 @@ minetest.register_abm({ | |||||||
| minetest.register_craft({ | minetest.register_craft({ | ||||||
|    output = 'locks:shared_locked_furnace', |    output = 'locks:shared_locked_furnace', | ||||||
|    recipe = { |    recipe = { | ||||||
|       { 'locks:lock', 'default:furnace', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''}, |       { 'default:furnace', 'locks:lock', '' }, | ||||||
|    }, |    }, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ minetest.register_node("locks:shared_locked_sign_wall", { | |||||||
| minetest.register_craft({ | minetest.register_craft({ | ||||||
|    output = 'locks:shared_locked_sign_wall', |    output = 'locks:shared_locked_sign_wall', | ||||||
|    recipe = { |    recipe = { | ||||||
|       { 'locks:lock', 'default:sign_wall', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''}, |       { 'default:sign_wall', 'locks:lock', '' }, | ||||||
|    }, |    }, | ||||||
| }) | }) | ||||||
|  |  | ||||||
|   | |||||||
| @@ -22,15 +22,14 @@ end | |||||||
|  |  | ||||||
| local xdoors2_transform = function(pos, node, puncher) | local xdoors2_transform = function(pos, node, puncher) | ||||||
|  |  | ||||||
|  |     if( not( locks:lock_allow_use( pos, puncher ))) then | ||||||
|  |       minetest.chat_send_player( puncher:get_player_name(), "This door is locked. It can only be opened by its owner or people with a key that fits."); | ||||||
|  |       return; | ||||||
|  |     end | ||||||
|  |  | ||||||
|     if is_top(node.name) then |     if is_top(node.name) then | ||||||
|         pos = {x = pos.x, y = pos.y - 1, z = pos.z} |         pos = {x = pos.x, y = pos.y - 1, z = pos.z} | ||||||
|     end |     end | ||||||
|  |  | ||||||
| 	if( not( locks:lock_allow_use( pos, puncher ))) then |  | ||||||
|       minetest.chat_send_player( puncher:get_player_name(), "This door is locked. It can only be opened by its owner or people with a key that fits.") |  | ||||||
|       return |  | ||||||
| 	end |  | ||||||
|  |  | ||||||
|     local t = 3 - node.name:sub(-1) |     local t = 3 - node.name:sub(-1) | ||||||
|     local p2 = 0 |     local p2 = 0 | ||||||
|     if t == 2 then |     if t == 2 then | ||||||
| @@ -41,10 +40,13 @@ local xdoors2_transform = function(pos, node, puncher) | |||||||
| 	minetest.sound_play("doors_door_close", { pos = pos, gain = 0.3, max_hear_distance = 10}) | 	minetest.sound_play("doors_door_close", { pos = pos, gain = 0.3, max_hear_distance = 10}) | ||||||
|     end |     end | ||||||
| 	 | 	 | ||||||
| 	-- No need to remember who owns the door, what passwords are set etc. |     local olddata = locks:get_lockdata( pos ); | ||||||
| 	-- because minetest.swap_node() keeps metadata at pos |     minetest.add_node(pos, {name = "locks:door_bottom_"..t, param2 = p2}) | ||||||
| 	minetest.swap_node(pos, {name = "locks:door_bottom_"..t, param2 = p2}) |     minetest.add_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "locks:door_top_"..t, param2 = p2}) | ||||||
| 	minetest.swap_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "locks:door_top_"..t, param2 = p2}) |  | ||||||
|  |     -- remember who owns the door, what passwords are set etc. | ||||||
|  |     locks:set_lockdata( pos, olddata ); | ||||||
|  |     locks:set_lockdata( {x = pos.x, y = pos.y + 1, z = pos.z}, olddata ); | ||||||
| end | end | ||||||
|  |  | ||||||
|  |  | ||||||
| @@ -77,16 +79,17 @@ for i = 1, 2 do | |||||||
|  |  | ||||||
|         on_construct = function(pos) |         on_construct = function(pos) | ||||||
|                 locks:lock_init( pos, |                 locks:lock_init( pos, | ||||||
| 				"size[8,2]"..locks.uniform_background.. |                                "size[8,2]".. | ||||||
| 					"button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" ) | 				locks.uniform_background.. | ||||||
|  |                                "button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" ); | ||||||
|         end, |         end, | ||||||
|  |  | ||||||
|         on_receive_fields = function(pos, formname, fields, sender) |         on_receive_fields = function(pos, formname, fields, sender) | ||||||
| 			locks:lock_handle_input( {x=pos.x, y=pos.y-1, z=pos.z}, formname, fields, sender ) |                 locks:lock_handle_input( pos, formname, fields, sender ); | ||||||
|         end, |         end, | ||||||
|  |  | ||||||
|         can_dig = function(pos,player) |         can_dig = function(pos,player) | ||||||
| 			return locks:lock_allow_dig( {x=pos.x, y=pos.y-1, z=pos.z}, player ) |                 return locks:lock_allow_dig( pos, player ); | ||||||
|         end |         end | ||||||
|     }) |     }) | ||||||
|     minetest.register_node("locks:door_bottom_"..i, { |     minetest.register_node("locks:door_bottom_"..i, { | ||||||
| @@ -109,16 +112,17 @@ for i = 1, 2 do | |||||||
|  |  | ||||||
|         on_construct = function(pos) |         on_construct = function(pos) | ||||||
|                 locks:lock_init( pos, |                 locks:lock_init( pos, | ||||||
| 				"size[8,2]"..locks.uniform_background.. |                                "size[8,2]".. | ||||||
| 					"button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" ) | 				locks.uniform_background.. | ||||||
|  |                                "button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" ); | ||||||
|         end, |         end, | ||||||
|  |  | ||||||
|         on_receive_fields = function(pos, formname, fields, sender) |         on_receive_fields = function(pos, formname, fields, sender) | ||||||
| 			locks:lock_handle_input( pos, formname, fields, sender ) |                 locks:lock_handle_input( pos, formname, fields, sender ); | ||||||
|         end, |         end, | ||||||
|  |  | ||||||
|         can_dig = function(pos,player) |         can_dig = function(pos,player) | ||||||
| 			return locks:lock_allow_dig( pos, player ) |                 return locks:lock_allow_dig( pos, player ); | ||||||
|         end |         end | ||||||
|     }) |     }) | ||||||
| end | end | ||||||
| @@ -134,16 +138,15 @@ minetest.register_node("locks:door", { | |||||||
|     description = "Shared locked Wooden Door", |     description = "Shared locked Wooden Door", | ||||||
|     node_placement_prediction = "", |     node_placement_prediction = "", | ||||||
|     inventory_image = 'locks_xdoors2_door.png', |     inventory_image = 'locks_xdoors2_door.png', | ||||||
| 	wield_image = 'locks_xdoors2_door.png', |     wield_image = 'xdoors2_door.png', | ||||||
|     stack_max = 1, |     stack_max = 1, | ||||||
|     sunlight_propogates = true, |     sunlight_propogates = true, | ||||||
|     on_place = function(itemstack, placer, pointed_thing) |     on_place = function(itemstack, placer, pointed_thing) | ||||||
| 		local pname = placer:get_player_name() |  | ||||||
|         local above = pointed_thing.above |         local above = pointed_thing.above | ||||||
| 		local above1 = {x = above.x, y = above.y + 1, z = above.z} | 	local above1 = {x = above.x, y = above.y + 1, z = above.z}; | ||||||
| 		if (minetest.is_protected(above,  pname) |         if (minetest.is_protected(above,  placer:get_player_name()) | ||||||
| 			 or minetest.is_protected(above1, pname)) then |          or minetest.is_protected(above1, placer:get_player_name())) then | ||||||
| 			minetest.chat_send_player(pname, "This area is protected!") | 	    minetest.chat_send_player(placer:get_player_name(), "This area is protected!") | ||||||
| 	    return itemstack | 	    return itemstack | ||||||
| 	else | 	else | ||||||
|             -- there should be 2 empty nodes |             -- there should be 2 empty nodes | ||||||
| @@ -154,11 +157,12 @@ minetest.register_node("locks:door", { | |||||||
|             local fdir = 0 |             local fdir = 0 | ||||||
|             local placer_pos = placer:get_pos() |             local placer_pos = placer:get_pos() | ||||||
|             if placer_pos then |             if placer_pos then | ||||||
| 				fdir = minetest.dir_to_facedir({ |                 dir = { | ||||||
|                     x = above.x - placer_pos.x, |                     x = above.x - placer_pos.x, | ||||||
|                     y = above.y - placer_pos.y, |                     y = above.y - placer_pos.y, | ||||||
|                     z = above.z - placer_pos.z |                     z = above.z - placer_pos.z | ||||||
| 				}) |                 } | ||||||
|  |                 fdir = minetest.dir_to_facedir(dir) | ||||||
|             end |             end | ||||||
|  |  | ||||||
|             local t = 1 |             local t = 1 | ||||||
| @@ -169,47 +173,50 @@ minetest.register_node("locks:door", { | |||||||
|             end |             end | ||||||
|  |  | ||||||
|             minetest.add_node(above, {name = "locks:door_bottom_"..t, param2 = fdir}) |             minetest.add_node(above, {name = "locks:door_bottom_"..t, param2 = fdir}) | ||||||
| 			minetest.add_node(above1, {name = "locks:door_top_"..t, param2 = fdir}) |             minetest.add_node({x = above.x, y = above.y + 1, z = above.z}, {name = "locks:door_top_"..t, param2 = fdir}) | ||||||
|  |  | ||||||
|             -- store who owns the door; the other data can be default for now |             -- store who owns the door; the other data can be default for now | ||||||
| 			locks:lock_set_owner( above, pname or "", "Shared locked door") |             locks:lock_set_owner( above, placer:get_player_name() or "", "Shared locked door"); | ||||||
| 			locks:lock_set_owner( above1, pname or "", "Shared locked door") |             locks:lock_set_owner( {x = above.x, y = above.y + 1, z = above.z}, placer:get_player_name() or "", "Shared locked door"); | ||||||
|  |  | ||||||
|             return ItemStack("") |             return ItemStack("") | ||||||
| 	end | 	end | ||||||
|     end |     end | ||||||
| }) | }) | ||||||
|  |  | ||||||
| local ing = minetest.get_modpath("basic_materials") and 'basic_materials:ic' or '' |  | ||||||
| -- if xdoors2 is installed | -- if xdoors2 is installed | ||||||
| if( minetest.get_modpath("xdoors2") ~= nil ) then | if( minetest.get_modpath("xdoors2") ~= nil ) then | ||||||
|    minetest.register_craft({ |    minetest.register_craft({ | ||||||
|       output = 'locks:door', |       output = 'locks:door', | ||||||
|       recipe = { |       recipe = { | ||||||
| 			{ 'locks: lock', 'xdoors2:door', ing}, |          { 'xdoors2:door', 'locks:lock', '' }, | ||||||
|       }, |       }, | ||||||
|    }) |    }); | ||||||
|  |  | ||||||
| 	-- if the normal doors are installed | -- if the normal doors are installed | ||||||
| elseif( minetest.get_modpath("doors") ~= nil ) then | else if( minetest.get_modpath("doors") ~= nil ) then | ||||||
|  |  | ||||||
|    minetest.register_craft({ |    minetest.register_craft({ | ||||||
|       output = 'locks:door', |       output = 'locks:door', | ||||||
|       recipe = { |       recipe = { | ||||||
| 			{ 'locks:lock', 'doors:door_wood', ing}, |          { 'doors:door_wood', 'locks:lock', '' }, | ||||||
|       }, |       }, | ||||||
|    }) |    }) | ||||||
|  |  | ||||||
| 	-- fallback if no doors can be found | -- fallback if no doors can be found | ||||||
| else | else | ||||||
|    minetest.register_craft({ |    minetest.register_craft({ | ||||||
|       output = 'locks:door', |       output = 'locks:door', | ||||||
|       recipe = { |       recipe = { | ||||||
|          { 'default:wood', 'default:wood', '' }, |          { 'default:wood', 'default:wood', '' }, | ||||||
|          { 'default:wood', 'default:wood', 'locks:lock' }, |          { 'default:wood', 'default:wood', 'locks:lock' }, | ||||||
| 			{ 'default:wood', 'default:wood', ing }, |          { 'default:wood', 'default:wood', '' }, | ||||||
|       }, |       }, | ||||||
| 	}) |    }); | ||||||
| end | end | ||||||
|  | end -- of previous else | ||||||
|  |  | ||||||
| print( "[Mod] locks: loading locks:door") |  | ||||||
|  |  | ||||||
|  | print( "[Mod] locks: loading locks:door"); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user