diff --git a/init.lua b/init.lua index 864e6d7..c7f36f8 100644 --- a/init.lua +++ b/init.lua @@ -12,7 +12,7 @@ arrow_signs={} minetest.chat_send_player(sender:get_player_name(), "error: you don't have permission to edit the sign. you need the interact priv") return end - local meta = minetest.env:get_meta(pos) + local meta = minetest.get_meta(pos) fields.text = fields.text or "" print((sender:get_player_name() or "").." wrote \""..fields.text.. "\" to sign at "..minetest.pos_to_string(pos)) @@ -61,68 +61,40 @@ else end minetest.register_node(":default:sign_wall", node) - - - - - - - - ---Sign right -minetest.register_node("arrow_signs:wall_right", { - description = "Sign right", - drawtype = "signlike", - tiles = {"arrow_sign_right.png"}, - inventory_image = "arrow_sign_right.png", +--Sign arrow +minetest.register_node("arrow_signs:wall", { + description = "Arrow signs", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {0.25, -0.5, 0.25, -0.5, -0.47, -0.25}, + {0.3125, -0.5, 0.1875, 0.25, -0.47, -0.1875}, + {0.3125, -0.5, 0.125, 0.375, -0.47, -0.125}, + {0.375, -0.5, 0.0625, 0.437, -0.47, -0.0625} + } + }, + selection_box = { + type = "fixed", + fixed = { + {0.25, -0.5, 0.25, -0.5, -0.47, -0.25}, + {0.3125, -0.5, 0.1875, 0.25, -0.47, -0.1875}, + {0.3125, -0.5, 0.125, 0.375, -0.47, -0.125}, + {0.375, -0.5, 0.0625, 0.437, -0.47, -0.0625} + } + }, + tiles = {"arrow_sign.png", "arrow_sign.png", "arrow_sign_border_right.png", "arrow_sign_border_left.png", "arrow_sign_border_up.png", "arrow_sign_border_down.png" }, + inventory_image = "arrow_sign.png", paramtype = "light", - paramtype2 = "wallmounted", + paramtype2 = "facedir", sunlight_propagates = true, walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,attached_node=1,sign=1}, - legacy_wallmounted = true, + groups = {choppy=2,dig_immediate=2,sign=1}, sounds = default.node_sound_defaults(), + on_place = minetest.rotate_node, on_construct = function(pos) - --local n = minetest.env:get_node(pos) - local meta = minetest.env:get_meta(pos) - meta:set_string("formspec", "hack:sign_text_input") - meta:set_string("infotext", "\"\"") - end, - on_receive_fields = function(pos, formname, fields, sender) - arrow_signs:savetext(pos, formname, fields, sender) - end, - -}) - - --- sign left -minetest.register_node("arrow_signs:wall_left", { - description = "Sign left", - drawtype = "signlike", - tiles = {"arrow_sign_left.png"}, - inventory_image = "arrow_sign_left.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,attached_node=1,sign=1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), - on_construct = function(pos) - --local n = minetest.env:get_node(pos) - local meta = minetest.env:get_meta(pos) + --local n = minetest.get_node(pos) + local meta = minetest.get_meta(pos) meta:set_string("formspec", "hack:sign_text_input") meta:set_string("infotext", "\"\"") end, @@ -131,115 +103,20 @@ minetest.register_node("arrow_signs:wall_left", { end, }) - ---Sign up -minetest.register_node("arrow_signs:wall_up", { - description = "Sign up", - drawtype = "signlike", - tiles = {"arrow_sign_up.png"}, - inventory_image = "arrow_sign_up.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,attached_node=1,sign=1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), - on_construct = function(pos) - --local n = minetest.env:get_node(pos) - local meta = minetest.env:get_meta(pos) - meta:set_string("formspec", "hack:sign_text_input") - meta:set_string("infotext", "\"\"") - end, - on_receive_fields = function(pos, formname, fields, sender) - arrow_signs:savetext(pos, formname, fields, sender) - end, -}) - - ---Sign down -minetest.register_node("arrow_signs:wall_down", { - description = "Sign down", - drawtype = "signlike", - tiles = {"arrow_sign_down.png"}, - inventory_image = "arrow_sign_down.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,attached_node=1,sign=1}, - legacy_wallmounted = true, - sounds = default.node_sound_defaults(), - on_construct = function(pos) - --local n = minetest.env:get_node(pos) - local meta = minetest.env:get_meta(pos) - meta:set_string("formspec", "hack:sign_text_input") - meta:set_string("infotext", "\"\"") - end, - on_receive_fields = function(pos, formname, fields, sender) - arrow_signs:savetext(pos, formname, fields, sender) - end, -}) - - - - - - ---recipes +--Recipes minetest.register_craft({ - output = 'arrow_signs:wall_right 1', - recipe = { - {'', '', ''}, - {'', 'group:sign', 'default:stick'}, - {'', '', ''}, - } -}) -minetest.register_craft({ - output = 'arrow_signs:wall_left 1', - recipe = { - {'', '', ''}, - {'default:stick', 'group:sign', ''}, - {'', '', ''}, - } -}) -minetest.register_craft({ - output = 'arrow_signs:wall_up 1', - recipe = { - {'', 'default:stick', ''}, - {'', 'group:sign', ''}, - {'', '', ''}, - } -}) -minetest.register_craft({ - output = 'arrow_signs:wall_down 1', - recipe = { - {'', '', ''}, - {'', 'group:sign', ''}, - {'', 'default:stick', ''}, - } + type = 'shapeless', + output = 'arrow_signs:wall', + recipe = {'group:sign', 'default:stick'}, }) minetest.register_craft({ output = 'default:sign_wall', recipe = { - {'group:sign'}, - } }) +--Alias minetest.register_alias("more_signs:wall_right", "arrow_signs:wall_right") minetest.register_alias("sign_right", "arrow_signs:wall_right") @@ -252,7 +129,24 @@ minetest.register_alias("sign_up", "arrow_signs:wall_up") minetest.register_alias("more_signs:wall_down", "arrow_signs:wall_down") minetest.register_alias("sign_down", "arrow_signs:wall_down") +--Redefinition +minetest.register_abm({ + nodenames = {"arrow_signs:wall_right", "arrow_signs:wall_left", "arrow_signs:wall_up", "arrow_signs:wall_down"}, + interval = 1, + chance = 1, + action = function(pos, node) + local convert_facedir={ + ["arrow_signs:wall_right"]={17,15,8,6}, + ["arrow_signs:wall_left"]={19,13,10,4}, + ["arrow_signs:wall_up"]={16,14,11,5}, + ["arrow_signs:wall_down"]={18,12,9,7} + } + minetest.swap_node(pos, {name="arrow_signs:wall",param2=convert_facedir[node.name][node.param2-1]}) + end, +}) + +--Locked sign if locks then local MODPATH = minetest.get_modpath("arrow_signs"); dofile(MODPATH.."/shared_locked.lua") diff --git a/shared_locked.lua b/shared_locked.lua index f185f76..fa2a9d8 100644 --- a/shared_locked.lua +++ b/shared_locked.lua @@ -1,284 +1,97 @@ -- a sign -minetest.register_node("arrow_signs:shared_locked_right", { - description = "Shared locked sign right", - drawtype = "signlike", - tiles = {"arrow_sign_right.png"}, - inventory_image = "arrow_sign_right.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,sign_locked=1}, - legacy_wallmounted = true, +minetest.register_node("arrow_signs:shared_locked", { + description = "Shared locked sign", + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {0.25, -0.5, 0.25, -0.5, -0.47, -0.25}, + {0.3125, -0.5, 0.1875, 0.25, -0.47, -0.1875}, + {0.3125, -0.5, 0.125, 0.375, -0.47, -0.125}, + {0.375, -0.5, 0.0625, 0.437, -0.47, -0.0625} + } + }, + selection_box = { + type = "fixed", + fixed = { + {0.25, -0.5, 0.25, -0.5, -0.47, -0.25}, + {0.3125, -0.5, 0.1875, 0.25, -0.47, -0.1875}, + {0.3125, -0.5, 0.125, 0.375, -0.47, -0.125}, + {0.375, -0.5, 0.0625, 0.437, -0.47, -0.0625} + } + }, + tiles = {"arrow_sign.png", "arrow_sign.png", "arrow_sign_border_right.png", "arrow_sign_border_left.png", "arrow_sign_border_up.png", "arrow_sign_border_down.png" }, + inventory_image = "arrow_sign.png", + paramtype = "light", + paramtype2 = "wallmounted", + sunlight_propagates = true, + walkable = false, + groups = {choppy=2,dig_immediate=2,sign_locked=1}, + legacy_wallmounted = true, + + on_place = minetest.rotate_node, + + on_construct = function(pos) + local meta = minetest.get_meta(pos) + -- prepare the lock of the sign + locks:lock_init( pos, + "size[8,4]".. + "field[0.3,0.6;6,0.7;text;Text:;]".. + "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. + "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); + end, + + after_place_node = function(pos, placer) + locks:lock_set_owner( pos, placer, "Shared locked sign" ); + end, - on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - -- prepare the lock of the sign - locks:lock_init( pos, - "size[8,4]".. - "field[0.3,0.6;6,0.7;text;Text:;]".. - "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. - "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); - end, + can_dig = function(pos,player) + return locks:lock_allow_dig( pos, player ); + end, - after_place_node = function(pos, placer) - locks:lock_set_owner( pos, placer, "Shared locked sign" ); - end, + on_receive_fields = function(pos, formname, fields, sender) + -- if the user already has the right to use this and did input text + if( fields.text + and ( not(fields.locks_sent_lock_command) + or fields.locks_sent_lock_command=="") + and locks:lock_allow_use( pos, sender )) then - can_dig = function(pos,player) - return locks:lock_allow_dig( pos, player ); - end, + --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) + local meta = minetest.get_meta(pos) + fields.text = fields.text or ""; + print((sender:get_player_name() or "").." wrote \""..fields.text.. + "\" to sign at "..minetest.pos_to_string(pos)); + meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); + meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); - on_receive_fields = function(pos, formname, fields, sender) + -- a command for the lock? + else + arrow_signs:savetext( pos, formname, fields, sender ); + end - -- if the user already has the right to use this and did input text - if( fields.text - and ( not(fields.locks_sent_lock_command) - or fields.locks_sent_lock_command=="") - and locks:lock_allow_use( pos, sender )) then - - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local meta = minetest.env:get_meta(pos) - fields.text = fields.text or ""; - print((sender:get_player_name() or "").." wrote \""..fields.text.. - "\" to sign at "..minetest.pos_to_string(pos)); - meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); - meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); - - -- a command for the lock? - else - arrow_signs:savetext( pos, formname, fields, sender ); - end - - end, - }); ---left - minetest.register_node("arrow_signs:shared_locked_left", { - description = "Shared locked sign left", - drawtype = "signlike", - tiles = {"arrow_sign_left.png"}, - inventory_image = "arrow_sign_left.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,sign_locked=1}, - legacy_wallmounted = true, - - - on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - -- prepare the lock of the sign - locks:lock_init( pos, - "size[8,4]".. - "field[0.3,0.6;6,0.7;text;Text:;]".. - "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. - "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); - end, - - after_place_node = function(pos, placer) - locks:lock_set_owner( pos, placer, "Shared locked sign" ); - end, - - - can_dig = function(pos,player) - return locks:lock_allow_dig( pos, player ); - end, - - on_receive_fields = function(pos, formname, fields, sender) - - -- if the user already has the right to use this and did input text - if( fields.text - and ( not(fields.locks_sent_lock_command) - or fields.locks_sent_lock_command=="") - and locks:lock_allow_use( pos, sender )) then - - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local meta = minetest.env:get_meta(pos) - fields.text = fields.text or ""; - print((sender:get_player_name() or "").." wrote \""..fields.text.. - "\" to sign at "..minetest.pos_to_string(pos)); - meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); - meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); - - -- a command for the lock? - else - arrow_signs:savetext( pos, formname, fields, sender ); - end - - end, - }); - --up - minetest.register_node("arrow_signs:shared_locked_up", { - description = "Shared locked sign up", - drawtype = "signlike", - tiles = {"arrow_sign_up.png"}, - inventory_image = "arrow_sign_up.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,sign_locked=1}, - legacy_wallmounted = true, - - - on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - -- prepare the lock of the sign - locks:lock_init( pos, - "size[8,4]".. - "field[0.3,0.6;6,0.7;text;Text:;]".. - "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. - "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); - end, - - after_place_node = function(pos, placer) - locks:lock_set_owner( pos, placer, "Shared locked sign" ); - end, - - - can_dig = function(pos,player) - return locks:lock_allow_dig( pos, player ); - end, - - on_receive_fields = function(pos, formname, fields, sender) - - -- if the user already has the right to use this and did input text - if( fields.text - and ( not(fields.locks_sent_lock_command) - or fields.locks_sent_lock_command=="") - and locks:lock_allow_use( pos, sender )) then - - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local meta = minetest.env:get_meta(pos) - fields.text = fields.text or ""; - print((sender:get_player_name() or "").." wrote \""..fields.text.. - "\" to sign at "..minetest.pos_to_string(pos)); - meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); - meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); - - -- a command for the lock? - else - arrow_signs:savetext( pos, formname, fields, sender ); - end - - end, - }); - --down - minetest.register_node("arrow_signs:shared_locked_down", { - description = "Shared locked sign down", - drawtype = "signlike", - tiles = {"arrow_sign_down.png"}, - inventory_image = "arrow_sign_down.png", - paramtype = "light", - paramtype2 = "wallmounted", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "wallmounted", - --wall_top = - --wall_bottom = - --wall_side = - }, - groups = {choppy=2,dig_immediate=2,sign_locked=1}, - legacy_wallmounted = true, - - - on_construct = function(pos) - local meta = minetest.env:get_meta(pos) - -- prepare the lock of the sign - locks:lock_init( pos, - "size[8,4]".. - "field[0.3,0.6;6,0.7;text;Text:;]".. - "field[0.3,3.6;6,0.7;locks_sent_lock_command;Locked sign. Type /help for help:;]".. - "button_exit[6.3,3.2;1.7,0.7;locks_sent_input;Proceed]" ); - end, - - after_place_node = function(pos, placer) - locks:lock_set_owner( pos, placer, "Shared locked sign" ); - end, - - - can_dig = function(pos,player) - return locks:lock_allow_dig( pos, player ); - end, - - on_receive_fields = function(pos, formname, fields, sender) - - -- if the user already has the right to use this and did input text - if( fields.text - and ( not(fields.locks_sent_lock_command) - or fields.locks_sent_lock_command=="") - and locks:lock_allow_use( pos, sender )) then - - --print("Sign at "..minetest.pos_to_string(pos).." got "..dump(fields)) - local meta = minetest.env:get_meta(pos) - fields.text = fields.text or ""; - print((sender:get_player_name() or "").." wrote \""..fields.text.. - "\" to sign at "..minetest.pos_to_string(pos)); - meta:set_string("text", fields.text.." ["..sender:get_player_name().."]"); - meta:set_string("infotext", '"'..fields.text..'"'.." ["..sender:get_player_name().."]"); - - -- a command for the lock? - else - arrow_signs:savetext( pos, formname, fields, sender ); - end - - end, + end, }); minetest.register_craft({ - output = 'arrow_signs:shared_locked_right', - recipe = { - { 'arrow_signs:wall_right', 'locks:lock', '' }, - }, + type = 'shapeless', + output = 'arrow_signs:shared_locked', + recipe = {'arrow_signs:wall', 'locks:lock'}, }) -minetest.register_craft({ - output = 'arrow_signs:shared_locked_left', - recipe = { - { 'arrow_signs:wall_left', 'locks:lock', '' }, - }, +--Redefinition +minetest.register_abm({ + nodenames = {"arrow_signs:shared_locked_right", "'arrow_signs:shared_locked_left", "arrow_signs:shared_locked_up", "arrow_signs:shared_locked_down"}, + interval = 1, + chance = 1, + action = function(pos, node) + local convert_facedir={ + ["arrow_signs:shared_locked_right"]={17,15,8,6}, + ["arrow_signs:shared_locked_left"]={19,13,10,4}, + ["arrow_signs:shared_locked_up"]={16,14,11,5}, + ["arrow_signs:shared_locked_down"]={18,12,9,7} + } + minetest.swap_node(pos, {name="arrow_signs:shared_locked",param2=convert_facedir[node.name][node.param2-1]}) + end, }) - -minetest.register_craft({ - output = 'arrow_signs:shared_locked_up', - recipe = { - { 'arrow_signs:wall_up', 'locks:lock', '' }, - }, -}) - -minetest.register_craft({ - output = 'arrow_signs:shared_locked_down', - recipe = { - { 'arrow_signs:wall_down', 'locks:lock', '' }, - }, -}) - - -minetest.register_craft({ - output = 'arrow_signs:shared_locked_right', - recipe = { - { 'group:', 'locks:lock', '' }, - }, -}) \ No newline at end of file diff --git a/textures/arrow_sign_right.png b/textures/arrow_sign.png similarity index 100% rename from textures/arrow_sign_right.png rename to textures/arrow_sign.png diff --git a/textures/arrow_sign_border_down.png b/textures/arrow_sign_border_down.png new file mode 100644 index 0000000..5b0c083 Binary files /dev/null and b/textures/arrow_sign_border_down.png differ diff --git a/textures/arrow_sign_border_left.png b/textures/arrow_sign_border_left.png new file mode 100644 index 0000000..9a0ded8 Binary files /dev/null and b/textures/arrow_sign_border_left.png differ diff --git a/textures/arrow_sign_border_right.png b/textures/arrow_sign_border_right.png new file mode 100644 index 0000000..fce07bd Binary files /dev/null and b/textures/arrow_sign_border_right.png differ diff --git a/textures/arrow_sign_border_up.png b/textures/arrow_sign_border_up.png new file mode 100644 index 0000000..45eb190 Binary files /dev/null and b/textures/arrow_sign_border_up.png differ diff --git a/textures/arrow_sign_down.png b/textures/arrow_sign_down.png deleted file mode 100644 index 8d42d10..0000000 Binary files a/textures/arrow_sign_down.png and /dev/null differ diff --git a/textures/arrow_sign_left.png b/textures/arrow_sign_left.png deleted file mode 100644 index 92bbf35..0000000 Binary files a/textures/arrow_sign_left.png and /dev/null differ diff --git a/textures/arrow_sign_up.png b/textures/arrow_sign_up.png deleted file mode 100644 index 4285f89..0000000 Binary files a/textures/arrow_sign_up.png and /dev/null differ diff --git a/textures/rightandleft.xcf b/textures/rightandleft.xcf new file mode 100644 index 0000000..5c02a75 Binary files /dev/null and b/textures/rightandleft.xcf differ diff --git a/textures/sign_right.xcf b/textures/sign.xcf similarity index 100% rename from textures/sign_right.xcf rename to textures/sign.xcf diff --git a/textures/sign_down.xcf b/textures/sign_down.xcf deleted file mode 100644 index 5d88134..0000000 Binary files a/textures/sign_down.xcf and /dev/null differ diff --git a/textures/sign_left.xcf b/textures/sign_left.xcf deleted file mode 100644 index 4e1f519..0000000 Binary files a/textures/sign_left.xcf and /dev/null differ diff --git a/textures/sign_up.xcf b/textures/sign_up.xcf deleted file mode 100644 index 85e72c7..0000000 Binary files a/textures/sign_up.xcf and /dev/null differ diff --git a/textures/upanddown.xcf b/textures/upanddown.xcf new file mode 100644 index 0000000..3f3c511 Binary files /dev/null and b/textures/upanddown.xcf differ