2 --Code and Textures are under the CC by-sa 3.0 licence
3 --see: http://creativecommons.org/licenses/by-sa/3.0/
9 function arrow_signs
:savetext(pos
, formname
, fields
, sender
)
11 if not minetest
.get_player_privs(sender
:get_player_name())["interact"] then
12 minetest
.chat_send_player(sender
:get_player_name(), "error: you don't have permission to edit the sign. you need the interact priv")
15 local meta
= minetest
.env
:get_meta(pos
)
16 fields
.text
= fields
.text
or ""
17 print((sender
:get_player_name() or "").." wrote \""..fields
.text
..
18 "\" to sign at "..minetest
.pos_to_string(pos
))
19 meta
:set_string("text", fields
.text
)
20 text
= arrow_signs
:create_lines(fields
.text
)
21 meta
:set_string("infotext", '"'..text
..'"')
23 for wort
in text
:gfind("\n") do
27 minetest
.chat_send_player(sender
:get_player_name(),"\tInformation: \nYou've written more than 5 lines. \n it may be that not all lines are displayed. \n Please remove the last entry")
32 function arrow_signs
:create_lines(text
)
33 text
= text
:gsub("/", "\"\n\"")
34 text
= text
:gsub("|", "\"\n\"")
39 local clone_registered
= function(case
,name
)
42 if case
== "item" then list
= minetest
.registered_items
end
43 if case
== "node" then list
= minetest
.registered_nodes
end
44 if case
== "craftitem" then list
= minetest
.registered_craftitems
end
45 if case
== "tool" then list
= minetest
.registered_tools
end
46 if case
== "entity" then list
= minetest
.registered_entities
end
48 for k
,v
in pairs(list
[name
]) do
56 minetest
.register_node("arrow_signs:wall_right", {
57 description
= "Sign right",
58 drawtype
= "signlike",
59 tiles
= {"arrow_sign_right.png"},
60 inventory_image
= "arrow_sign_right.png",
62 paramtype2
= "wallmounted",
63 sunlight_propagates
= true,
67 --wall_top = <default>
68 --wall_bottom = <default>
69 --wall_side = <default>
71 groups
= {immortal
=1,attached_node
=1},
72 legacy_wallmounted
= true,
73 sounds
= default
.node_sound_defaults(),
74 on_construct
= function(pos
)
75 --local n = minetest.env:get_node(pos)
76 local meta
= minetest
.env
:get_meta(pos
)
77 meta
:set_string("formspec", "field[text;;${text}]")
78 meta
:set_string("infotext", "\"\"")
80 on_receive_fields
= function(pos
, formname
, fields
, sender
)
81 arrow_signs
:savetext(pos
, formname
, fields
, sender
)
83 on_punch
= function(pos
)
84 local meta
= minetest
.env
:get_meta(pos
)
85 meta
:set_string("formspec", "")
92 minetest
.register_node("arrow_signs:wall_left", {
93 description
= "Sign left",
94 drawtype
= "signlike",
95 tiles
= {"arrow_sign_left.png"},
96 inventory_image
= "arrow_sign_left.png",
98 paramtype2
= "wallmounted",
99 sunlight_propagates
= true,
102 type = "wallmounted",
103 --wall_top = <default>
104 --wall_bottom = <default>
105 --wall_side = <default>
107 groups
= {immortal
=1,attached_node
=1},
108 legacy_wallmounted
= true,
109 sounds
= default
.node_sound_defaults(),
110 on_construct
= function(pos
)
111 --local n = minetest.env:get_node(pos)
112 local meta
= minetest
.env
:get_meta(pos
)
113 meta
:set_string("formspec", "field[text;;${text}]")
114 meta
:set_string("infotext", "\"\"")
116 on_receive_fields
= function(pos
, formname
, fields
, sender
)
117 arrow_signs
:savetext(pos
, formname
, fields
, sender
)
119 on_punch
= function(pos
)
120 local meta
= minetest
.env
:get_meta(pos
)
121 meta
:set_string("formspec", "")
127 minetest
.register_node("arrow_signs:wall_up", {
128 description
= "Sign up",
129 drawtype
= "signlike",
130 tiles
= {"arrow_sign_up.png"},
131 inventory_image
= "arrow_sign_up.png",
133 paramtype2
= "wallmounted",
134 sunlight_propagates
= true,
137 type = "wallmounted",
138 --wall_top = <default>
139 --wall_bottom = <default>
140 --wall_side = <default>
142 groups
= {immortal
=1,attached_node
=1},
143 legacy_wallmounted
= true,
144 sounds
= default
.node_sound_defaults(),
145 on_construct
= function(pos
)
146 --local n = minetest.env:get_node(pos)
147 local meta
= minetest
.env
:get_meta(pos
)
148 meta
:set_string("formspec", "field[text;;${text}]")
149 meta
:set_string("infotext", "\"\"")
151 on_receive_fields
= function(pos
, formname
, fields
, sender
)
152 arrow_signs
:savetext(pos
, formname
, fields
, sender
)
154 on_punch
= function(pos
)
155 local meta
= minetest
.env
:get_meta(pos
)
156 meta
:set_string("formspec", "")
162 minetest
.register_node("arrow_signs:wall_down", {
163 description
= "Sign down",
164 drawtype
= "signlike",
165 tiles
= {"arrow_sign_down.png"},
166 inventory_image
= "arrow_sign_down.png",
168 paramtype2
= "wallmounted",
169 sunlight_propagates
= true,
172 type = "wallmounted",
173 --wall_top = <default>
174 --wall_bottom = <default>
175 --wall_side = <default>
177 groups
= {immortal
=1,attached_node
=1},
178 legacy_wallmounted
= true,
179 sounds
= default
.node_sound_defaults(),
180 on_construct
= function(pos
)
181 --local n = minetest.env:get_node(pos)
182 local meta
= minetest
.env
:get_meta(pos
)
183 meta
:set_string("formspec", "field[text;;${text}]")
184 meta
:set_string("infotext", "\"\"")
186 on_receive_fields
= function(pos
, formname
, fields
, sender
)
187 arrow_signs
:savetext(pos
, formname
, fields
, sender
)
189 on_punch
= function(pos
)
190 local meta
= minetest
.env
:get_meta(pos
)
191 meta
:set_string("formspec", "")