commit 3f3a1077e73103b51755d932f4cb1972f891dd79 Author: Jo5629/IMDman56 <127150661+Jo5629@users.noreply.github.com> Date: Fri Jun 23 17:34:22 2023 -0400 Adding first files diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..0982ee1 --- /dev/null +++ b/init.lua @@ -0,0 +1,97 @@ +local flag_pos + +minetest.register_tool("flag_chooser:chooser", { + description = "Flag Chooser\nChoose a specific flag with this tool", + inventory_image = "chooser.png", + on_use = function(itemstack, user, pointed_thing) + if pointed_thing.type ~= "node" then return end + flag_pos = pointed_thing.under + + local node = minetest.get_node(flag_pos) + if node.name ~= "pride_flags:upper_mast" then + return + end + + local formspec = { + "formspec_version[4]", + "size[11,9]", + "dropdown[0.375,2.3;5,2;Dropdown;"..table.concat(pride_flags.get_flags(), ",") ..";1]", + "field[0.375,0.5;3,0.8;flag_name;Choose Flag;".. pride_flags.get_flag_at(flag_pos) .. "]", + "button[4.125,0.5;2,0.8;find;Find]", + "button[6.25,0.5;2,0.8;choose;Choose]", + "button_exit[8.375,0.5;2,0.8;exit;Exit]", + } + local formspec = table.concat(formspec, "") + + minetest.show_formspec(user:get_player_name(), "flag_chooser:chooser", formspec) + end, +}) + +local function table_contains(tbl, x) --> https://snippets.bentasker.co.uk/page-2106050929-Check-if-value-exists-in-table-LUA.html + local found = false + for _, v in pairs(tbl) do + if v == x then + found = true + end + end + return found +end + +minetest.register_on_player_receive_fields(function(player, formname, fields) + local name = player:get_player_name() + if formname ~= "flag_chooser:chooser" then + return + end + + if fields.find or fields.key_enter_field == "flag_name" then + local image = fields.Dropdown + if fields.flag_name ~= nil then + image = fields.flag_name + else + image = fields.Dropdown + end + + if not table_contains(pride_flags.get_flags(), fields.flag_name) then + image = fields.Dropdown + end + + local formspec = { + "formspec_version[4]", + "size[11,9]", + "dropdown[0.375,2.3;5,2;Dropdown;"..table.concat(pride_flags.get_flags(), ",") ..";1]", + "field[0.375,0.5;3,0.8;flag_name;Choose Flag;" .. image .. "]", + "button[4.125,0.5;2,0.8;find;Find]", + "button[6.25,0.5;2,0.8;choose;Choose]", + "button_exit[8.375,0.5;2,0.8;exit;Exit]", + "image[0.375,5;6,3;".. "prideflag_" .. image .. ".png" ..";]", + } + local formspec = table.concat(formspec, "") + minetest.show_formspec(name, "flag_chooser:chooser", formspec) + end + + if fields.choose then + if minetest.is_protected(flag_pos, name) and not + minetest.check_player_privs(name, "protection_bypass") then + minetest.record_protection_violation(flag_pos, name) + return + end + minetest.close_formspec(name, "flag_chooser:chooser") + local flag_name = fields.flag_name + if flag_name ~= nil then + pride_flags.set_flag_at(flag_pos, flag_name) + end + end +end) + +local ingot_steel +if minetest.get_modpath("default") then + ingot_steel = "default:steel_ingot" + minetest.register_craft({ + output = "flag_chooser:chooser", + recipe = { + {"", ingot_steel, ""}, + {ingot_steel, "pride_flags:upper_mast", ingot_steel}, + {"", ingot_steel, ""}, + } + }) +end \ No newline at end of file diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..bd136de --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name = flag_chooser +depends = pride_flags +optional_depends = default \ No newline at end of file diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000..555887f Binary files /dev/null and b/screenshot.png differ diff --git a/textures/chooser.png b/textures/chooser.png new file mode 100644 index 0000000..ac2c8f8 Binary files /dev/null and b/textures/chooser.png differ