From a7e80f4b9870b671762bee1c821bb0e35d7b6e7d Mon Sep 17 00:00:00 2001 From: Pierre-Yves Rollo Date: Sat, 28 Nov 2015 20:44:54 +0100 Subject: Creation of steles mod --- steles/README.md | 22 ++++++++++++++++++ steles/config.lua | 8 +++++++ steles/crafts.lua | 13 +++++++++++ steles/depends.txt | 4 ++++ steles/init.lua | 14 ++++++++++++ steles/nodes.lua | 65 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 126 insertions(+) create mode 100644 steles/README.md create mode 100644 steles/config.lua create mode 100644 steles/crafts.lua create mode 100644 steles/depends.txt create mode 100644 steles/init.lua create mode 100644 steles/nodes.lua (limited to 'steles') diff --git a/steles/README.md b/steles/README.md new file mode 100644 index 0000000..a2d1fcf --- /dev/null +++ b/steles/README.md @@ -0,0 +1,22 @@ +# Steles + +This mod provides stone steles with text display. Text is locked if area is protected. + +**Dependancies**: default, display\_lib, font\_lib, technic? + +(Technic adds marble and granite steles) + +**License**: WTFPL + +## Recipes + + - M - + - B - + M M M + +B = Black Dye, M = Material + +Material (must be all the same) can be : Stone, Desert Stone, Sandstone, Granite or Marble + +Gives 4 steles of corresponding material. Right click on stele to update text. + diff --git a/steles/config.lua b/steles/config.lua new file mode 100644 index 0000000..e7b6a10 --- /dev/null +++ b/steles/config.lua @@ -0,0 +1,8 @@ +steles.materials = { + 'default:stone', + 'default:sandstone', + 'default:desert_stone', + 'technic:marble', + 'technic:granite', +} + diff --git a/steles/crafts.lua b/steles/crafts.lua new file mode 100644 index 0000000..e4c6f95 --- /dev/null +++ b/steles/crafts.lua @@ -0,0 +1,13 @@ +for _, material in ipairs(steles.materials) do + local parts = material:split(":") + + minetest.register_craft({ + output = 'steles:'..parts[2]..'_stele 4', + recipe = { + {'', material, ''}, + {'', 'dye:black', ''}, + {material, material, material}, + } + }) + +end diff --git a/steles/depends.txt b/steles/depends.txt new file mode 100644 index 0000000..cf8c669 --- /dev/null +++ b/steles/depends.txt @@ -0,0 +1,4 @@ +default +display_lib +font_lib +technic? diff --git a/steles/init.lua b/steles/init.lua new file mode 100644 index 0000000..9111273 --- /dev/null +++ b/steles/init.lua @@ -0,0 +1,14 @@ +-- Steles mod by P.Y. Rollo +-- +-- License: WTFPL + +steles = {} +steles.path = minetest.get_modpath("steles") + +dofile(steles.path.."/config.lua") +dofile(steles.path.."/nodes.lua") +dofile(steles.path.."/crafts.lua") + + + + diff --git a/steles/nodes.lua b/steles/nodes.lua new file mode 100644 index 0000000..ce80382 --- /dev/null +++ b/steles/nodes.lua @@ -0,0 +1,65 @@ +function steles.on_receive_fields(pos, formname, fields, player) + if not minetest.is_protected(pos, player:get_player_name()) then + local meta = minetest.get_meta(pos) + if fields and fields.ok then + meta:set_string("display_text", fields.display_text) + meta:set_string("infotext", "\""..fields.display_text.."\"") + display_lib.update_entities(pos) + end + end +end + +display_lib.register_display_entity("steles:text") + +for _, material in ipairs(steles.materials) do + + local ndef = minetest.registered_nodes[material] + local parts = material:split(":") + + minetest.register_node("steles:"..parts[2].."_stele", { + description = ndef.description.." Stele", + sunlight_propagates = true, + paramtype = "light", + paramtype2 = "facedir", + tiles = ndef.tiles, + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + {-5/16, -4/16, -2/16, 5/16, 0.5, 2/16}, + {-7/16, -0.5, -4/16, 7/16, -4/16, 4/16} + } + }, + groups = ndef.groups, + display_entities = { + ["steles:text"] = { + on_display_update = font_lib.on_display_update, + depth = -2/16-0.001, height = 2/16, + size = { x = 14/16, y = 12/16 }, + resolution = { x = 144, y = 64 }, + maxlines = 3, + }, + }, + on_place = display_lib.on_place, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", "size[6,4]".. + "textarea[0.5,0.7;5.5,2;display_text;Displayed text (3 lines max);${display_text}]".. + "button_exit[2,3;2,1;ok;Write]") + display_lib.on_construct(pos) + end, + on_destruct = display_lib.on_destruct, + on_rotate = display_lib.on_rotate, + on_receive_fields = function(pos, formname, fields, player) + if not minetest.is_protected(pos, player:get_player_name()) then + local meta = minetest.get_meta(pos) + if fields and fields.ok then + meta:set_string("display_text", fields.display_text) + meta:set_string("infotext", "\""..fields.display_text.."\"") + display_lib.update_entities(pos) + end + end + end, + }) +end + -- cgit v1.2.3