aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklp09 <89982526+Niklp09@users.noreply.github.com>2023-07-27 17:31:41 +0200
committerNiklp09 <89982526+Niklp09@users.noreply.github.com>2023-07-27 17:31:41 +0200
commitbd59f7f78b48cde3d73ee8d51dc2af66c50078dd (patch)
treef14e89d1b47e9970a981d5624847ab4939e89f9b
parent1f8e99c9c52afb05d7523b25e2e4fff6f236ed5f (diff)
downloaddisplay_modpack_no_craft-bd59f7f78b48cde3d73ee8d51dc2af66c50078dd.tar.gz
display_modpack_no_craft-bd59f7f78b48cde3d73ee8d51dc2af66c50078dd.zip
Escape formspec content of boards and steles
-rw-r--r--boards/init.lua6
-rw-r--r--steles/nodes.lua27
2 files changed, 23 insertions, 10 deletions
diff --git a/boards/init.lua b/boards/init.lua
index e27e8da..17d4a31 100644
--- a/boards/init.lua
+++ b/boards/init.lua
@@ -31,9 +31,10 @@ dofile(boards.path.."/font_tinycurs.lua")
local function set_formspec(pos)
local meta = minetest.get_meta(pos)
+ local display_text = minetest.formspec_escape(meta:get_string("display_text"))
meta:set_string("formspec",
"size[6,4]"..default.gui_bg..default.gui_bg_img..default.gui_slots..
- "textarea[0.5,0.7;5.5,3;display_text;"..FS("Text")..";${display_text}]"..
+ "textarea[0.5,0.7;5.5,3;display_text;"..FS("Text")..";" .. display_text .. "]"..
"button_exit[3,3.5;2,1;ok;"..FS("Write").."]"..
"button_exit[1,3.5;2,1;wipe;"..FS("Wipe").."]")
end
@@ -83,6 +84,9 @@ local models = {
set_formspec(pos)
display_api.update_entities(pos)
end,
+ on_rightclick = function(pos)
+ set_formspec(pos)
+ end,
on_receive_fields = on_receive_fields,
},
},
diff --git a/steles/nodes.lua b/steles/nodes.lua
index a2aaa7d..04f83f2 100644
--- a/steles/nodes.lua
+++ b/steles/nodes.lua
@@ -32,6 +32,20 @@ for i, material in ipairs(steles.materials) do
local parts = material:split(":")
groups.display_api = 1
+ local function set_formspec(pos)
+ local meta = minetest.get_meta(pos)
+ local display_text = minetest.formspec_escape(meta:get_string("display_text"))
+ meta:set_string("formspec", string.format([=[
+ size[6,4]%s%s%s
+ textarea[0.5,0.7;5.5,2;display_text;%s;%s]
+ button[1,3;2,1;font;%s]
+ button_exit[3,3;2,1;ok;%s]]=],
+ default.gui_bg, default.gui_bg_img, default.gui_slots,
+ FS("Displayed text (3 lines max)"),
+ display_text,
+ FS("Font"), FS("Write")))
+ end
+
minetest.register_node("steles:"..parts[2].."_stele", {
description = steles.materials_desc[i],
sunlight_propagates = true,
@@ -62,17 +76,12 @@ for i, material in ipairs(steles.materials) do
return display_api.on_place(itemstack, placer, pointed_thing)
end,
on_construct = function(pos)
- local meta = minetest.get_meta(pos)
- meta:set_string("formspec", string.format([=[
- size[6,4]%s%s%s
- textarea[0.5,0.7;5.5,2;display_text;%s;${display_text}]
- button[1,3;2,1;font;%s]
- button_exit[3,3;2,1;ok;%s]]=],
- default.gui_bg, default.gui_bg_img, default.gui_slots,
- FS("Displayed text (3 lines max)"),
- FS("Font"), FS("Write")))
+ set_formspec(pos)
display_api.on_construct(pos)
end,
+ on_rightclick = function(pos)
+ set_formspec(pos)
+ end,
on_destruct = display_api.on_destruct,
on_rotate = display_api.on_rotate,
on_receive_fields = function(pos, formname, fields, player)