From 92ecbd898a6befe196905fbf1dab5a8bf9193054 Mon Sep 17 00:00:00 2001 From: whosit Date: Sun, 2 Jul 2023 13:32:17 +0300 Subject: [PATCH] make color of the flag item configurable Only changes the look of the item. Original intention was to use dye to change colors (craft from different colored wool, etc), but probably not worth it. --- init.lua | 39 ++++++++++++++++++++++++---- textures/waypoint_announce_flag.png | Bin 5783 -> 583 bytes 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/init.lua b/init.lua index e035a24..e5e3de3 100644 --- a/init.lua +++ b/init.lua @@ -197,15 +197,28 @@ minetest.register_chatcommand(ANNOUNCE_COMMAND_NAME, { local flag_dialog_context = {} local function show_flag_config_dialog(itemstack, player) local meta = itemstack:get_meta() - local formspec_head = "formspec_version[4]size[8,3]set_focus[close;]" + local formspec_head = "formspec_version[4]size[8,4]set_focus[close;]" local message = meta:get_string("message") or "Flag point" - local field_message = ("field[0.5,0.6;7,0.8;message;Message;%s]"):format(minetest.formspec_escape(message)) + local field_message = ("field[0.5,0.6;7,0.7;message;Message;%s]"):format(minetest.formspec_escape(message)) + local color_str = meta:get_string("color_str") + if color_str == "" then + color_str = meta:get_string("color") + if color_str == "" then + -- probably an old flag, provide default color + color_str = "red" + end + end + -- strip alpha (it should never appear here anyway) + color_str = string.match(color_str, "#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]") or color_str + local field_color = ("field[0.5,1.75;4,0.7;color;Color;%s]"):format( + minetest.formspec_escape(color_str)) minetest.show_formspec(player:get_player_name(), "waypoint_announce:flag_edit", formspec_head .. field_message .. - --field_color .. - "button_exit[0.5,1.7;3,0.8;save;save]" .. - "button_exit[4.5,1.7;3,0.8;close;close]") + field_color .. + --field_time .. -- TODO set time too? (within limits) + "button_exit[0.5,2.7;3,0.8;save;save]" .. + "button_exit[4.5,2.7;3,0.8;close;close]") flag_dialog_context[player:get_player_name()] = itemstack end @@ -214,6 +227,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if formname ~= "waypoint_announce:flag_edit" then return end + -- FIXME has same wielded item swapping problems as compass had if fields.save or (fields.key_enter_field and fields.quit) then local flag_item = flag_dialog_context[player:get_player_name()] if not flag_item then @@ -228,6 +242,21 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) local message = fields.message meta:set_string("message", message) + + if fields.color and #(fields.color) < 20 then + local colorstring = minetest.colorspec_to_colorstring(fields.color) + if colorstring then + -- strip alpha + colorstring = string.match(colorstring, "#[0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F][0-9A-F]") or colorstring + meta:set_string("color", colorstring) + -- preserve original color name for editing + meta:set_string("color_str", fields.color) + end + -- else + -- -- something sus is going on, don't set it + -- meta:set_string("color_str", "") + end + local success = player:set_wielded_item(flag_item) if not success then -- no idea why this can happen diff --git a/textures/waypoint_announce_flag.png b/textures/waypoint_announce_flag.png index f68fc1aa63d9af649918d8f626a66d22d6a56261..e06e146fdcabd4b2cab279630e7d17dafda74d82 100644 GIT binary patch delta 188 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