Facebook
From ar10ch, 3 Years ago, written in Lua.
Embed
Download Paste or View Raw
Hits: 91
  1. minetest.register_privilege("metatest", definition)
  2.  
  3. minetest.register_node("metatest2:metatestblock",
  4.         {       description = "Block to test some meta",
  5.                 drawtype = "normal",
  6.                 tiles = {"default_wood.png"},
  7.                
  8.                 after_place_node = function(pos, placer, itemstack, pointed_thing)
  9.                
  10.                         local meta = minetest.get_meta(pos)
  11.                         local player = placer:get_player_name()
  12.                        
  13.                         meta:set_string("owner", player)
  14.                         meta:set_string("infotext", ("Test meta block" ).." (owned by "..meta:get_string("owner")..")")
  15.                                                
  16.                         local metatest_formspec_nopriv =
  17.                                 "size[8,8]" ..
  18.                                 "box[-0.2,-0.2;8.2,8.5;#75816b]" ..
  19.                                 "background[2.9,3.2;2,2;default_mese_block.png;auto_clip]" ..
  20.                                 "button[0.7,2.5;2,2;remove;Remove_Node]" ..
  21.                                 "button[0.7,3.5;2,2;activate;Activate]" ..
  22.                                 "button_exit[0.7,4.5;2,2;exit;Cancel]"
  23.                                
  24.                         local metatest_formspec_haspriv =
  25.                                 "size[8,8]" ..
  26.                                 "box[-0.2,-0.2;8.2,8.5;#75816b]" ..
  27.                                 "background[2.9,3.2;2,2;default_mese_block.png;auto_clip]" ..
  28.                                 "field[1,1;2,1;x;Enter x coord (xx):;]" ..
  29.                                 "field[3,1;2,1;y;Enter y coord (yy):;]" ..
  30.                                 "field[5,1;2,1;z;Enter z coord (zz):;]" ..
  31.                                 "button[0.7,2.5;2,2;remove;Remove_Node]" ..
  32.                                 "button[0.7,3.5;2,2;activate;Activate]" ..
  33.                                 "button_exit[0.7,4.5;2,2;exit;Cancel]"
  34.                        
  35.                         meta:set_string("formspec1", metatest_formspec_nopriv)
  36.                         meta:set_string("formspec2", metatest_formspec_haspriv)
  37.                        
  38. --                      end,
  39.                        
  40. ------------------------------------------------------------------------------------------------------------------
  41.                        
  42. --              on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
  43.                
  44. --                      local meta = minetest.get_meta(pos)
  45. --                      local player = clicker:get_player_name()
  46.                        
  47.                         local fs1 = meta:get_string("formspec1")
  48.                         local fs2 = meta:get_string("formspec2")
  49.                        
  50.                         if not minetest.check_player_privs(player, {metatest=true}) then
  51.                        
  52.                         minetest.show_formspec(player, "form1", fs1)
  53.                        
  54.                         elseif minetest.check_player_privs(player, {metatest=true}) then
  55.                        
  56.                         minetest.show_formspec(player, "form2", fs2)
  57.                        
  58.                         end
  59.                                
  60.                 end,
  61.                
  62. --------------------------------------------------------------------------------------------------------------------
  63.  
  64.                 on_receive_fields = function(pos, formname, fields, sender)
  65.                
  66. --              if not minetest.check_player_privs(player, {metatest=true}) then
  67. --              if formname = ("form1") then return end
  68. --              else if formname = ("form2") then
  69.                                
  70.                         local meta = minetest.get_meta(pos)
  71.                         local name = sender:get_player_name()
  72.                         local owner = meta:get_string("owner")
  73.                        
  74.                         local fs1 = meta:get_string("formspec1")
  75.                         local fs2 = meta:get_string("formspec2")
  76.  
  77.                         if fields and fields.activate then
  78.                        
  79.                                 if fields and fields.x and fields.y and fields.z then
  80.                                
  81.                                         if (tonumber(fields.x)) then pos.x = tonumber(fields.x)
  82.                                         else minetest.chat_send_player(name, "X Coordinate Invalid") end
  83.                                         if (tonumber(fields.y)) then pos.y = tonumber(fields.y)
  84.                                         else minetest.chat_send_player(name, "Y Coordinate Invalid") end
  85.                                         if (tonumber(fields.z)) then pos.z = tonumber(fields.z)
  86.                                         else minetest.chat_send_player(name, "Z Coordinate Invalid") end
  87.                                        
  88.                                 end
  89.                                        
  90.                         sender:set_pos({x=pos.x, y=pos.y, z=pos.z})
  91.                                                
  92.                         end
  93.  
  94.                         if fields and fields.remove then
  95.                        
  96.                         local owner = meta:get_string( "owner" )
  97.                        
  98.                                 if owner ~= name then
  99.                                 minetest.chat_send_player(name, ("This Metatest Block belongs to ") ..meta:get_string("owner") ..(". You can't remove it."))
  100.                                 return
  101.                                 end
  102.                        
  103.                         minetest.set_node(pos, {name = "air"})
  104.                         sender:get_inventory():add_item("main", "metatest:metatestblock")
  105.                        
  106.                         end
  107.                
  108.                 end            
  109.         }
  110. )
  111.