diff --git a/moremesecons_sayer/depends.txt b/moremesecons_sayer/depends.txt new file mode 100644 index 0000000..2768bc1 --- /dev/null +++ b/moremesecons_sayer/depends.txt @@ -0,0 +1,2 @@ +mesecons +default diff --git a/moremesecons_sayer/init.lua b/moremesecons_sayer/init.lua new file mode 100644 index 0000000..61990ab --- /dev/null +++ b/moremesecons_sayer/init.lua @@ -0,0 +1,40 @@ +local MAX_DISTANCE = 8 + +local sayer_activate = function(pos) + local players = minetest.get_connected_players() + local text = minetest.get_meta(pos):get_string("text") + for index, player in pairs(players) do + local distance = vector.distance(pos, player:getpos()) + if distance <= MAX_DISTANCE then + minetest.chat_send_player(player:get_player_name(), "Sayer at pos " + ..tostring(pos.x).."," + ..tostring(pos.y).."," + ..tostring(pos.z) + .." says : " + ..text) + end + end +end + +minetest.register_node("moremesecons_sayer:sayer", { + description = "sayer", + tiles = {"mesecons_noteblock.png", "default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png", "default_wood.png"}, + drawtype = "nodebox", + paramtype = "light", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + groups = {dig_immediate = 2}, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "field[text;text;${text}]") + end, + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + meta:set_string("text", fields.text) + end, + mesecons = {effector = { + action_on = sayer_activate + }} +})