minetest.register_privilege("metatest", definition) minetest.register_node("metatest:metatestblock", { description = "Block to test some meta", drawtype = "normal", tiles = {"default_mese_block.png"}, after_place_node = function(pos, placer, itemstack, pointed_thing) local meta = minetest.get_meta(pos) local player = placer:get_player_name() meta:set_string("owner", player) meta:set_string("infotext", ("Test meta block" ).." (owned by "..meta:get_string("owner")..")") local metatest_formspec = "size[8,8]" .. "box[-0.2,-0.2;8.2,8.5;#75816b]" .. "background[2.9,3.2;2,2;default_mese_block.png;auto_clip]" .. "field[1,1;2,1;x;Enter x coord (xx):;]" .. "field[3,1;2,1;y;Enter y coord (yy):;]" .. "field[5,1;2,1;z;Enter z coord (zz):;]" .. "button[0.7,2.5;2,2;remove;Remove Node]" .. "button[0.7,3.5;2,2;activate;Activate]" .. "button_exit[0.7,4.5;2,2;exit;Cancel]" .. "button[5.7,2.5;2,2;unlock;Unlock Coords]" meta:set_string("formspec", metatest_formspec) end, on_receive_fields = function(pos, formname, fields, sender) local meta = minetest.get_meta(pos) local name = sender:get_player_name() --------------------------------------------------------------------------------------------------------------------------------------------- if fields and fields.activate then if fields and fields.x and fields.y and fields.z then if (tonumber(fields.x)) then pos.x = tonumber(fields.x) else minetest.chat_send_player(name, "X Coordinate Invalid") end if (tonumber(fields.y)) then pos.y = tonumber(fields.y) else minetest.chat_send_player(name, "Y Coordinate Invalid") end if (tonumber(fields.z)) then pos.z = tonumber(fields.z) else minetest.chat_send_player(name, "Z Coordinate Invalid") end end sender:set_pos({x=pos.x, y=pos.y, z=pos.z}) end --------------------------------------------------------------------------------------------------------------------------------------------- if fields and fields.remove then local owner = meta:get_string( "owner" ) if owner ~= name then minetest.chat_send_player(name, ("This Metatest Block belongs to ") ..meta:get_string("owner") ..(". You can't remove it.")) return end minetest.set_node(pos, {name = "air"}) sender:get_inventory():add_item("main", "metatest:metatestblock") end --------------------------------------------------------------------------------------------------------------------------------------------- end } )