Facebook
From ar10ch, 3 Years ago, written in Lua.
Embed
Download Paste or View Raw
Hits: 92
  1. minetest.register_privilege("metatest", definition)
  2.  
  3. minetest.register_node("metatest:metatestblock",
  4.         {       description = "Block to test some meta",
  5.                 drawtype = "normal",
  6.                 tiles = {"default_mese_block.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 =
  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.                                 "field[1,1;2,1;x;Enter x coord (xx):;]" ..
  21.                                 "field[3,1;2,1;y;Enter y coord (yy):;]" ..
  22.                                 "field[5,1;2,1;z;Enter z coord (zz):;]" ..
  23.                                 "button[0.7,2.5;2,2;remove;Remove Node]" ..
  24.                                 "button[0.7,3.5;2,2;activate;Activate]" ..
  25.                                 "button_exit[0.7,4.5;2,2;exit;Cancel]" ..
  26.                                 "button[5.7,2.5;2,2;unlock;Unlock Coords]"
  27.                                
  28.                         meta:set_string("formspec", metatest_formspec)
  29.                                                                
  30.                 end,
  31.  
  32.                 on_receive_fields = function(pos, formname, fields, sender)
  33.                
  34.                         local meta = minetest.get_meta(pos)
  35.                         local name = sender:get_player_name()
  36.                        
  37. ---------------------------------------------------------------------------------------------------------------------------------------------
  38.  
  39.                         if fields and fields.activate then
  40.                        
  41.                                 if fields and fields.x and fields.y and fields.z then
  42.                                
  43.                                         if (tonumber(fields.x)) then pos.x = tonumber(fields.x)
  44.                                         else minetest.chat_send_player(name, "X Coordinate Invalid") end
  45.                                         if (tonumber(fields.y)) then pos.y = tonumber(fields.y)
  46.                                         else minetest.chat_send_player(name, "Y Coordinate Invalid") end
  47.                                         if (tonumber(fields.z)) then pos.z = tonumber(fields.z)
  48.                                         else minetest.chat_send_player(name, "Z Coordinate Invalid") end
  49.                                        
  50.                                 end
  51.                                        
  52.                         sender:set_pos({x=pos.x, y=pos.y, z=pos.z})
  53.                                                
  54.                         end
  55.                        
  56. ---------------------------------------------------------------------------------------------------------------------------------------------                                  
  57.  
  58.                         if fields and fields.remove then
  59.                        
  60.                         local owner = meta:get_string( "owner" )
  61.                        
  62.                                 if owner ~= name then
  63.                                 minetest.chat_send_player(name, ("This Metatest Block belongs to ") ..meta:get_string("owner") ..(". You can't remove it."))
  64.                                 return
  65.                                 end
  66.                        
  67.                         minetest.set_node(pos, {name = "air"})
  68.                         sender:get_inventory():add_item("main", "metatest:metatestblock")
  69.                        
  70.                         end
  71.                        
  72. ---------------------------------------------------------------------------------------------------------------------------------------------          
  73.                
  74.                 end            
  75.         }
  76. )
  77.