Advertisement
Guest User

Untitled

a guest
Mar 11th, 2013
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.12 KB | None | 0 0
  1.  
  2. function homedecor_register_fence_with_sign(fencename, fencewithsignname)
  3.     local def = minetest.registered_nodes[fencename]
  4.     local def_sign = minetest.registered_nodes[fencewithsignname]
  5.     if not (def and def_sign) then
  6.         error("Attempt to register unknown node as fence")
  7.     end
  8.     fences_with_sign[fencename] = fencewithsignname
  9.     local on_place = def.on_place
  10.     def.on_place = function(itemstack, placer, pointed_thing, ...)
  11.         if on_place then
  12.             itemstack = on_place(itemstack, placer, pointed_thing, ...) or itemstack
  13.         end
  14.         if not homedecor_node_is_owned(pointed_thing.under, placer) then
  15.             local fdir = minetest.dir_to_facedir(placer:get_look_dir())
  16.             minetest.env:add_node(pointed_thing.above, {name = fencename, param2 = fdir})
  17.             itemstack:take_item()
  18.             placer:set_wielded_item(itemstack)
  19.             return itemstack
  20.         end
  21.     end
  22.     local on_construct = def_sign.on_construct
  23.     def_sign.on_construct = function(pos, ...)
  24.         if on_construct then on_construct(pos, ...) end
  25.         homedecor_construct_sign(pos, ...)
  26.     end
  27.     local on_destruct = def_sign.on_destruct
  28.     def_sign.on_destruct = function(pos, ...)
  29.         if on_destruct then on_destruct(pos) end
  30.         homedecor_destruct_sign(pos, ...)
  31.     end
  32.     local on_receive_fields = def_sign.on_receive_fields
  33.     def_sign.on_receive_fields = function(pos, formname, fields, sender, ...)
  34.         if on_receive_fields then on_receive_fields(pos, formname, fields, sender, ...) end
  35.         homedecor_update_sign(pos, fields)
  36.     end
  37.     local on_punch = def_sign.on_punch
  38.     def_sign.on_punch = function(pos, node, puncher, ...)
  39.         if on_punch then on_punch(pos, node, puncher, ...) end
  40.         homedecor_update_sign(pos)
  41.     end
  42.     local after_dig_node = def_sign.after_dig_node
  43.     def_sign.after_dig_node = function(pos, node, digger, ...)
  44.         print("FUCK YOU AFTER_DIG!!!")
  45.         if after_dig_node then after_dig_node(pos, node, digger, ...) end
  46.         node.name = fencename
  47.         minetest.env:add_node(pos, node)
  48.     end
  49.     def_sign.drop = "default:sign_wall"
  50.     minetest.register_node(":"..fencename, def);
  51.     minetest.register_node(":"..fencewithsignname, def_sign);
  52. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement