Facebook
From ar10ch, 2 Years ago, written in Lua.
Embed
Download Paste or View Raw
Hits: 72
  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.                         local fs1 = meta:get_string("formspec1")
  39.                         local fs2 = meta:get_string("formspec2")
  40.                        
  41.                         if not minetest.check_player_privs(player, {metatest=true}) then
  42.                        
  43.                         minetest.show_formspec(player, "form1", fs1)
  44.                        
  45.                         elseif minetest.check_player_privs(player, {metatest=true}) then
  46.                        
  47.                         minetest.show_formspec(player, "form2", fs2)
  48.                        
  49.                         end
  50.                                
  51.                 end,
  52.                
  53. --------------------------------------------------------------------------------------------------------------------
  54.  
  55.                 on_receive_fields = function(pos, formname, fields, sender)
  56.                                
  57.                         local meta = minetest.get_meta(pos)
  58.                         local name = sender:get_player_name()
  59.                         local owner = meta:get_string("owner")
  60.                        
  61.                         local fs1 = meta:get_string("formspec1")
  62.                         local fs2 = meta:get_string("formspec2")
  63.  
  64.                         if fields and fields.activate then
  65.                        
  66.                                 if fields and fields.x and fields.y and fields.z then
  67.                                
  68.                                         if (tonumber(fields.x)) then pos.x = tonumber(fields.x)
  69.                                         else minetest.chat_send_player(name, "X Coordinate Invalid") end
  70.                                         if (tonumber(fields.y)) then pos.y = tonumber(fields.y)
  71.                                         else minetest.chat_send_player(name, "Y Coordinate Invalid") end
  72.                                         if (tonumber(fields.z)) then pos.z = tonumber(fields.z)
  73.                                         else minetest.chat_send_player(name, "Z Coordinate Invalid") end
  74.                                        
  75.                                 end
  76.                                        
  77.                         sender:set_pos({x=pos.x, y=pos.y, z=pos.z})
  78.                                                
  79.                         end
  80.  
  81.                         if fields and fields.remove then
  82.                        
  83.                         local owner = meta:get_string( "owner" )
  84.                        
  85.                                 if owner ~= name then
  86.                                 minetest.chat_send_player(name, ("This Metatest Block belongs to ") ..meta:get_string("owner") ..(". You can't remove it."))
  87.                                 return
  88.                                 end
  89.                        
  90.                         minetest.set_node(pos, {name = "air"})
  91.                         sender:get_inventory():add_item("main", "metatest:metatestblock")
  92.                        
  93.                         end
  94.                
  95.                 end            
  96.         }
  97. )
  98.