forked from mtcontrib/locks
		
	Compare commits
	
		
			7 Commits
		
	
	
		
			nalc-1.2.0
			...
			f36403bcf9
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f36403bcf9 | |||
| 
						 | 
					e789726fdf | ||
| 
						 | 
					48103101ba | ||
| 79b8186ed8 | |||
| f0e4b2012e | |||
| 4d3a7e51df | |||
| bd6909326c | 
@@ -1,2 +1,3 @@
 | 
				
			|||||||
default
 | 
					default
 | 
				
			||||||
pipeworks?
 | 
					pipeworks?
 | 
				
			||||||
 | 
					basic_materials?
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										13
									
								
								init.lua
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								init.lua
									
									
									
									
									
								
							@@ -750,14 +750,17 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
 | 
				
			|||||||
	return false;
 | 
						return false;
 | 
				
			||||||
end)
 | 
					end)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- craftitem; that can be used to craft shared locked objects
 | 
					if minetest.get_modpath("basic_materials") then
 | 
				
			||||||
minetest.register_craftitem("locks:lock", {
 | 
						minetest.register_alias("locks:lock", "basic_materials:padlock")
 | 
				
			||||||
 | 
					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'},
 | 
				
			||||||
@@ -765,7 +768,7 @@ minetest.register_craft({
 | 
				
			|||||||
				{'',                    '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", {
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										4
									
								
								mod.conf
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										4
									
								
								mod.conf
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,4 @@
 | 
				
			|||||||
 | 
					name = locks
 | 
				
			||||||
 | 
					description = This Mod for Minetest adds objects that can be locked and shared.
 | 
				
			||||||
 | 
					depends=default
 | 
				
			||||||
 | 
					optional_depends = pipeworks,basic_materials
 | 
				
			||||||
@@ -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 = {
 | 
				
			||||||
      { 'default:chest', 'locks:lock', '' },
 | 
					      { 'locks:lock', 'default:chest', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''},
 | 
				
			||||||
   },
 | 
					   },
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 = {
 | 
				
			||||||
      { 'default:furnace', 'locks:lock', '' },
 | 
					      { 'locks:lock', 'default:furnace', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''},
 | 
				
			||||||
   },
 | 
					   },
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -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 = {
 | 
				
			||||||
      { 'default:sign_wall', 'locks:lock', '' },
 | 
					      { 'locks:lock', 'default:sign_wall', minetest.get_modpath("basic_materials") and 'basic_materials:ic' or ''},
 | 
				
			||||||
   },
 | 
					   },
 | 
				
			||||||
})
 | 
					})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -22,14 +22,15 @@ 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
 | 
				
			||||||
@@ -40,13 +41,10 @@ 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
 | 
				
			||||||
	
 | 
						
 | 
				
			||||||
    local olddata = locks:get_lockdata( pos );
 | 
						-- No need to remember who owns the door, what passwords are set etc.
 | 
				
			||||||
    minetest.add_node(pos, {name = "locks:door_bottom_"..t, param2 = p2})
 | 
						-- because minetest.swap_node() keeps metadata at pos
 | 
				
			||||||
    minetest.add_node({x = pos.x, y = pos.y + 1, z = pos.z}, {name = "locks:door_top_"..t, param2 = p2})
 | 
						minetest.swap_node(pos, {name = "locks:door_bottom_"..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
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -79,17 +77,16 @@ for i = 1, 2 do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		on_construct = function(pos)
 | 
							on_construct = function(pos)
 | 
				
			||||||
			locks:lock_init( pos,
 | 
								locks:lock_init( pos,
 | 
				
			||||||
                               "size[8,2]"..
 | 
									"size[8,2]"..locks.uniform_background..
 | 
				
			||||||
				locks.uniform_background..
 | 
										"button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" )
 | 
				
			||||||
                               "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( {x=pos.x, y=pos.y-1, z=pos.z}, 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( {x=pos.x, y=pos.y-1, z=pos.z}, player )
 | 
				
			||||||
		end
 | 
							end
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
	minetest.register_node("locks:door_bottom_"..i, {
 | 
						minetest.register_node("locks:door_bottom_"..i, {
 | 
				
			||||||
@@ -112,17 +109,16 @@ for i = 1, 2 do
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		on_construct = function(pos)
 | 
							on_construct = function(pos)
 | 
				
			||||||
			locks:lock_init( pos,
 | 
								locks:lock_init( pos,
 | 
				
			||||||
                               "size[8,2]"..
 | 
									"size[8,2]"..locks.uniform_background..
 | 
				
			||||||
				locks.uniform_background..
 | 
										"button_exit[6.3,1.2;1.7,1;locks_sent_input;Proceed]" )
 | 
				
			||||||
                               "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
 | 
				
			||||||
@@ -142,11 +138,12 @@ minetest.register_node("locks:door", {
 | 
				
			|||||||
	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,  placer:get_player_name())
 | 
							if (minetest.is_protected(above,  pname)
 | 
				
			||||||
         or minetest.is_protected(above1, placer:get_player_name())) then
 | 
								 or minetest.is_protected(above1, pname)) then
 | 
				
			||||||
	    minetest.chat_send_player(placer:get_player_name(), "This area is protected!")
 | 
								minetest.chat_send_player(pname, "This area is protected!")
 | 
				
			||||||
			return itemstack
 | 
								return itemstack
 | 
				
			||||||
		else
 | 
							else
 | 
				
			||||||
			-- there should be 2 empty nodes
 | 
								-- there should be 2 empty nodes
 | 
				
			||||||
@@ -157,12 +154,11 @@ 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
 | 
				
			||||||
                dir = {
 | 
									fdir = minetest.dir_to_facedir({
 | 
				
			||||||
					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
 | 
				
			||||||
@@ -173,50 +169,47 @@ 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({x = above.x, y = above.y + 1, z = above.z}, {name = "locks:door_top_"..t, param2 = fdir})
 | 
								minetest.add_node(above1, {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, placer:get_player_name() or "", "Shared locked door");
 | 
								locks:lock_set_owner( above, 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");
 | 
								locks:lock_set_owner( above1, pname 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 = {
 | 
				
			||||||
         { 'xdoors2:door', 'locks:lock', '' },
 | 
								{ 'locks: lock', 'xdoors2:door', ing},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
   });
 | 
					   })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- if the normal doors are installed
 | 
						-- if the normal doors are installed
 | 
				
			||||||
else if( minetest.get_modpath("doors") ~= nil ) then
 | 
					elseif( minetest.get_modpath("doors") ~= nil ) then
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	minetest.register_craft({
 | 
						minetest.register_craft({
 | 
				
			||||||
		output = 'locks:door',
 | 
							output = 'locks:door',
 | 
				
			||||||
		recipe = {
 | 
							recipe = {
 | 
				
			||||||
         { 'doors:door_wood', 'locks:lock', '' },
 | 
								{ 'locks:lock', 'doors:door_wood', ing},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	})
 | 
						})
 | 
				
			||||||
 | 
					
 | 
				
			||||||
-- 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', '' },
 | 
								{ 'default:wood', 'default:wood', ing },
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
   });
 | 
						})
 | 
				
			||||||
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