Compare commits
5 Commits
c9c36f0d31
...
c0a5a21bf8
Author | SHA1 | Date |
---|---|---|
|
c0a5a21bf8 | |
|
498225cf95 | |
|
61012b3c0c | |
|
a169234d2f | |
|
8bc0700a8d |
|
@ -15,22 +15,17 @@ protector.node = "protector:protect"
|
||||||
protector.item = "protector:stick"
|
protector.item = "protector:stick"
|
||||||
|
|
||||||
protector.get_member_list = function(meta)
|
protector.get_member_list = function(meta)
|
||||||
s = meta:get_string("members")
|
local s = meta:get_string("members")
|
||||||
list = s:split(" ")
|
local list = s:split(" ")
|
||||||
return list
|
return list
|
||||||
end
|
end
|
||||||
|
|
||||||
protector.set_member_list = function(meta, list)
|
protector.set_member_list = function(meta, list)
|
||||||
s = ""
|
meta:set_string("members", table.concat(list, " "))
|
||||||
for _, i in ipairs(list) do
|
|
||||||
s = s .. i .. " "
|
|
||||||
end
|
|
||||||
s = s:sub(0,s:len()-1) -- remove last space
|
|
||||||
meta:set_string("members",s)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
protector.is_member = function (meta, name)
|
protector.is_member = function (meta, name)
|
||||||
list = protector.get_member_list(meta)
|
local list = protector.get_member_list(meta)
|
||||||
for _, n in ipairs(list) do
|
for _, n in ipairs(list) do
|
||||||
if n == name then
|
if n == name then
|
||||||
return true
|
return true
|
||||||
|
@ -41,13 +36,13 @@ end
|
||||||
|
|
||||||
protector.add_member = function(meta, name)
|
protector.add_member = function(meta, name)
|
||||||
if protector.is_member(meta, name) then return end
|
if protector.is_member(meta, name) then return end
|
||||||
list = protector.get_member_list(meta)
|
local list = protector.get_member_list(meta)
|
||||||
table.insert(list,name)
|
table.insert(list,name)
|
||||||
protector.set_member_list(meta,list)
|
protector.set_member_list(meta,list)
|
||||||
end
|
end
|
||||||
|
|
||||||
protector.del_member = function(meta,name)
|
protector.del_member = function(meta,name)
|
||||||
list = protector.get_member_list(meta)
|
local list = protector.get_member_list(meta)
|
||||||
for i, n in ipairs(list) do
|
for i, n in ipairs(list) do
|
||||||
if n == name then
|
if n == name then
|
||||||
table.remove(list, i)
|
table.remove(list, i)
|
||||||
|
@ -59,7 +54,7 @@ end
|
||||||
|
|
||||||
protector.generate_formspec = function (meta)
|
protector.generate_formspec = function (meta)
|
||||||
if meta:get_int("page") == nil then meta:set_int("page",0) end
|
if meta:get_int("page") == nil then meta:set_int("page",0) end
|
||||||
formspec = "size[8,8]"
|
local formspec = "size[8,8]"
|
||||||
.."label[0,0;-- Protector interface --]"
|
.."label[0,0;-- Protector interface --]"
|
||||||
.."label[0,1;Punch the node to show the protected area.]"
|
.."label[0,1;Punch the node to show the protected area.]"
|
||||||
.."label[0,2;Current members:]"
|
.."label[0,2;Current members:]"
|
||||||
|
@ -147,8 +142,9 @@ local old_node_dig = minetest.node_dig
|
||||||
function minetest.node_dig(pos, node, digger)
|
function minetest.node_dig(pos, node, digger)
|
||||||
local ok=true
|
local ok=true
|
||||||
if node.name ~= protector.node then
|
if node.name ~= protector.node then
|
||||||
ok = protector.can_dig(5,pos,digger)
|
ok = protector.can_dig(5,pos,digger)
|
||||||
else ok = protector.can_dig(5,pos,digger,true)
|
else
|
||||||
|
ok = protector.can_dig(5,pos,digger,true)
|
||||||
end
|
end
|
||||||
if ok == true then
|
if ok == true then
|
||||||
old_node_dig(pos, node, digger)
|
old_node_dig(pos, node, digger)
|
||||||
|
@ -174,10 +170,10 @@ function minetest.item_place(itemstack, placer, pointed_thing)
|
||||||
end
|
end
|
||||||
return old_node_place(itemstack, placer, pointed_thing)
|
return old_node_place(itemstack, placer, pointed_thing)
|
||||||
end
|
end
|
||||||
protect = {}
|
local protect = {}
|
||||||
minetest.register_node(protector.node, {
|
minetest.register_node(protector.node, {
|
||||||
description = "Protection",
|
description = "Protection",
|
||||||
tile_images = {"protector_top.png","protector_top.png","protector_side.png"},
|
tiles = {"protector_top.png","protector_top.png","protector_side.png"},
|
||||||
sounds = default.node_sound_stone_defaults(),
|
sounds = default.node_sound_stone_defaults(),
|
||||||
groups = {dig_immediate=2},
|
groups = {dig_immediate=2},
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
|
@ -257,10 +253,12 @@ minetest.register_on_player_receive_fields(function(player,formname,fields)
|
||||||
if fields.protector_page_next then
|
if fields.protector_page_next then
|
||||||
meta:set_int("page",meta:get_int("page")+1)
|
meta:set_int("page",meta:get_int("page")+1)
|
||||||
end
|
end
|
||||||
minetest.show_formspec(
|
if not fields.quit then
|
||||||
player:get_player_name(), formname,
|
minetest.show_formspec(
|
||||||
protector.generate_formspec(meta)
|
player:get_player_name(), formname,
|
||||||
)
|
protector.generate_formspec(meta)
|
||||||
|
)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -276,7 +274,7 @@ minetest.register_craftitem(protector.item, {
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = '"' .. protector.node .. '" 4',
|
output = protector.node .. " 4",
|
||||||
recipe = {
|
recipe = {
|
||||||
{"default:stone","default:stone","default:stone"},
|
{"default:stone","default:stone","default:stone"},
|
||||||
{"default:stone","default:steel_ingot","default:stone"},
|
{"default:stone","default:steel_ingot","default:stone"},
|
||||||
|
|
Loading…
Reference in New Issue