diff --git a/minetest.conf b/minetest.conf index b2ea0fca..9e9273c3 100644 --- a/minetest.conf +++ b/minetest.conf @@ -4,16 +4,3 @@ remove_items = -1 disable_fire = true enable_mesh_cache = false moreblocks.stairsplus_in_creative_inventory = false - -dreambuilder_theme_form_bgcolor = #F0F0F0FF -dreambuilder_theme_btn_color = #B0B0B0FF -dreambuilder_theme_editor_text_color = #000000FF -dreambuilder_theme_editor_bg_color = #F0F0F0FF -dreambuilder_theme_listcolor_slot_bg_normal = #FFFFFF30 -dreambuilder_theme_listcolor_slot_bg_hover = #E0E0E0 -dreambuilder_theme_listcolor_slot_border = #606060 -dreambuilder_theme_tooltip_bgcolor = #A0A0A0 -dreambuilder_theme_tooltip_fontcolor = #FFF -dreambuilder_theme_window_darken = false -dreambuilder_theme_editor_border = false -dreambuilder_theme_image_button_borders = false diff --git a/mods/castle_storage/crate.lua b/mods/castle_storage/crate.lua index a374228c..238150d9 100644 --- a/mods/castle_storage/crate.lua +++ b/mods/castle_storage/crate.lua @@ -14,9 +14,10 @@ minetest.register_node("castle_storage:crate", { local meta = minetest.get_meta(pos) meta:set_string("formspec", "size[8,9]".. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, -0.05, 8, 4, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. "list[current_name;main;0,0;8,5;]".. "list[current_player;main;0,5;8,4;]".. "listring[]") diff --git a/mods/castle_storage/ironbound_chest.lua b/mods/castle_storage/ironbound_chest.lua index d6afd555..88b563f2 100644 --- a/mods/castle_storage/ironbound_chest.lua +++ b/mods/castle_storage/ironbound_chest.lua @@ -6,9 +6,10 @@ local get_ironbound_chest_formspec = function(pos) local spos = pos.x .. "," .. pos.y .. "," ..pos.z local formspec = "size[8,9]".. - default.gui_bg .. - default.gui_bg_img .. - default.gui_slots .. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, -0.05, 8, 4, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. "list[nodemeta:".. spos .. ";main;,0;8,4;]".. "list[current_player;main;,5;8,4;]".. "listring[]" diff --git a/mods/caverealms_lite/nodes.lua b/mods/caverealms_lite/nodes.lua index 1a82de33..9198a946 100644 --- a/mods/caverealms_lite/nodes.lua +++ b/mods/caverealms_lite/nodes.lua @@ -520,9 +520,3 @@ minetest.register_alias("caverealms:glow_gem_2", "caverealms:glow_gem") minetest.register_alias("caverealms:glow_gem_3", "caverealms:glow_gem") minetest.register_alias("caverealms:glow_gem_4", "caverealms:glow_gem") minetest.register_alias("caverealms:glow_gem_5", "caverealms:glow_gem") - -minetest.register_alias("caverealms:obsidian", "default:obsidian") -minetest.register_alias("caverealms:obsidian_1", "default:obsidian") -minetest.register_alias("caverealms:obsidian_2", "default:obsidian") -minetest.register_alias("caverealms:obsidian_3", "default:obsidian") -minetest.register_alias("caverealms:obsidian_4", "default:obsidian") diff --git a/mods/default/init.lua b/mods/default/init.lua index 3bd0ac49..2a9de7a4 100644 --- a/mods/default/init.lua +++ b/mods/default/init.lua @@ -16,25 +16,25 @@ default.get_translator = S minetest.register_on_joinplayer(function(player) -- Set formspec prepend local formspec = - "listcolors["..dreambuilder_theme.listcolor_slot_bg_normal.. - ";"..dreambuilder_theme.listcolor_slot_bg_hover.. - ";"..dreambuilder_theme.listcolor_slot_border.. - ";"..dreambuilder_theme.tooltip_bgcolor.. - ";"..dreambuilder_theme.tooltip_fontcolor.."]".. - "style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]".. - "style_type[button_exit;bgcolor="..dreambuilder_theme.btn_color.."]".. - "style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]".. - "style_type[image_button_exit;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]".. - "style_type[item_image_button;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]" + "listcolors["..dreambuilder_theme.listcolor_slot_bg_normal.. + ";"..dreambuilder_theme.listcolor_slot_bg_hover.. + ";"..dreambuilder_theme.listcolor_slot_border.. + ";"..dreambuilder_theme.tooltip_bgcolor.. + ";"..dreambuilder_theme.tooltip_fontcolor.."]".. + "style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]".. + "style_type[button_exit;bgcolor="..dreambuilder_theme.btn_color.."]".. + "style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.. + ";border="..dreambuilder_theme.image_button_borders.."]".. + "style_type[image_button_exit;bgcolor="..dreambuilder_theme.btn_color.. + ";border="..dreambuilder_theme.image_button_borders.."]".. + "style_type[item_image_button;bgcolor="..dreambuilder_theme.btn_color.. + ";border="..dreambuilder_theme.image_button_borders.."]" local name = player:get_player_name() local info = minetest.get_player_information(name) if info.formspec_version > 1 then - formspec = formspec .. "background9[5,5;1,1;gui_formbg.png;true;10]" + formspec = formspec .. "background9[5,5;1,1;"..dreambuilder_theme.name.."_gui_formbg.png;true;10]" else - formspec = formspec .. "background[5,5;1,1;gui_formbg.png;true]" + formspec = formspec .. "background[5,5;1,1;"..dreambuilder_theme.name.."_gui_formbg.png;true]" end player:set_formspec_prepend(formspec) diff --git a/mods/default/mod.conf b/mods/default/mod.conf index 79cf7dcd..0c8c73a9 100644 --- a/mods/default/mod.conf +++ b/mods/default/mod.conf @@ -1,4 +1,4 @@ name = default description = Minetest Game mod: default optional_depends = player_api -depends = dreambuilder_gui_theming +depends = dreambuilder_theme_settings diff --git a/mods/default/textures/gui_formbg.png b/mods/default/textures/gui_formbg.png new file mode 100644 index 00000000..e259fec2 Binary files /dev/null and b/mods/default/textures/gui_formbg.png differ diff --git a/mods/default/textures/gui_hotbar_selected.png b/mods/default/textures/gui_hotbar_selected.png new file mode 100644 index 00000000..7203e9a7 Binary files /dev/null and b/mods/default/textures/gui_hotbar_selected.png differ diff --git a/mods/dreambuilder_extras/customize-dreambuilder-game.sh b/mods/dreambuilder_extras/customize-dreambuilder-game.sh index ecacf7b9..13d1751f 100755 --- a/mods/dreambuilder_extras/customize-dreambuilder-game.sh +++ b/mods/dreambuilder_extras/customize-dreambuilder-game.sh @@ -81,7 +81,9 @@ echo -e "\nBring all mods up-to-date from "$upstream_mods_path cd $upstream_mods_path # No trailing slashes on these items' paths! -LINK_MODS_LIST="my_mods/biome_lib \ + +LINK_MODS_LIST=" +my_mods/biome_lib \ my_mods/coloredwood \ my_mods/currency \ my_mods/gloopblocks \ @@ -149,12 +151,14 @@ my_mods/pipeworks \ RBAs_mods/unified_inventory \ Zeg9s_mods/ufos/ufos" -LINK_MODPACKS_LIST="$(ls -d my_mods/home_workshop_modpack/*/) \ +LINK_MODPACKS_LIST=" +$(ls -d my_mods/home_workshop_modpack/*/) \ $(ls -d my_mods/plantlife_modpack/*/) \ $(ls -d cheapies_mods/roads_modpack/*/) \ $(ls -d cool_trees_modpack/*/)" -COPY_MODPACKS_LIST="$(ls -d my_mods/homedecor_modpack/*/) \ +COPY_MODPACKS_LIST=" +$(ls -d my_mods/homedecor_modpack/*/) \ $(ls -d RBAs_mods/technic_modpack/*/) \ $(ls -d Philipbenrs_mods/castle-modpack/*/) \ $(ls -d worldedit_modpack/*/) \ @@ -164,14 +168,14 @@ for i in $LINK_MODS_LIST; do ln -s $upstream_mods_path"/"$i $workdir/mods done -for i in $(echo $LINK_MODPACKS_LIST |sed "s:/ : :g; s:/$::"); do - ln -s $upstream_mods_path"/"$i $workdir/mods -done - for i in $COPY_MODS_LIST; do rsync -a $upstream_mods_path"/"$i $workdir/mods --exclude .git* done +for i in $(echo $LINK_MODPACKS_LIST |sed "s:/ : :g; s:/$::"); do + ln -s $upstream_mods_path"/"$i $workdir/mods +done + for i in $(echo $COPY_MODPACKS_LIST |sed "s:/ : :g; s:/$::"); do rsync -a $upstream_mods_path"/"$i $workdir/mods --exclude .git* done @@ -208,41 +212,42 @@ rm -rf $workdir/mods/worldedit_brush # Create the standard in-game lightly-shaded theme, expand on it, make it user-configurable -cat > /tmp/listcolors << 'EOF' - "listcolors["..dreambuilder_theme.listcolor_slot_bg_normal.. - ";"..dreambuilder_theme.listcolor_slot_bg_hover.. - ";"..dreambuilder_theme.listcolor_slot_border.. - ";"..dreambuilder_theme.tooltip_bgcolor.. - ";"..dreambuilder_theme.tooltip_fontcolor.."]".. -EOF - -cat > /tmp/herefileA << 'EOF' - "style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]".. - "style_type[button_exit;bgcolor="..dreambuilder_theme.btn_color.."]".. - "style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]".. - "style_type[image_button_exit;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]".. - "style_type[item_image_button;bgcolor="..dreambuilder_theme.btn_color.. - ";border="..dreambuilder_theme.image_button_borders.."]" -EOF - -echo ' "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]"..' > /tmp/LISTCOLORS_HIDE_SLOTS +LISTCOLORS_HIDE_SLOTS='"listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]"..' mv $workdir"/mods/dreambuilder_extras/minetest.conf" $workdir +########## +sed -i 's/"gui_hotbar_selected.png"/dreambuilder_theme.name.."_gui_hotbar_selected.png"/' \ + $workdir"/mods/dreambuilder_hotbar/init.lua" + +sed -i 's/"gui_hb_bg_"/dreambuilder_theme.name.."_gui_hb_bg_"/' \ + $workdir"/mods/dreambuilder_hotbar/init.lua" + +########## + sed -i "s/bgcolor\[.*\]//" \ $workdir"/mods/beds/init.lua" +########## + sed -i '/local formspec = \[\[/ , /\]\]/ {d}' \ $workdir"/mods/default/init.lua" sed -i '/Set formspec prepend/ { a \\t\tlocal formspec = - r /tmp/listcolors - r /tmp/herefileA + a \\t\t"listcolors["..dreambuilder_theme.listcolor_slot_bg_normal.. + a \\t\t\t";"..dreambuilder_theme.listcolor_slot_bg_hover.. + a \\t\t\t";"..dreambuilder_theme.listcolor_slot_border.. + a \\t\t\t";"..dreambuilder_theme.tooltip_bgcolor.. + a \\t\t\t";"..dreambuilder_theme.tooltip_fontcolor.."]".. + a \\t\t"style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]".. + a \\t\t"style_type[button_exit;bgcolor="..dreambuilder_theme.btn_color.."]".. + a \\t\t"style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.. + a \\t\t\t";border="..dreambuilder_theme.image_button_borders.."]".. + a \\t\t"style_type[image_button_exit;bgcolor="..dreambuilder_theme.btn_color.. + a \\t\t\t";border="..dreambuilder_theme.image_button_borders.."]".. + a \\t\t"style_type[item_image_button;bgcolor="..dreambuilder_theme.btn_color.. + a \\t\t\t";border="..dreambuilder_theme.image_button_borders.."]" }' $workdir"/mods/default/init.lua" sed -i '/default.gui_survival_form/ { @@ -250,39 +255,74 @@ sed -i '/default.gui_survival_form/ { a \\t\t\tdefault.gui_bg.. }' $workdir"/mods/default/init.lua" +sed -i 's/gui_formbg.png/"..dreambuilder_theme.name.."_gui_formbg.png/' \ + $workdir"/mods/default/init.lua" + sed -i '/tableoptions/d' $workdir"/mods/default/craftitems.lua" -echo "depends = dreambuilder_gui_theming" >> $workdir"/mods/default/mod.conf" +echo "depends = dreambuilder_theme_settings" >> $workdir"/mods/default/mod.conf" + +########## sed -i 's/"style_type\[.*\]"/"style_type[label,textarea;font=mono]" \ \t\t.."style_type[textarea;textcolor="..dreambuilder_theme.editor_text_color..";border="..dreambuilder_theme.editor_border.."]"/' \ - $workdir"/mods/mesecons_luacontroller/init.lua" + $workdir"/mods/mesecons_luacontroller/init.lua" -sed -i "0,/depends =/s//depends = dreambuilder_gui_theming, /" $workdir"/mods/mesecons/mod.conf" +sed -i 's/jeija_luac_background.png/"..dreambuilder_theme.name.."_jeija_luac_background.png/' \ + $workdir"/mods/mesecons_luacontroller/init.lua" -sed -i '/size\[8,9\]/ { - a \\t\t"image[-0.12,4.73;10.03,4.95;default_standard_inventory_bg.png]".. - a \\t\t"image[-0.12,0.15;10.03,4.79;default_chest_upper_slots_bg.png]".. - r /tmp/LISTCOLORS_HIDE_SLOTS - }' $workdir"/mods/pipeworks/compat-chests.lua" +sed -i 's/jeija_luac_runbutton.png/"..dreambuilder_theme.name.."_jeija_luac_runbutton.png/' \ + $workdir"/mods/mesecons_luacontroller/init.lua" -sed -i '/size\[8,8.5\]/ { - a \\t\t"image[-0.1,4.15;10.03,4.95;default_standard_inventory_bg.png]".. - a \\t\t"image[2.65,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - a \\t\t"image[4.64,0.83;2.52,2.44;default_furnace_upper_right_slots_bg_2x2.png]".. - r /tmp/LISTCOLORS_HIDE_SLOTS - }' $workdir"/mods/pipeworks/compat-furnaces.lua" +sed -i 's/jeija_close_window.png/"..dreambuilder_theme.name.."_jeija_close_window.png/' \ + $workdir"/mods/mesecons_luacontroller/init.lua" -sed -i "0, /depends = /s//depends = dreambuilder_gui_theming, /" $workdir"/mods/pipeworks/mod.conf" +sed -i "0,/depends =/s//depends = dreambuilder_theme_settings, /" $workdir"/mods/mesecons/mod.conf" +########## -sed -i '/size\[8,7;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,2.75;10.03,4.95;default_standard_inventory_bg.png]".. - a \\t\t"image[-0.1,0.23;10.03,2.37;vessels_upper_slots_bg.png]".. - }' $workdir"/mods/vessels/init.lua" +sed -i "/size\[8,9\]/ { + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 0.26, 8, 4, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.82, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 6.03, 8, 3, false).. + a \\\t\t$LISTCOLORS_HIDE_SLOTS + }" $workdir"/mods/pipeworks/compat-chests.lua" -sed -i "0, /depends = /s//depends = dreambuilder_gui_theming, /" $workdir"/mods/vessels/mod.conf" +sed -i 's/default.get_hotbar_bg(0,4.85)/""/' \ + $workdir"/mods/pipeworks/compat-chests.lua" + +sed -i "/size\[8,8.5\]/ { + a \\\t\tdreambuilder_theme.single_slot_v1(2.75, 0.45, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(2.75, 2.45, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(4.75, 0.92, 2, 2, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.22, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.45, 8, 3, false).. + a \\\t\t$LISTCOLORS_HIDE_SLOTS + }" $workdir"/mods/pipeworks/compat-furnaces.lua" + +sed -i '/default.get_hotbar_bg(0, 4.25) ../ {d}' \ + $workdir"/mods/pipeworks/compat-furnaces.lua" + +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/pipeworks/mod.conf" + +########## + +sed -i "/size\[8,7;\]/ { + a \\\t$LISTCOLORS_HIDE_SLOTS + a \\\tdreambuilder_theme.make_inv_img_grid_v1(0, 0.25, 8, 2, false).. + a \\\tdreambuilder_theme.make_inv_img_grid_v1(0, 2.8, 8, 1, true).. + a \\\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.05, 8, 3, false).. + }" $workdir"/mods/vessels/init.lua" + +sed -i 's/vessels_shelf_slot.png/"..dreambuilder_theme.name.."_vessels_shelf_slot.png/' \ + $workdir"/mods/vessels/init.lua" + +sed -i 's/default.get_hotbar_bg(0, 2.85)/""/' \ + $workdir"/mods/vessels/init.lua" + +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/vessels/mod.conf" + +########## sed -i 's/"field\[.*\]"/ \ \t\t\t"formspec_version[4]".. \ @@ -292,19 +332,14 @@ sed -i 's/"field\[.*\]"/ \ \t\t/' \ $workdir"/mods/technic/machines/switching_station.lua" -# the inv and slots images below are exactly 192x192 and 512x256 pixels -# and meant to cover inv areas of 3x3 and 8x4 inv slots -# but with an 8x9 formspec size, it takes a declared size of [10.03, 4.65] -# to make the 8x4 grid image fit right -# [10.03, 4.65] / [8, 4] = [1.254, 1.163] -# -# so a 3x3 inv grid should be about 3.762x3.488 real size - -sed -i '/size\[8,9\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[2.9,0.93;3.762,3.488;technic_battery_box_upper_slots.png]".. - }' $workdir"/mods/technic/machines/register/battery_box.lua" +sed -i "/size\[8,9\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.single_slot_v1(3, 0.95, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(5, 0.95, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(3.5, 2.95, 2, 1, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + }" $workdir"/mods/technic/machines/register/battery_box.lua" sed -i 's/"field\[.*")/ \ @@ -315,141 +350,211 @@ sed -i 's/"field\[.*")/ \ \t\t\t\t\t)/' \ $workdir"/mods/technic/machines/register/battery_box.lua" -sed -i '/size\[8,9;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[2.9,0.93;5.016,2.326;technic_base_machine_upper_bg.png]".. - }' $workdir"/mods/technic/machines/register/machine_base.lua" +sed -i "/size\[8,9;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.single_slot_v1(3, 0.95, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + }" $workdir"/mods/technic/machines/register/machine_base.lua" -sed -i '/formspec = formspec/ { - a \\t\t\t"image[0.91,2.93;2.508,1.163;technic_base_machine_upgrade_slots_bg.png]".. - }' $workdir"/mods/technic/machines/register/machine_base.lua" +sed -i "/formspec = formspec/ { + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(1, 2.95, 2, 1, false).. + }" $workdir"/mods/technic/machines/register/machine_base.lua" -sed -i '/size\[8,9;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[2.9,0.93;1.254,1.163;default_single_slot.png]".. - }' $workdir"/mods/technic/machines/register/generator.lua" +sed -i "/size\[8,9;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(3, 0.95, false).. + }" $workdir"/mods/technic/machines/register/generator.lua" # this alloy furnace change will match in two places, on purpose. -sed -i '/size\[8,9\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[1.9,0.93;6.27,3.49;technic_coal_alloy_furnace_upper_slots.png]".. - }' $workdir"/mods/technic/machines/other/coal_alloy_furnace.lua" +sed -i "/size\[8,9\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(2, 0.95, 2, 1, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(2, 2.95, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + }" $workdir"/mods/technic/machines/other/coal_alloy_furnace.lua" -sed -i '/size\[8,9;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[-0.1,1.92;10.03,2.375;technic_injector_upper_slots.png]".. - }' $workdir"/mods/technic/machines/other/injector.lua" +sed -i "/size\[8,9;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 1.95, 8, 2, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + }" $workdir"/mods/technic/machines/other/injector.lua" -sed -i '/size\[8,9;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[2.9,0.93;1.254,1.163;default_single_slot.png]".. - a \\t\t"image[0.91,2.93;2.508,1.163;technic_base_machine_upgrade_slots_bg.png]".. - }' $workdir"/mods/technic/machines/MV/tool_workshop.lua" +sed -i "/size\[8,9;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\tdreambuilder_theme.make_inv_img_grid_v1(1, 2.95, 2, 1, false).. + a \\\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + a \\\tdreambuilder_theme.single_slot_v1(3, 0.95, false).. + }" $workdir"/mods/technic/machines/MV/tool_workshop.lua" -sed -i '/size\[8,9\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[1.9,0.93;3.76,2.325;technic_reactor_upper_slots.png]".. - }' $workdir"/mods/technic/machines/HV/nuclear_reactor.lua" +sed -i "/size\[8,9\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(2, 0.95, 3, 2, false).. + }" $workdir"/mods/technic/machines/HV/nuclear_reactor.lua" -sed -i '/size\[8,9;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t\t\t"image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - }' $workdir"/mods/technic/machines/other/constructor.lua" +sed -i "/size\[8,9;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + }" $workdir"/mods/technic/machines/other/constructor.lua" -sed -i '/list\[current_name/ { - i \\t\t\t\t\t.."image[5.89,"..(i*0.998-1.07)..";1.254,1.163;default_single_slot.png]" - }' $workdir"/mods/technic/machines/other/constructor.lua" +sed -i "/list\[current_name/ { + i \\\t\t\t\t\t..dreambuilder_theme.single_slot_v1(6, i-1.05, false) + }" $workdir"/mods/technic/machines/other/constructor.lua" -sed -i '/size\[9,11;\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,6.92;10.03,4.65;technic_main_inventory.png]".. - a \\t\t"image[-0.1,5.42;11.28,1.163;technic_cnc_upper_slots.png]".. - }' $workdir"/mods/technic_cnc/cnc.lua" +sed -i "/size\[9,11;\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.single_slot_v1(0.5, 5.45, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(5, 5.45, 4, 1, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 6.95, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 7.95, 8, 3, false).. + }" $workdir"/mods/technic_cnc/cnc.lua" -sed -i "0, /depends = /s//depends = dreambuilder_gui_theming, /" $workdir"/mods/technic/mod.conf" +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/technic/mod.conf" + +########## + +sed -i "/\"label\[0,0;\"/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS +}" $workdir"/mods/technic_chests/register.lua" + +sed -i '/"background\["..data.hileft/ {d}' \ + $workdir"/mods/technic_chests/register.lua" + +sed -i '/"background\["..data.loleft/ { + a \\t\t\tdreambuilder_theme.make_inv_img_grid_v1(data.hileft, 0.95, data.width, data.height, false).. + a \\t\t\tdreambuilder_theme.make_inv_img_grid_v1(data.loleft, data.lotop-0.05, 8, 1, true).. + a \\t\t\tdreambuilder_theme.make_inv_img_grid_v1(data.loleft, data.lotop+0.95, 8, 3, false).. + d + }' $workdir"/mods/technic_chests/register.lua" + +sed -i '/"background\[-0.19,-0.25;"/ { + a \\t\t\t"background[0,0;1,1;"..dreambuilder_theme.name.."_technic_chest_form_bg.png;true]".. + d + }' $workdir"/mods/technic_chests/register.lua" + +#sed -i 's/technic_chest_form_bg.png/"..dreambuilder_theme.name.."_technic_chest_form_bg.png;true/' \ +# $workdir"/mods/technic_chests/register.lua" + +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/technic_chests/mod.conf" + +########## + +sed -i "/image\[2.75,1.5;1,1;/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.single_slot_v1(2.75, 0.45, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(2.75, 2.45, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(4.75, 0.92, w, h, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.22, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.45, 8, 3, false).. + }" $workdir"/mods/homedecor_common/furnaces.lua" + +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/homedecor_common/mod.conf" + +########## + +sed -i "/size\[8,10\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 0.95, 8, 4, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.82, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 7.03, 8, 3, false).. + }" $workdir"/mods/locks/shared_locked_chest.lua" + +sed -i 's/default.get_hotbar_bg(0,5.85)/""/' \ + $workdir"/mods/locks/shared_locked_chest.lua" + +# This one will match in two places, deliberately. +sed -i "/size\[8,9\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.single_slot_v1(2, 0.45, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(2, 2.45, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. + }" $workdir"/mods/locks/shared_locked_furnace.lua" + +echo "dreambuilder_theme_settings" >> $workdir"/mods/locks/depends.txt" + +########## + +sed -i '/default.gui_bgimg/ {d}' $workdir"/mods/castle_storage/ironbound_chest.lua" +sed -i '/default.gui_bg/ {d}' $workdir"/mods/castle_storage/ironbound_chest.lua" + +sed -i "/default.gui_slots/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, -0.05, 8, 4, false).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. + d +}" $workdir"/mods/castle_storage/ironbound_chest.lua" + +sed -i '/default.gui_bgimg/ {d}' $workdir"/mods/castle_storage/crate.lua" +sed -i '/default.gui_bg/ {d}' $workdir"/mods/castle_storage/crate.lua" + +sed -i "/default.gui_slots/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\t\t\tdreambuilder_theme.make_inv_img_grid_v1(0, -0.05, 8, 4, false).. + a \\\t\t\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + a \\\t\t\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. + d +}" $workdir"/mods/castle_storage/crate.lua" + +########## + +sed -i "/size\[8,5.5\]/ { + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 1.42, 8, 1, true).. + a \\\t\tdreambuilder_theme.make_inv_img_grid_v1(0, 2.58, 8, 3, false).. + a \\\t\tdreambuilder_theme.single_slot_v1(3.4, 0, false).. + }" $workdir"/mods/ufos/furnace.lua" + +echo "dreambuilder_theme_settings" >> $workdir"/mods/ufos/mod.conf" + +########## sed -i 's/"listcolors\[#00000000;#00000000\]"/""/' $workdir"/mods/unified_inventory/internal.lua" sed -i 's/"listcolors\[#00000000;#00000000\]"/""/' $workdir"/mods/unified_inventory/bags.lua" sed -i 's/"listcolors\[#00000000;#00000000\]"/""/' $workdir"/mods/unified_inventory/register.lua" -sed -i '/local n = 4/ { - i \\tformspec[4]="style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.."]" - i \\tformspec[5]= - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t\t"" - a \\tlocal n = 6 - d -}' $workdir"/mods/unified_inventory/internal.lua" +sed -i "/formspec\[n\] = fsdata.formspec/ { + a \\\tformspec[n+1]=\"style_type[image_button;bgcolor=\"..dreambuilder_theme.btn_color..\"]\" + a \\\tformspec[n+2]= + a \\\t\t$LISTCOLORS_HIDE_SLOTS + a \\\t\t\t\"\" + a \\\tn = n + 2 +}" $workdir"/mods/unified_inventory/internal.lua" -sed -i "s/ui_single_slot.png/default_single_slot.png/" $workdir"/mods/unified_inventory/internal.lua" -sed -i "s/ui_single_slot.png/default_single_slot.png/" $workdir"/mods/unified_inventory/register.lua" - -sed -i '/1.175;ui_bags_header.png/ { +sed -i '/ui.single_slot(8.425, 1.5)/ { a \\t\t\t"style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]", }' $workdir"/mods/unified_inventory/bags.lua" -sed -i "0, /depends = /s//depends = dreambuilder_gui_theming, /" $workdir"/mods/unified_inventory/mod.conf" +sed -i 's/ui_formbg_9_sliced.png/"..dreambuilder_theme.name.."_ui_formbg_9_sliced.png/' \ + $workdir"/mods/unified_inventory/init.lua" -sed -i '/"label\[0,0;"/ { - r /tmp/LISTCOLORS_HIDE_SLOTS -}' $workdir"/mods/technic_chests/register.lua" +sed -i 's/ui_single_slot/"..dreambuilder_theme.name.."_ui_single_slot/' \ + $workdir"/mods/unified_inventory/api.lua" -sed -i "0, /depends = /s//depends = dreambuilder_gui_theming, /" $workdir"/mods/technic_chests/mod.conf" +sed -i 's/ui_trash_slot_icon.png/"..dreambuilder_theme.name.."_ui_trash_slot_icon.png/' \ + $workdir"/mods/unified_inventory/api.lua" -sed -i '/image\[2.75,1.5;1,1;/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.15;10.03,4.95;default_standard_inventory_bg.png]".. - a \\t\t"image[2.65,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - a \\t\t"image[4.64,0.83;2.52,2.44;default_furnace_upper_right_slots_bg_"..w.."x"..h..".png]".. - }' $workdir"/mods/homedecor_common/furnaces.lua" +sed -i "0, /depends = /s//depends = dreambuilder_theme_settings, /" $workdir"/mods/unified_inventory/mod.conf" -sed -i '/size\[8,10\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.12,5.73;10.03,4.95;default_standard_inventory_bg.png]".. - a \\t\t"image[-0.12,0.85;10.03,4.79;default_chest_upper_slots_bg.png]".. - }' $workdir"/mods/locks/shared_locked_chest.lua" +########## -# This one will match in two places, deliberately. -sed -i '/size\[8,9\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS - a \\t\t"image[-0.1,4.90;10.03,4.65;default_standard_inventory_old_bg.png]".. - a \\t\t"image[1.88,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - a \\t\t"image[4.9,0.87;2.5,2.46;default_furnace_upper_right_slots_bg_2x2.png]".. - }' $workdir"/mods/locks/shared_locked_furnace.lua" - -sed -i '/size\[8,5.5\]/ { - r /tmp/LISTCOLORS_HIDE_SLOTS a \\t\t"image[-0.1,1.42;10.03,4.65;default_standard_inventory_old_bg.png]".. - a \\t\t"image[3.4,-0.1;1.254,1.163;default_single_slot.png]".. - }' $workdir"/mods/ufos/furnace.lua" - - -mv $workdir"/mods/dreambuilder_extras/dreambuilder_gui_theming" \ +mv $workdir"/mods/dreambuilder_extras/dreambuilder_theme_settings" \ + $workdir"/mods/dreambuilder_extras/dreambuilder_theme_functions" \ + $workdir"/mods/dreambuilder_extras/dreambuilder_theme_light" \ $workdir"/mods/" -rm $workdir"/mods/default/textures/gui_formbg.png" \ - $workdir"/mods/mesecons/textures/jeija_close_window.png" \ - $workdir"/mods/mesecons_luacontroller/textures/jeija_luac_background.png" \ - $workdir"/mods/mesecons_luacontroller/textures/jeija_luac_runbutton.png" \ - $workdir"/mods/unified_inventory/textures/ui_bags_header.png" \ - $workdir"/mods/unified_inventory/textures/ui_bags_inv"* \ - $workdir"/mods/unified_inventory/textures/ui_bags_trash.png" \ - $workdir"/mods/unified_inventory/textures/ui_crafting_form.png" \ - $workdir"/mods/unified_inventory/textures/ui_form_bg.png" \ - $workdir"/mods/unified_inventory/textures/ui_main_inventory.png" \ - $workdir"/mods/unified_inventory/textures/ui_single_slot.png" \ - $workdir"/mods/vessels/textures/vessels_shelf_slot.png" \ - $workdir"/mods/default/textures/gui_hotbar_selected.png" \ - $workdir"/mods/technic_chests/textures/technic_chest_form_bg.png" \ - $workdir"/mods/technic_chests/textures/"*"inventory.png" - -rm /tmp/herefile* /tmp/LISTCOLORS_HIDE_SLOTS - # Add in all of the regular player skins for the player_textures mod rm -f $workdir/mods/player_textures/textures/* diff --git a/mods/dreambuilder_extras/init.lua b/mods/dreambuilder_extras/init.lua index f80e1a09..1e228942 100644 --- a/mods/dreambuilder_extras/init.lua +++ b/mods/dreambuilder_extras/init.lua @@ -6,6 +6,8 @@ -- by Vanessa Dannenberg +dreambuilder = {} + default.cool_lava = function (pos, node) end minetest.register_abm({ diff --git a/mods/dreambuilder_extras/mod.conf b/mods/dreambuilder_extras/mod.conf index 123226fe..2e34e07b 100644 --- a/mods/dreambuilder_extras/mod.conf +++ b/mods/dreambuilder_extras/mod.conf @@ -1,3 +1,3 @@ min_minetest_version = 5.4.0 -depends = dreambuilder_gui_theming, default +depends = dreambuilder_theme_settings, default optional_depends = farming, youngtrees, ferns, dryplants diff --git a/mods/dreambuilder_gui_theming/mod.conf b/mods/dreambuilder_gui_theming/mod.conf deleted file mode 100644 index 9ce086c5..00000000 --- a/mods/dreambuilder_gui_theming/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = dreambuilder_gui_theming -description = formspec/window theming mod diff --git a/mods/dreambuilder_gui_theming/textures/default_chest_upper_slots_bg.png b/mods/dreambuilder_gui_theming/textures/default_chest_upper_slots_bg.png deleted file mode 100644 index 1be2691a..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_chest_upper_slots_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_middle_slots_bg.png b/mods/dreambuilder_gui_theming/textures/default_furnace_upper_middle_slots_bg.png deleted file mode 100644 index c8c22988..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_middle_slots_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x1.png b/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x1.png deleted file mode 100644 index 34bd3303..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x1.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x2.png b/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x2.png deleted file mode 100644 index 430b36a6..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_furnace_upper_right_slots_bg_2x2.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_single_slot.png b/mods/dreambuilder_gui_theming/textures/default_single_slot.png deleted file mode 100644 index 428da1e8..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_single_slot.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_standard_inventory_bg.png b/mods/dreambuilder_gui_theming/textures/default_standard_inventory_bg.png deleted file mode 100644 index 69ed47ea..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_standard_inventory_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/default_standard_inventory_old_bg.png b/mods/dreambuilder_gui_theming/textures/default_standard_inventory_old_bg.png deleted file mode 100644 index 267e51b5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/default_standard_inventory_old_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/jeija_close_window.png b/mods/dreambuilder_gui_theming/textures/jeija_close_window.png deleted file mode 100644 index ab14247d..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/jeija_close_window.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/jeija_luac_background.png b/mods/dreambuilder_gui_theming/textures/jeija_luac_background.png deleted file mode 100644 index 6d272792..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/jeija_luac_background.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/jeija_luac_runbutton.png b/mods/dreambuilder_gui_theming/textures/jeija_luac_runbutton.png deleted file mode 100644 index 3869711e..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/jeija_luac_runbutton.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/signs_lib_sign_bg.png b/mods/dreambuilder_gui_theming/textures/signs_lib_sign_bg.png deleted file mode 100644 index 84e4d81f..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/signs_lib_sign_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_base_machine_upgrade_slots_bg.png b/mods/dreambuilder_gui_theming/textures/technic_base_machine_upgrade_slots_bg.png deleted file mode 100644 index 4c544c58..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_base_machine_upgrade_slots_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_base_machine_upper_bg.png b/mods/dreambuilder_gui_theming/textures/technic_base_machine_upper_bg.png deleted file mode 100644 index dc7cb407..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_base_machine_upper_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_battery_box_upper_slots.png b/mods/dreambuilder_gui_theming/textures/technic_battery_box_upper_slots.png deleted file mode 100644 index 72514d33..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_battery_box_upper_slots.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_chest_form_bg.png b/mods/dreambuilder_gui_theming/textures/technic_chest_form_bg.png deleted file mode 100644 index fc0d06e5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_chest_form_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_cnc_upper_slots.png b/mods/dreambuilder_gui_theming/textures/technic_cnc_upper_slots.png deleted file mode 100644 index 77dc1fcd..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_cnc_upper_slots.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_coal_alloy_furnace_upper_slots.png b/mods/dreambuilder_gui_theming/textures/technic_coal_alloy_furnace_upper_slots.png deleted file mode 100644 index 34a8ec88..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_coal_alloy_furnace_upper_slots.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_copper_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_copper_chest_inventory.png deleted file mode 100644 index 6d226751..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_copper_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_gold_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_gold_chest_inventory.png deleted file mode 100644 index 10e53fe5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_gold_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_injector_upper_slots.png b/mods/dreambuilder_gui_theming/textures/technic_injector_upper_slots.png deleted file mode 100644 index def4f747..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_injector_upper_slots.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_iron_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_iron_chest_inventory.png deleted file mode 100644 index cc5127a8..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_iron_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_main_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_main_inventory.png deleted file mode 100644 index 267e51b5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_main_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_mithril_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_mithril_chest_inventory.png deleted file mode 100644 index 10e53fe5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_mithril_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_reactor_upper_slots.png b/mods/dreambuilder_gui_theming/textures/technic_reactor_upper_slots.png deleted file mode 100644 index ede6bbaa..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_reactor_upper_slots.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_silver_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_silver_chest_inventory.png deleted file mode 100644 index 22933b26..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_silver_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/technic_wooden_chest_inventory.png b/mods/dreambuilder_gui_theming/textures/technic_wooden_chest_inventory.png deleted file mode 100644 index 86e7f14c..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/technic_wooden_chest_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_bags_header.png b/mods/dreambuilder_gui_theming/textures/ui_bags_header.png deleted file mode 100644 index 0f900f70..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_bags_header.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_large.png b/mods/dreambuilder_gui_theming/textures/ui_bags_inv_large.png deleted file mode 100644 index ea19e005..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_large.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_medium.png b/mods/dreambuilder_gui_theming/textures/ui_bags_inv_medium.png deleted file mode 100644 index def4f747..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_medium.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_small.png b/mods/dreambuilder_gui_theming/textures/ui_bags_inv_small.png deleted file mode 100644 index 53d6539e..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_bags_inv_small.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_bags_trash.png b/mods/dreambuilder_gui_theming/textures/ui_bags_trash.png deleted file mode 100644 index 5b2b4b3d..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_bags_trash.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_crafting_form.png b/mods/dreambuilder_gui_theming/textures/ui_crafting_form.png deleted file mode 100644 index b81851bd..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_crafting_form.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_form_bg.png b/mods/dreambuilder_gui_theming/textures/ui_form_bg.png deleted file mode 100644 index f465e8ca..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_form_bg.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/ui_main_inventory.png b/mods/dreambuilder_gui_theming/textures/ui_main_inventory.png deleted file mode 100644 index 267e51b5..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/ui_main_inventory.png and /dev/null differ diff --git a/mods/dreambuilder_gui_theming/textures/vessels_upper_slots_bg.png b/mods/dreambuilder_gui_theming/textures/vessels_upper_slots_bg.png deleted file mode 100644 index def4f747..00000000 Binary files a/mods/dreambuilder_gui_theming/textures/vessels_upper_slots_bg.png and /dev/null differ diff --git a/mods/dreambuilder_hotbar/init.lua b/mods/dreambuilder_hotbar/init.lua index c948e338..b1f34717 100644 --- a/mods/dreambuilder_hotbar/init.lua +++ b/mods/dreambuilder_hotbar/init.lua @@ -44,8 +44,8 @@ minetest.register_on_joinplayer(function(player) local hotbar_size = validate_size(get_hotbar_setting(player:get_player_name())) player:hud_set_hotbar_itemcount(hotbar_size) minetest.after(0.5,function(hotbar_size) - player:hud_set_hotbar_selected_image("gui_hotbar_selected.png") - player:hud_set_hotbar_image("gui_hb_bg_"..hotbar_size..".png") + player:hud_set_hotbar_selected_image(dreambuilder_theme.name.."_gui_hotbar_selected.png") + player:hud_set_hotbar_image(dreambuilder_theme.name.."_gui_hb_bg_"..hotbar_size..".png") end,hotbar_size) end) @@ -58,7 +58,7 @@ minetest.register_chatcommand("hotbar", { local player = minetest.get_player_by_name(name) player:hud_set_hotbar_itemcount(hotbar_size) minetest.chat_send_player(name, "[_] Hotbar size set to " ..hotbar_size.. ".") - player:hud_set_hotbar_image("gui_hb_bg_"..hotbar_size..".png") + player:hud_set_hotbar_image(dreambuilder_theme.name.."_gui_hb_bg_"..hotbar_size..".png") save_hotbar_settings() end, }) diff --git a/mods/dreambuilder_hotbar/mod.conf b/mods/dreambuilder_hotbar/mod.conf index 2814e642..c5950374 100644 --- a/mods/dreambuilder_hotbar/mod.conf +++ b/mods/dreambuilder_hotbar/mod.conf @@ -1,2 +1,2 @@ min_minetest_version = 5.2.0 -optional_depends = default, dreambuilder_gui_theming +optional_depends = default, dreambuilder_theme_settings diff --git a/mods/dreambuilder_theme_functions/init.lua b/mods/dreambuilder_theme_functions/init.lua new file mode 100644 index 00000000..374e492c --- /dev/null +++ b/mods/dreambuilder_theme_functions/init.lua @@ -0,0 +1,20 @@ +-- This mod just supplies helpers to build slot backgrounds for mods that use formspec v1 + +dreambuilder_theme = {} + +function dreambuilder_theme.single_slot_v1(xpos, ypos, bright) + return string.format("background9[%f,%f;%f,%f;%s_ui_single_slot%s.png;false;16]", + xpos, ypos, 1, 1.08, dreambuilder_theme.name, (bright and "_bright" or "") ) +end + +function dreambuilder_theme.make_inv_img_grid_v1(xpos, ypos, width, height, bright) + local tiled = {} + local n=1 + for y = 0, (height - 1) do + for x = 0, (width -1) do + tiled[n] = dreambuilder_theme.single_slot_v1(xpos + x, ypos + y, bright) + n = n + 1 + end + end + return table.concat(tiled) +end diff --git a/mods/dreambuilder_theme_light/init.lua b/mods/dreambuilder_theme_light/init.lua new file mode 100644 index 00000000..7653c420 --- /dev/null +++ b/mods/dreambuilder_theme_light/init.lua @@ -0,0 +1,18 @@ +dreambuilder_theme.name = "dbtheme_light" + +dreambuilder_theme.form_bgcolor = "#F0F0F0FF" +dreambuilder_theme.btn_color = "#B0B0B0FF" + +dreambuilder_theme.editor_text_color = "#000000FF" +dreambuilder_theme.editor_bg_color = "#F0F0F0FF" + +dreambuilder_theme.listcolor_slot_bg_normal = "#FFFFFF30" +dreambuilder_theme.listcolor_slot_bg_hover = "#FFFFFF80" +dreambuilder_theme.listcolor_slot_border = "#606060" + +dreambuilder_theme.tooltip_bgcolor = "#A0A0A0" +dreambuilder_theme.tooltip_fontcolor = "#FFF" + +dreambuilder_theme.window_darken = "false" +dreambuilder_theme.editor_border = "false" +dreambuilder_theme.image_button_borders = "false" diff --git a/mods/dreambuilder_theme_light/mod.conf b/mods/dreambuilder_theme_light/mod.conf new file mode 100644 index 00000000..dcbd44fd --- /dev/null +++ b/mods/dreambuilder_theme_light/mod.conf @@ -0,0 +1,3 @@ +name = dreambuilder_theme_light +description = Standard "light" theme for Dreambuilder +depends = dreambuilder_theme_settings diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_formbg.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_formbg.png new file mode 100644 index 00000000..953e7225 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_formbg.png differ diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_1.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_1.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_1.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_1.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_10.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_10.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_10.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_10.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_16.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_16.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_16.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_16.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_23.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_23.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_23.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_23.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_24.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_24.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_24.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_24.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_32.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_32.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_32.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_32.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hb_bg_8.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_8.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hb_bg_8.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hb_bg_8.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_hotbar_selected.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hotbar_selected.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_hotbar_selected.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_gui_hotbar_selected.png diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_close_window.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_close_window.png new file mode 100644 index 00000000..d0bacc80 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_close_window.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_background.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_background.png new file mode 100644 index 00000000..6b84a5fe Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_background.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_runbutton.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_runbutton.png new file mode 100644 index 00000000..d6ff35b3 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_jeija_luac_runbutton.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_signs_lib_sign_bg.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_signs_lib_sign_bg.png new file mode 100644 index 00000000..93f98373 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_signs_lib_sign_bg.png differ diff --git a/mods/dreambuilder_gui_theming/textures/signs_lib_sign_color_palette.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_signs_lib_sign_color_palette.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/signs_lib_sign_color_palette.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_signs_lib_sign_color_palette.png diff --git a/mods/dreambuilder_gui_theming/textures/gui_formbg.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_technic_chest_form_bg.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/gui_formbg.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_technic_chest_form_bg.png diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_crafting_arrow.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_crafting_arrow.png new file mode 100644 index 00000000..8ebe1b32 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_crafting_arrow.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_formbg_9_sliced.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_formbg_9_sliced.png new file mode 100644 index 00000000..ee2fa37a Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_formbg_9_sliced.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot.png new file mode 100644 index 00000000..03ca4e08 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot_bright.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot_bright.png new file mode 100644 index 00000000..8806fa29 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_single_slot_bright.png differ diff --git a/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_trash_slot_icon.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_trash_slot_icon.png new file mode 100644 index 00000000..d40af263 Binary files /dev/null and b/mods/dreambuilder_theme_light/textures/dbtheme_light_ui_trash_slot_icon.png differ diff --git a/mods/dreambuilder_gui_theming/textures/vessels_shelf_slot.png b/mods/dreambuilder_theme_light/textures/dbtheme_light_vessels_shelf_slot.png similarity index 100% rename from mods/dreambuilder_gui_theming/textures/vessels_shelf_slot.png rename to mods/dreambuilder_theme_light/textures/dbtheme_light_vessels_shelf_slot.png diff --git a/mods/dreambuilder_gui_theming/init.lua b/mods/dreambuilder_theme_settings/init.lua similarity index 86% rename from mods/dreambuilder_gui_theming/init.lua rename to mods/dreambuilder_theme_settings/init.lua index 26781f9b..88fe1635 100644 --- a/mods/dreambuilder_gui_theming/init.lua +++ b/mods/dreambuilder_theme_settings/init.lua @@ -1,15 +1,14 @@ --- Dreambuilder theming mod --- really all this does is preload the global config --- and supply some stock textures :P +-- all this does is preload the global fallback color settings -- -- Colors can be changed with your local minetest.conf, or you can skip that -- and instead add a whole theme mod to override the colors and images -- supplied by this component. - -dreambuilder_theme = {} +-- +-- Theme mods should depend on this mod to inherit the user's color +-- settings from their minetest.conf. This mod in turn depends on +-- `dreambuilder_theme_functions` for its global table. dreambuilder_theme.form_bgcolor = minetest.settings:get("dreambuilder_theme_form_bgcolor") - dreambuilder_theme.btn_color = minetest.settings:get("dreambuilder_theme_btn_color") dreambuilder_theme.editor_text_color = minetest.settings:get("dreambuilder_theme_editor_text_color") dreambuilder_theme.editor_bg_color = minetest.settings:get("dreambuilder_theme_editor_bg_color") diff --git a/mods/dreambuilder_theme_settings/mod.conf b/mods/dreambuilder_theme_settings/mod.conf new file mode 100644 index 00000000..92171ae1 --- /dev/null +++ b/mods/dreambuilder_theme_settings/mod.conf @@ -0,0 +1,3 @@ +name = dreambuilder_theme_settings +description = formspec/window theming mod +depends = dreambuilder_theme_functions diff --git a/mods/homedecor_common/furnaces.lua b/mods/homedecor_common/furnaces.lua index 4494683e..80a8b8e0 100644 --- a/mods/homedecor_common/furnaces.lua +++ b/mods/homedecor_common/furnaces.lua @@ -27,12 +27,12 @@ local function make_formspec(furnacedef, percent) return "size["..math.max(8, 6 + w)..",9]".. "image[2.75,1.5;1,1;"..fire.."]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.15;10.03,4.95;default_standard_inventory_bg.png]".. - "image[2.65,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - "image[4.64,0.83;2.52,2.44;default_furnace_upper_right_slots_bg_"..w.."x"..h..".png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(2.75, 0.45, false).. + dreambuilder_theme.single_slot_v1(2.75, 2.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(4.75, 0.92, w, h, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.22, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.45, 8, 3, false).. "list[current_name;fuel;2.75,2.5;1,1;]".. "list[current_name;src;2.75,0.5;1,1;]".. "list[current_name;dst;4.75,0.96;"..w..","..h..";]".. diff --git a/mods/homedecor_common/mod.conf b/mods/homedecor_common/mod.conf index ab7c4320..10168653 100644 --- a/mods/homedecor_common/mod.conf +++ b/mods/homedecor_common/mod.conf @@ -1,4 +1,4 @@ name = homedecor_common description = Homedecor mod: common -depends = default, creative +depends = dreambuilder_theme_settings, default, creative optional_depends = screwdriver diff --git a/mods/locks/depends.txt b/mods/locks/depends.txt index 7f4b9d78..d6148abc 100644 --- a/mods/locks/depends.txt +++ b/mods/locks/depends.txt @@ -1,2 +1,3 @@ default pipeworks? +dreambuilder_theme_settings diff --git a/mods/locks/shared_locked_chest.lua b/mods/locks/shared_locked_chest.lua index efae9b04..c738839a 100644 --- a/mods/locks/shared_locked_chest.lua +++ b/mods/locks/shared_locked_chest.lua @@ -50,11 +50,10 @@ minetest.register_node("locks:shared_locked_chest", { -- prepare the lock of the chest locks:lock_init( pos, "size[8,10]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.12,5.73;10.03,4.95;default_standard_inventory_bg.png]".. - "image[-0.12,0.85;10.03,4.79;default_chest_upper_slots_bg.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 0.95, 8, 4, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.82, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 7.03, 8, 3, false).. ---- "field[0.5,0.2;8,1.0;locks_sent_lock_command;Locked chest. Type password, command or /help for help:;]".. ---- "button_exit[3,0.8;2,1.0;locks_sent_input;Proceed]".. -- "list[current_name;main;0,0;8,4;]".. @@ -71,7 +70,7 @@ minetest.register_node("locks:shared_locked_chest", { "list[current_player;main;0,7.08;8,3;8]" .. "listring[current_name;main]" .. "listring[current_player;main]" .. - default.get_hotbar_bg(0,5.85) ); + "" ); local inv = meta:get_inventory() inv:set_size("main", 8*4) diff --git a/mods/locks/shared_locked_furnace.lua b/mods/locks/shared_locked_furnace.lua index 2ce39652..160e18bc 100644 --- a/mods/locks/shared_locked_furnace.lua +++ b/mods/locks/shared_locked_furnace.lua @@ -87,12 +87,12 @@ end function locks.get_furnace_active_formspec(pos, percent) local formspec = "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.90;10.03,4.65;default_standard_inventory_old_bg.png]".. - "image[1.88,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - "image[4.9,0.87;2.5,2.46;default_furnace_upper_right_slots_bg_2x2.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(2, 0.45, false).. + dreambuilder_theme.single_slot_v1(2, 2.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. "image[2,1.5;1,1;default_furnace_fire_bg.png^[lowpart:".. (100-percent)..":default_furnace_fire_fg.png]".. "list[current_name;fuel;2,2.5;1,1;]".. @@ -108,12 +108,12 @@ end locks.furnace_inactive_formspec = "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.90;10.03,4.65;default_standard_inventory_old_bg.png]".. - "image[1.88,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - "image[4.9,0.87;2.5,2.46;default_furnace_upper_right_slots_bg_2x2.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(2, 0.45, false).. + dreambuilder_theme.single_slot_v1(2, 2.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.95, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.95, 8, 3, false).. "image[2,1.5;1,1;default_furnace_fire_bg.png]".. "list[current_name;fuel;2,2.5;1,1;]".. "list[current_name;src;2,0.5;1,1;]".. diff --git a/mods/mesecons/mod.conf b/mods/mesecons/mod.conf index 5d01a018..da0be547 100644 --- a/mods/mesecons/mod.conf +++ b/mods/mesecons/mod.conf @@ -1,2 +1,2 @@ name = mesecons -depends = dreambuilder_gui_theming, default +depends = dreambuilder_theme_settings, default diff --git a/mods/mesecons/textures/jeija_close_window.png b/mods/mesecons/textures/jeija_close_window.png new file mode 100644 index 00000000..8ab7783e Binary files /dev/null and b/mods/mesecons/textures/jeija_close_window.png differ diff --git a/mods/mesecons_luacontroller/init.lua b/mods/mesecons_luacontroller/init.lua index 509edc3c..4bb4c48a 100644 --- a/mods/mesecons_luacontroller/init.lua +++ b/mods/mesecons_luacontroller/init.lua @@ -666,11 +666,11 @@ local function reset_formspec(meta, code, errmsg) meta:set_string("formspec", "size[12,10]" .."style_type[label,textarea;font=mono]" .."style_type[textarea;textcolor="..dreambuilder_theme.editor_text_color..";border="..dreambuilder_theme.editor_border.."]" - .."background[-0.2,-0.25;12.4,10.75;jeija_luac_background.png]" + .."background[-0.2,-0.25;12.4,10.75;"..dreambuilder_theme.name.."_jeija_luac_background.png]" .."label[0.1,8.3;"..errmsg.."]" .."textarea[0.2,0.2;12.2,9.5;code;;"..code.."]" - .."image_button[4.75,8.75;2.5,1;jeija_luac_runbutton.png;program;]" - .."image_button_exit[11.72,-0.25;0.425,0.4;jeija_close_window.png;exit;]" + .."image_button[4.75,8.75;2.5,1;"..dreambuilder_theme.name.."_jeija_luac_runbutton.png;program;]" + .."image_button_exit[11.72,-0.25;0.425,0.4;"..dreambuilder_theme.name.."_jeija_close_window.png;exit;]" ) end diff --git a/mods/mesecons_luacontroller/textures/jeija_luac_background.png b/mods/mesecons_luacontroller/textures/jeija_luac_background.png new file mode 100644 index 00000000..f2a07e1b Binary files /dev/null and b/mods/mesecons_luacontroller/textures/jeija_luac_background.png differ diff --git a/mods/mesecons_luacontroller/textures/jeija_luac_runbutton.png b/mods/mesecons_luacontroller/textures/jeija_luac_runbutton.png new file mode 100644 index 00000000..f43b571c Binary files /dev/null and b/mods/mesecons_luacontroller/textures/jeija_luac_runbutton.png differ diff --git a/mods/pipeworks/compat-chests.lua b/mods/pipeworks/compat-chests.lua index b113d032..02cebdbf 100644 --- a/mods/pipeworks/compat-chests.lua +++ b/mods/pipeworks/compat-chests.lua @@ -15,11 +15,10 @@ local function get_chest_formspec(pos) local spos = pos.x .. "," .. pos.y .. "," .. pos.z local formspec = "size[8,9]" .. - "image[-0.12,4.73;10.03,4.95;default_standard_inventory_bg.png]".. - "image[-0.12,0.15;10.03,4.79;default_chest_upper_slots_bg.png]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 0.26, 8, 4, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.82, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 6.03, 8, 3, false).. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. default.gui_bg .. default.gui_bg_img .. default.gui_slots .. @@ -28,7 +27,7 @@ local function get_chest_formspec(pos) "list[current_player;main;0,6.08;8,3;8]" .. "listring[nodemeta:" .. spos .. ";main]" .. "listring[current_player;main]" .. - default.get_hotbar_bg(0,4.85) + "" -- Pipeworks Switch formspec = formspec .. diff --git a/mods/pipeworks/compat-furnaces.lua b/mods/pipeworks/compat-furnaces.lua index 5e05b30d..884748fa 100644 --- a/mods/pipeworks/compat-furnaces.lua +++ b/mods/pipeworks/compat-furnaces.lua @@ -12,12 +12,12 @@ local tube_entry = "^pipeworks_tube_connection_stony.png" local function active_formspec(fuel_percent, item_percent, pos, meta) local formspec = "size[8,8.5]".. - "image[-0.1,4.15;10.03,4.95;default_standard_inventory_bg.png]".. - "image[2.65,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - "image[4.64,0.83;2.52,2.44;default_furnace_upper_right_slots_bg_2x2.png]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. + dreambuilder_theme.single_slot_v1(2.75, 0.45, false).. + dreambuilder_theme.single_slot_v1(2.75, 2.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(4.75, 0.92, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.22, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.45, 8, 3, false).. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. default.gui_bg.. default.gui_bg_img.. default.gui_slots.. @@ -36,7 +36,6 @@ local function active_formspec(fuel_percent, item_percent, pos, meta) "listring[current_player;main]".. "listring[current_name;fuel]".. "listring[current_player;main]".. - default.get_hotbar_bg(0, 4.25) .. fs_helpers.cycling_button( meta, "image_button[0,3.5;1,0.6", @@ -51,12 +50,12 @@ end local function inactive_formspec(pos, meta) local formspec = "size[8,8.5]".. - "image[-0.1,4.15;10.03,4.95;default_standard_inventory_bg.png]".. - "image[2.65,0.37;1.254,3.59;default_furnace_upper_middle_slots_bg.png]".. - "image[4.64,0.83;2.52,2.44;default_furnace_upper_right_slots_bg_2x2.png]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. + dreambuilder_theme.single_slot_v1(2.75, 0.45, false).. + dreambuilder_theme.single_slot_v1(2.75, 2.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(4.75, 0.92, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.22, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.45, 8, 3, false).. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. default.gui_bg.. default.gui_bg_img.. default.gui_slots.. @@ -73,7 +72,6 @@ local function inactive_formspec(pos, meta) "listring[current_player;main]".. "listring[current_name;fuel]".. "listring[current_player;main]".. - default.get_hotbar_bg(0, 4.25) .. fs_helpers.cycling_button( meta, "image_button[0,3.5;1,0.6", diff --git a/mods/pipeworks/mod.conf b/mods/pipeworks/mod.conf index cb6e6d67..91ec0ef9 100644 --- a/mods/pipeworks/mod.conf +++ b/mods/pipeworks/mod.conf @@ -1,5 +1,5 @@ name = pipeworks description = This mod uses mesh nodes and nodeboxes to supply a complete set of 3D pipes and tubes, along with devices that work with them. -depends = dreambuilder_gui_theming, default, basic_materials, screwdriver +depends = dreambuilder_theme_settings, default, basic_materials, screwdriver optional_depends = mesecons, mesecons_mvps, digilines, signs_lib min_minetest_version = 5.2.0 diff --git a/mods/streetspoles/depends.txt b/mods/streetspoles/depends.txt index e437ca24..421a27d2 100644 --- a/mods/streetspoles/depends.txt +++ b/mods/streetspoles/depends.txt @@ -1 +1 @@ -streetsmod +streetsmod \ No newline at end of file diff --git a/mods/technic/machines/HV/nuclear_reactor.lua b/mods/technic/machines/HV/nuclear_reactor.lua index 4d498403..25de726d 100644 --- a/mods/technic/machines/HV/nuclear_reactor.lua +++ b/mods/technic/machines/HV/nuclear_reactor.lua @@ -32,11 +32,10 @@ minetest.register_craft({ local function make_reactor_formspec(meta) local f = "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[1.9,0.93;3.76,2.325;technic_reactor_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + dreambuilder_theme.make_inv_img_grid_v1(2, 0.95, 3, 2, false).. "label[0,0;"..S("Nuclear Reactor Rod Compartment").."]".. "list[current_name;src;2,1;3,2;]".. "list[current_player;main;0,5;8,4;]".. diff --git a/mods/technic/machines/MV/tool_workshop.lua b/mods/technic/machines/MV/tool_workshop.lua index 13686650..89b7de62 100644 --- a/mods/technic/machines/MV/tool_workshop.lua +++ b/mods/technic/machines/MV/tool_workshop.lua @@ -20,12 +20,11 @@ local workshop_demand = {5000, 3500, 2000} local workshop_formspec = "size[8,9;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[2.9,0.93;1.254,1.163;default_single_slot.png]".. - "image[0.91,2.93;2.508,1.163;technic_base_machine_upgrade_slots_bg.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(1, 2.95, 2, 1, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + dreambuilder_theme.single_slot_v1(3, 0.95, false).. "list[current_name;src;3,1;1,1;]".. "label[0,0;"..S("%s Tool Workshop"):format("MV").."]".. "list[current_name;upgrade1;1,3;1,1;]".. diff --git a/mods/technic/machines/other/coal_alloy_furnace.lua b/mods/technic/machines/other/coal_alloy_furnace.lua index d7c82585..b81c46fd 100644 --- a/mods/technic/machines/other/coal_alloy_furnace.lua +++ b/mods/technic/machines/other/coal_alloy_furnace.lua @@ -15,11 +15,12 @@ minetest.register_craft({ local machine_name = S("Fuel-Fired Alloy Furnace") local formspec = "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[1.9,0.93;6.27,3.49;technic_coal_alloy_furnace_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(2, 0.95, 2, 1, false).. + dreambuilder_theme.single_slot_v1(2, 2.95, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "label[0,0;"..machine_name.."]".. "image[2,2;1,1;default_furnace_fire_bg.png]".. "list[current_name;fuel;2,3;1,1;]".. @@ -129,11 +130,12 @@ minetest.register_abm({ technic.swap_node(pos, "technic:coal_alloy_furnace_active") meta:set_string("formspec", "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[1.9,0.93;6.27,3.49;technic_coal_alloy_furnace_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(2, 0.95, 2, 1, false).. + dreambuilder_theme.single_slot_v1(2, 2.95, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "label[0,0;"..machine_name.."]".. "image[2,2;1,1;default_furnace_fire_bg.png^[lowpart:".. (100 - percent)..":default_furnace_fire_fg.png]".. diff --git a/mods/technic/machines/other/constructor.lua b/mods/technic/machines/other/constructor.lua index 5f2ff149..1d97bce0 100644 --- a/mods/technic/machines/other/constructor.lua +++ b/mods/technic/machines/other/constructor.lua @@ -146,16 +146,15 @@ local function make_constructor(mark, length) on_construct = function(pos) local meta = minetest.get_meta(pos) local formspec = "size[8,9;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "label[0,0;"..S("Constructor Mk%d"):format(mark).."]".. "list[current_player;main;0,5;8,4;]" for i = 1, length do formspec = formspec .."label[5,"..(i - 1)..";"..S("Slot %d"):format(i).."]" - .."image[5.89,"..(i*0.998-1.07)..";1.254,1.163;default_single_slot.png]" + ..dreambuilder_theme.single_slot_v1(6, i-1.05, false) .."list[current_name;slot"..i ..";6,"..(i - 1)..";1,1;]" end diff --git a/mods/technic/machines/other/injector.lua b/mods/technic/machines/other/injector.lua index b0bf6443..47adde5f 100644 --- a/mods/technic/machines/other/injector.lua +++ b/mods/technic/machines/other/injector.lua @@ -56,11 +56,10 @@ local function set_injector_formspec(meta) local is_stack = meta:get_string("mode") == "whole stacks" meta:set_string("formspec", "size[8,9;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[-0.1,1.92;10.03,2.375;technic_injector_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 1.95, 8, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "item_image[0,0;1,1;technic:injector]".. "label[1,0;"..S("Self-Contained Injector").."]".. (is_stack and diff --git a/mods/technic/machines/register/battery_box.lua b/mods/technic/machines/register/battery_box.lua index 633142d9..ce051f28 100644 --- a/mods/technic/machines/register/battery_box.lua +++ b/mods/technic/machines/register/battery_box.lua @@ -162,11 +162,12 @@ function technic.register_battery_box(data) local formspec = "size[8,9]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[2.9,0.93;3.762,3.488;technic_battery_box_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(3, 0.95, false).. + dreambuilder_theme.single_slot_v1(5, 0.95, false).. + dreambuilder_theme.make_inv_img_grid_v1(3.5, 2.95, 2, 1, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "image[1,1;1,2;technic_power_meter_bg.png]".. "list[context;src;3,1;1,1;]".. "image[4,1;1,1;technic_battery_reload.png]".. diff --git a/mods/technic/machines/register/generator.lua b/mods/technic/machines/register/generator.lua index db6c82b8..0736a193 100644 --- a/mods/technic/machines/register/generator.lua +++ b/mods/technic/machines/register/generator.lua @@ -36,11 +36,10 @@ function technic.register_generator(data) local generator_formspec = "size[8,9;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[2.9,0.93;1.254,1.163;default_single_slot.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. + dreambuilder_theme.single_slot_v1(3, 0.95, false).. "label[0,0;"..S("Fuel-Fired %s Generator"):format(tier).."]".. "list[current_name;src;3,1;1,1;]".. "image[4,1;1,1;default_furnace_fire_bg.png]".. diff --git a/mods/technic/machines/register/machine_base.lua b/mods/technic/machines/register/machine_base.lua index 284c9119..00c6230c 100644 --- a/mods/technic/machines/register/machine_base.lua +++ b/mods/technic/machines/register/machine_base.lua @@ -51,11 +51,11 @@ function technic.register_base_machine(data) local formspec = "size[8,9;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,4.93;10.03,4.65;technic_main_inventory.png]".. - "image[2.9,0.93;5.016,2.326;technic_base_machine_upper_bg.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(3, 0.95, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 0.95, 2, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.97, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 5.97, 8, 3, false).. "list[current_name;src;"..(4-input_size)..",1;"..input_size..",1;]".. "list[current_name;dst;5,1;2,2;]".. "list[current_player;main;0,5;8,4;]".. @@ -66,7 +66,7 @@ function technic.register_base_machine(data) "listring[current_player;main]" if data.upgrade then formspec = formspec.. - "image[0.91,2.93;2.508,1.163;technic_base_machine_upgrade_slots_bg.png]".. + dreambuilder_theme.make_inv_img_grid_v1(1, 2.95, 2, 1, false).. "list[current_name;upgrade1;1,3;1,1;]".. "list[current_name;upgrade2;2,3;1,1;]".. "label[1,4;"..S("Upgrade Slots").."]".. diff --git a/mods/technic/mod.conf b/mods/technic/mod.conf index 013060b7..d8c08b56 100644 --- a/mods/technic/mod.conf +++ b/mods/technic/mod.conf @@ -1,3 +1,3 @@ name = technic -depends = dreambuilder_gui_theming, default, pipeworks, technic_worldgen, basic_materials +depends = dreambuilder_theme_settings, default, pipeworks, technic_worldgen, basic_materials optional_depends = bucket, screwdriver, mesecons, mesecons_mvps, digilines, digiline_remote, intllib, unified_inventory, vector_extras, dye diff --git a/mods/technic_chests/mod.conf b/mods/technic_chests/mod.conf index 3cacca49..c0f0cc73 100644 --- a/mods/technic_chests/mod.conf +++ b/mods/technic_chests/mod.conf @@ -1,3 +1,3 @@ name = technic_chests -depends = dreambuilder_gui_theming, default, basic_materials +depends = dreambuilder_theme_settings, default, basic_materials optional_depends = moreblocks, moreores, pipeworks, intllib, tubelib diff --git a/mods/technic_chests/register.lua b/mods/technic_chests/register.lua index 6b93b1cf..4ea7ed94 100644 --- a/mods/technic_chests/register.lua +++ b/mods/technic_chests/register.lua @@ -225,14 +225,13 @@ function technic.chests:definition(name, data) local front = {"technic_"..lname.."_chest_front.png"} data.base_formspec = "size["..data.ovwidth..","..data.ovheight.."]".. "label[0,0;"..S("%s Chest"):format(name).."]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. "list[context;main;"..data.hileft..",1;"..data.width..","..data.height..";]".. "list[current_player;main;"..data.loleft..","..data.lotop..";8,4;]".. - "background[-0.19,-0.25;"..(data.ovwidth+0.4)..","..(data.ovheight+0.75)..";technic_chest_form_bg.png]".. - "background["..data.hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]".. - "background["..data.loleft..","..data.lotop..";8,4;technic_main_inventory.png]".. + "background[0,0;1,1;"..dreambuilder_theme.name.."_technic_chest_form_bg.png;true]".. + dreambuilder_theme.make_inv_img_grid_v1(data.hileft, 0.95, data.width, data.height, false).. + dreambuilder_theme.make_inv_img_grid_v1(data.loleft, data.lotop-0.05, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(data.loleft, data.lotop+0.95, 8, 3, false).. "listring[]" if data.sort then diff --git a/mods/technic_chests/textures/technic_chest_form_bg.png b/mods/technic_chests/textures/technic_chest_form_bg.png new file mode 100644 index 00000000..74a6a3bd Binary files /dev/null and b/mods/technic_chests/textures/technic_chest_form_bg.png differ diff --git a/mods/technic_chests/textures/technic_copper_chest_inventory.png b/mods/technic_chests/textures/technic_copper_chest_inventory.png new file mode 100644 index 00000000..2f4cb125 Binary files /dev/null and b/mods/technic_chests/textures/technic_copper_chest_inventory.png differ diff --git a/mods/technic_chests/textures/technic_gold_chest_inventory.png b/mods/technic_chests/textures/technic_gold_chest_inventory.png new file mode 100644 index 00000000..a549cbb8 Binary files /dev/null and b/mods/technic_chests/textures/technic_gold_chest_inventory.png differ diff --git a/mods/technic_chests/textures/technic_iron_chest_inventory.png b/mods/technic_chests/textures/technic_iron_chest_inventory.png new file mode 100644 index 00000000..10837958 Binary files /dev/null and b/mods/technic_chests/textures/technic_iron_chest_inventory.png differ diff --git a/mods/technic_chests/textures/technic_main_inventory.png b/mods/technic_chests/textures/technic_main_inventory.png new file mode 100644 index 00000000..b9030b54 Binary files /dev/null and b/mods/technic_chests/textures/technic_main_inventory.png differ diff --git a/mods/technic_chests/textures/technic_mithril_chest_inventory.png b/mods/technic_chests/textures/technic_mithril_chest_inventory.png new file mode 100644 index 00000000..a549cbb8 Binary files /dev/null and b/mods/technic_chests/textures/technic_mithril_chest_inventory.png differ diff --git a/mods/technic_chests/textures/technic_silver_chest_inventory.png b/mods/technic_chests/textures/technic_silver_chest_inventory.png new file mode 100644 index 00000000..b273cae3 Binary files /dev/null and b/mods/technic_chests/textures/technic_silver_chest_inventory.png differ diff --git a/mods/technic_chests/textures/technic_wooden_chest_inventory.png b/mods/technic_chests/textures/technic_wooden_chest_inventory.png new file mode 100644 index 00000000..2fdc53cd Binary files /dev/null and b/mods/technic_chests/textures/technic_wooden_chest_inventory.png differ diff --git a/mods/technic_cnc/cnc.lua b/mods/technic_cnc/cnc.lua index a58bbca8..8f0c7c43 100644 --- a/mods/technic_cnc/cnc.lua +++ b/mods/technic_cnc/cnc.lua @@ -100,11 +100,11 @@ local twosize_products = { local cnc_formspec = "size[9,11;]".. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,6.92;10.03,4.65;technic_main_inventory.png]".. - "image[-0.1,5.42;11.28,1.163;technic_cnc_upper_slots.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.single_slot_v1(0.5, 5.45, false).. + dreambuilder_theme.make_inv_img_grid_v1(5, 5.45, 4, 1, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 6.95, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 7.95, 8, 3, false).. "label[1,0;"..S("Choose Milling Program:").."]".. "image_button[1,0.5;1,1;technic_cnc_slope.png;slope; ]".. "image_button[2,0.5;1,1;technic_cnc_slope_edge.png;slope_edge; ]".. diff --git a/mods/ufos/furnace.lua b/mods/ufos/furnace.lua index 21efff4e..366f23f3 100644 --- a/mods/ufos/furnace.lua +++ b/mods/ufos/furnace.lua @@ -4,7 +4,10 @@ ufos.fuel_time = 10 ufos.furnace_inactive_formspec = "size[8,5.5]".. - "image[3.4,-0.1;1.254,1.163;default_single_slot.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 1.42, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 2.58, 8, 3, false).. + dreambuilder_theme.single_slot_v1(3.4, 0, false).. "list[current_name;fuel;3.5,0;1,1;]".. "list[current_player;main;0,1.5;8,4;]".. "label[4.5,0;Fuel needed: "..ufos.fuel.."]".. @@ -21,14 +24,14 @@ minetest.register_node("ufos:furnace", { legacy_facedir_simple = true, sounds = default.node_sound_stone_defaults(), on_construct = function(pos) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) meta:set_string("formspec", ufos.furnace_inactive_formspec) meta:set_string("infotext", "UFO charging device") local inv = meta:get_inventory() inv:set_size("fuel", 1) end, can_dig = function(pos,player) - local meta = minetest.get_meta(pos); + local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory() if not inv:is_empty("fuel") then return false @@ -48,14 +51,14 @@ minetest.register_node("ufos:furnace_active", { legacy_facedir_simple = true, sounds = default.node_sound_stone_defaults(), on_construct = function(pos) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) meta:set_string("formspec", ufos.furnace_inactive_formspec) meta:set_string("infotext", "UFO charging device") local inv = meta:get_inventory() inv:set_size("fuel", 1) end, can_dig = function(pos,player) - local meta = minetest.get_meta(pos); + local meta = minetest.env:get_meta(pos); local inv = meta:get_inventory() if not inv:is_empty("fuel") then return false @@ -65,16 +68,16 @@ minetest.register_node("ufos:furnace_active", { }) function hacky_swap_node(pos,name) - local node = minetest.get_node(pos) - local meta = minetest.get_meta(pos) + local node = minetest.env:get_node(pos) + local meta = minetest.env:get_meta(pos) local meta0 = meta:to_table() if node.name == name then return end node.name = name local meta0 = meta:to_table() - minetest.set_node(pos,node) - meta = minetest.get_meta(pos) + minetest.env:set_node(pos,node) + meta = minetest.env:get_meta(pos) meta:from_table(meta0) end @@ -83,7 +86,7 @@ minetest.register_abm({ interval = .25, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - local meta = minetest.get_meta(pos) + local meta = minetest.env:get_meta(pos) local inv = meta:get_inventory() local stack = inv:get_stack("fuel",1) if stack:get_name() == ufos.fuel then diff --git a/mods/ufos/init.lua b/mods/ufos/init.lua index 40fd2410..cb68e654 100644 --- a/mods/ufos/init.lua +++ b/mods/ufos/init.lua @@ -1,8 +1,6 @@ ufos = {} -local e - local floor_pos = function(pos) return {x=math.floor(pos.x),y=math.floor(pos.y),z=math.floor(pos.z)} end @@ -48,7 +46,7 @@ ufos.ufo_from_item = function(itemstack,placer,pointed_thing) local wear = itemstack:get_wear() ufos.set_fuel(ufos.ufo,ufos.fuel_from_wear(wear)) -- add the entity - e = minetest.add_entity(pointed_thing.above, "ufos:ufo") + e = minetest.env:add_entity(pointed_thing.above, "ufos:ufo") -- remove the item itemstack:take_item() -- reset owner for next ufo @@ -164,8 +162,8 @@ function ufos.ufo:on_step (dtime) local t = {{x=2,z=0},{x=-2,z=0},{x=0,z=2},{x=0,z=-2}} for _, i in ipairs(t) do pos.x = pos.x + i.x; pos.z = pos.z + i.z; - if minetest.get_node(pos).name == "ufos:furnace" then - meta = minetest.get_meta(pos) + if minetest.env:get_node(pos).name == "ufos:furnace" then + meta = minetest.env:get_meta(pos) if fuel < 100 and meta:get_int("charge") > 0 then fuel = fuel + 1 meta:set_int("charge",meta:get_int("charge")-1) @@ -237,16 +235,16 @@ minetest.register_node("ufos:box", { tiles = {"ufos_box.png"}, groups = {not_in_creative_inventory=1}, on_rightclick = function(pos, node, clicker, itemstack) - meta = minetest.get_meta(pos) + meta = minetest.env:get_meta(pos) if meta:get_string("owner") == clicker:get_player_name() then -- set owner ufos.next_owner = meta:get_string("owner") -- restore the fuel inside the node ufos.set_fuel(ufos.ufo,meta:get_int("fuel")) -- add the entity - e = minetest.add_entity(pos, "ufos:ufo") + e = minetest.env:add_entity(pos, "ufos:ufo") -- remove the node - minetest.remove_node(pos) + minetest.env:remove_node(pos) -- reset owner for next ufo ufos.next_owner = "" end diff --git a/mods/ufos/mod.conf b/mods/ufos/mod.conf new file mode 100644 index 00000000..1a2906fb --- /dev/null +++ b/mods/ufos/mod.conf @@ -0,0 +1 @@ +dreambuilder_theme_settings diff --git a/mods/unified_inventory/README.md b/mods/unified_inventory/README.md index 8c917ec4..d159c025 100644 --- a/mods/unified_inventory/README.md +++ b/mods/unified_inventory/README.md @@ -24,7 +24,7 @@ Unified Inventory replaces the default survival and creative inventory. ## Requirements - * Minetest 5.0.0+ + * Minetest 5.4.0+ # Licenses @@ -96,4 +96,4 @@ Other files from Wikimedia Commons: RealBadAngel: (CC-BY-4.0) - * Everything else. \ No newline at end of file + * Everything else. diff --git a/mods/unified_inventory/api.lua b/mods/unified_inventory/api.lua index 81dd8f35..277d403e 100644 --- a/mods/unified_inventory/api.lua +++ b/mods/unified_inventory/api.lua @@ -1,5 +1,6 @@ local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape +local ui = unified_inventory -- Create detached creative inventory after loading all mods minetest.after(0.01, function() @@ -8,12 +9,12 @@ minetest.after(0.01, function() if not rev_aliases[target] then rev_aliases[target] = {} end table.insert(rev_aliases[target], source) end - unified_inventory.items_list = {} + ui.items_list = {} for name, def in pairs(minetest.registered_items) do if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then - table.insert(unified_inventory.items_list, name) + table.insert(ui.items_list, name) local all_names = rev_aliases[name] or {} table.insert(all_names, name) for _, player_name in ipairs(all_names) do @@ -26,30 +27,30 @@ minetest.after(0.01, function() for _,chk in pairs(recipe.items) do local groupchk = string.find(chk, "group:") if (not groupchk and not minetest.registered_items[chk]) - or (groupchk and not unified_inventory.get_group_item(string.gsub(chk, "group:", "")).item) + or (groupchk and not ui.get_group_item(string.gsub(chk, "group:", "")).item) or minetest.get_item_group(chk, "not_in_craft_guide") ~= 0 then unknowns = true end end if not unknowns then - unified_inventory.register_craft(recipe) + ui.register_craft(recipe) end end end end end end - table.sort(unified_inventory.items_list) - unified_inventory.items_list_size = #unified_inventory.items_list - print("Unified Inventory. inventory size: "..unified_inventory.items_list_size) - for _, name in ipairs(unified_inventory.items_list) do + table.sort(ui.items_list) + ui.items_list_size = #ui.items_list + print("Unified Inventory. inventory size: "..ui.items_list_size) + for _, name in ipairs(ui.items_list) do local def = minetest.registered_items[name] -- Simple drops if type(def.drop) == "string" then local dstack = ItemStack(def.drop) if not dstack:is_empty() and dstack:get_name() ~= name then - unified_inventory.register_craft({ + ui.register_craft({ type = "digging", items = {name}, output = def.drop, @@ -115,7 +116,7 @@ minetest.after(0.01, function() end end for itemstring, count in pairs(drop_guaranteed) do - unified_inventory.register_craft({ + ui.register_craft({ type = "digging", items = {name}, output = itemstring .. " " .. count, @@ -123,7 +124,7 @@ minetest.after(0.01, function() }) end for itemstring, count in pairs(drop_maybe) do - unified_inventory.register_craft({ + ui.register_craft({ type = "digging_chance", items = {name}, output = itemstring .. " " .. count, @@ -132,22 +133,22 @@ minetest.after(0.01, function() end end end - for _, recipes in pairs(unified_inventory.crafts_for.recipe) do + for _, recipes in pairs(ui.crafts_for.recipe) do for _, recipe in ipairs(recipes) do local ingredient_items = {} for _, spec in pairs(recipe.items) do - local matches_spec = unified_inventory.canonical_item_spec_matcher(spec) - for _, name in ipairs(unified_inventory.items_list) do + local matches_spec = ui.canonical_item_spec_matcher(spec) + for _, name in ipairs(ui.items_list) do if matches_spec(name) then ingredient_items[name] = true end end end for name, _ in pairs(ingredient_items) do - if unified_inventory.crafts_for.usage[name] == nil then - unified_inventory.crafts_for.usage[name] = {} + if ui.crafts_for.usage[name] == nil then + ui.crafts_for.usage[name] = {} end - table.insert(unified_inventory.crafts_for.usage[name], recipe) + table.insert(ui.crafts_for.usage[name], recipe) end end end @@ -156,9 +157,9 @@ end) -- load_home local function load_home() - local input = io.open(unified_inventory.home_filename, "r") + local input = io.open(ui.home_filename, "r") if not input then - unified_inventory.home_pos = {} + ui.home_pos = {} return end while true do @@ -167,25 +168,25 @@ local function load_home() local y = input:read("*n") local z = input:read("*n") local name = input:read("*l") - unified_inventory.home_pos[name:sub(2)] = {x = x, y = y, z = z} + ui.home_pos[name:sub(2)] = {x = x, y = y, z = z} end io.close(input) end load_home() -function unified_inventory.set_home(player, pos) +function ui.set_home(player, pos) local player_name = player:get_player_name() - unified_inventory.home_pos[player_name] = vector.round(pos) + ui.home_pos[player_name] = vector.round(pos) -- save the home data from the table to the file - local output = io.open(unified_inventory.home_filename, "w") - for k, v in pairs(unified_inventory.home_pos) do + local output = io.open(ui.home_filename, "w") + for k, v in pairs(ui.home_pos) do output:write(v.x.." "..v.y.." "..v.z.." "..k.."\n") end io.close(output) end -function unified_inventory.go_home(player) - local pos = unified_inventory.home_pos[player:get_player_name()] +function ui.go_home(player) + local pos = ui.home_pos[player:get_player_name()] if pos then player:set_pos(pos) return true @@ -194,7 +195,7 @@ function unified_inventory.go_home(player) end -- register_craft -function unified_inventory.register_craft(options) +function ui.register_craft(options) if not options.output then return end @@ -205,10 +206,10 @@ function unified_inventory.register_craft(options) if options.type == "normal" and options.width == 0 then options = { type = "shapeless", items = options.items, output = options.output, width = 0 } end - if not unified_inventory.crafts_for.recipe[itemstack:get_name()] then - unified_inventory.crafts_for.recipe[itemstack:get_name()] = {} + if not ui.crafts_for.recipe[itemstack:get_name()] then + ui.crafts_for.recipe[itemstack:get_name()] = {} end - table.insert(unified_inventory.crafts_for.recipe[itemstack:get_name()],options) + table.insert(ui.crafts_for.recipe[itemstack:get_name()],options) end @@ -219,7 +220,7 @@ local craft_type_defaults = { } -function unified_inventory.craft_type_defaults(name, options) +function ui.craft_type_defaults(name, options) if not options.description then options.description = name end @@ -228,13 +229,13 @@ function unified_inventory.craft_type_defaults(name, options) end -function unified_inventory.register_craft_type(name, options) - unified_inventory.registered_craft_types[name] = - unified_inventory.craft_type_defaults(name, options) +function ui.register_craft_type(name, options) + ui.registered_craft_types[name] = + ui.craft_type_defaults(name, options) end -unified_inventory.register_craft_type("normal", { +ui.register_craft_type("normal", { description = F(S("Crafting")), icon = "ui_craftgrid_icon.png", width = 3, @@ -250,7 +251,7 @@ unified_inventory.register_craft_type("normal", { }) -unified_inventory.register_craft_type("shapeless", { +ui.register_craft_type("shapeless", { description = F(S("Mixing")), icon = "ui_craftgrid_icon.png", width = 3, @@ -265,7 +266,7 @@ unified_inventory.register_craft_type("shapeless", { }) -unified_inventory.register_craft_type("cooking", { +ui.register_craft_type("cooking", { description = F(S("Cooking")), icon = "default_furnace_front.png", width = 1, @@ -273,37 +274,60 @@ unified_inventory.register_craft_type("cooking", { }) -unified_inventory.register_craft_type("digging", { +ui.register_craft_type("digging", { description = F(S("Digging")), icon = "default_tool_steelpick.png", width = 1, height = 1, }) -unified_inventory.register_craft_type("digging_chance", { +ui.register_craft_type("digging_chance", { description = "Digging (by chance)", icon = "default_tool_steelpick.png^[transformFY.png", width = 1, height = 1, }) -function unified_inventory.register_page(name, def) - unified_inventory.pages[name] = def +function ui.register_page(name, def) + ui.pages[name] = def end -function unified_inventory.register_button(name, def) +function ui.register_button(name, def) if not def.action then def.action = function(player) - unified_inventory.set_inventory_formspec(player, name) + ui.set_inventory_formspec(player, name) end end def.name = name - table.insert(unified_inventory.buttons, def) + table.insert(ui.buttons, def) end - -function unified_inventory.is_creative(playername) +function ui.is_creative(playername) return minetest.check_player_privs(playername, {creative=true}) or minetest.settings:get_bool("creative_mode") end + +function ui.single_slot(xpos, ypos, bright) + return string.format("background9[%f,%f;%f,%f;"..dreambuilder_theme.name.."_ui_single_slot%s.png;false;16]", + xpos, ypos, ui.imgscale, ui.imgscale, (bright and "_bright" or "") ) +end + +function ui.make_trash_slot(xpos, ypos) + return + ui.single_slot(xpos, ypos).. + "image["..xpos..","..ypos..";1.25,1.25;"..dreambuilder_theme.name.."_ui_trash_slot_icon.png^[opacity:95]".. + "list[detached:trash;main;"..(xpos + ui.list_img_offset)..","..(ypos + ui.list_img_offset)..";1,1;]" +end + +function ui.make_inv_img_grid(xpos, ypos, width, height, bright) + local tiled = {} + local n=1 + for y = 0, (height - 1) do + for x = 0, (width -1) do + tiled[n] = ui.single_slot(xpos + (ui.imgscale * x), ypos + (ui.imgscale * y), bright) + n = n + 1 + end + end + return table.concat(tiled) +end diff --git a/mods/unified_inventory/bags.lua b/mods/unified_inventory/bags.lua index cb3ee45c..f9993d55 100644 --- a/mods/unified_inventory/bags.lua +++ b/mods/unified_inventory/bags.lua @@ -7,30 +7,33 @@ License: GPLv3 local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape -local bags_inv_bg_prefix = "image[-0.1,1.0;10.05," +local ui = unified_inventory -unified_inventory.register_page("bags", { +ui.register_page("bags", { get_formspec = function(player) local player_name = player:get_player_name() return { formspec = table.concat({ - string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4"), - bags_inv_bg_prefix.."1.175;ui_bags_header.png]", + ui.style_full.standard_inv_bg, + ui.single_slot(0.925, 1.5), + ui.single_slot(3.425, 1.5), + ui.single_slot(5.925, 1.5), + ui.single_slot(8.425, 1.5), "style_type[button;bgcolor="..dreambuilder_theme.btn_color.."]", - "label[0,0;" .. F(S("Bags")) .. "]", - "button[0,2.2;2,0.5;bag1;" .. F(S("Bag @1", 1)) .. "]", - "button[2,2.2;2,0.5;bag2;" .. F(S("Bag @1", 2)) .. "]", - "button[4,2.2;2,0.5;bag3;" .. F(S("Bag @1", 3)) .. "]", - "button[6,2.2;2,0.5;bag4;" .. F(S("Bag @1", 4)) .. "]", + "label["..ui.style_full.form_header_x..","..ui.style_full.form_header_y..";" .. F(S("Bags")) .. "]", + "button[0.6125,2.75;1.875,0.75;bag1;" .. F(S("Bag @1", 1)) .. "]", + "button[3.1125,2.75;1.875,0.75;bag2;" .. F(S("Bag @1", 2)) .. "]", + "button[5.6125,2.75;1.875,0.75;bag3;" .. F(S("Bag @1", 3)) .. "]", + "button[8.1125,2.75;1.875,0.75;bag4;" .. F(S("Bag @1", 4)) .. "]", "", - "list[detached:" .. F(player_name) .. "_bags;bag1;0.5,1.1;1,1;]", - "list[detached:" .. F(player_name) .. "_bags;bag2;2.5,1.1;1,1;]", - "list[detached:" .. F(player_name) .. "_bags;bag3;4.5,1.1;1,1;]", - "list[detached:" .. F(player_name) .. "_bags;bag4;6.5,1.1;1,1;]" + "list[detached:" .. F(player_name) .. "_bags;bag1;1.075,1.65;1,1;]", + "list[detached:" .. F(player_name) .. "_bags;bag2;3.575,1.65;1,1;]", + "list[detached:" .. F(player_name) .. "_bags;bag3;6.075,1.65;1,1;]", + "list[detached:" .. F(player_name) .. "_bags;bag4;8.575,1.65;1,1;]" }) } end, }) -unified_inventory.register_button("bags", { +ui.register_button("bags", { type = "image", image = "ui_bags_icon.png", tooltip = S("Bags"), @@ -45,33 +48,31 @@ local function get_player_bag_stack(player, i) end for bag_i = 1, 4 do - unified_inventory.register_page("bag" .. bag_i, { + ui.register_page("bag" .. bag_i, { get_formspec = function(player) local stack = get_player_bag_stack(player, bag_i) local image = stack:get_definition().inventory_image - local fs = { - string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4"), - "image[7,0;1,1;" .. image .. "]", - "label[0,0;" .. F(S("Bag @1", bag_i)) .. "]", - "", - "list[current_player;bag" .. bag_i .. "contents;0,1.1;8,3;]", - "listring[current_name;bag" .. bag_i .. "contents]", - "listring[current_player;main]", - } local slots = stack:get_definition().groups.bagslots - if slots == 8 then - fs[#fs + 1] = bags_inv_bg_prefix.."1.175;ui_bags_inv_small.png]" - elseif slots == 16 then - fs[#fs + 1] = bags_inv_bg_prefix.."2.35;ui_bags_inv_medium.png]" - elseif slots == 24 then - fs[#fs + 1] = bags_inv_bg_prefix.."3.525;ui_bags_inv_large.png]" - end + + local formspec = { + ui.style_full.standard_inv_bg, + ui.make_inv_img_grid(0.3, 1.5, 8, slots/8), + "image[9.2,0.4;1,1;" .. image .. "]", + "label[0.3,0.65;" .. F(S("Bag @1", bag_i)) .. "]", + "", + "listring[current_player;main]", + string.format("list[current_player;bag%icontents;%f,%f;8,3;]", + bag_i, 0.3 + ui.list_img_offset, 1.5 + ui.list_img_offset), + "listring[current_name;bag" .. bag_i .. "contents]", + } + local n = #formspec + 1 + local player_name = player:get_player_name() -- For if statement. - if unified_inventory.trash_enabled - or unified_inventory.is_creative(player_name) - or minetest.get_player_privs(player_name).give then - fs[#fs + 1] = "image[5.91,-0.06;1.21,1.15;ui_bags_trash.png]" - .. "list[detached:trash;main;6,0.1;1,1;]" + if ui.trash_enabled + or ui.is_creative(player_name) + or minetest.get_player_privs(player_name).give then + formspec[n] = ui.make_trash_slot(7.8, 0.25) + n = n + 1 end local inv = player:get_inventory() for i = 1, 4 do @@ -88,11 +89,12 @@ for bag_i = 1, 4 do end local img = def.inventory_image local label = F(S("Bag @1", i)) .. "\n" .. used .. "/" .. size - fs[#fs + 1] = string.format("image_button[%i,0;1,1;%s;bag%i;%s]", - i + 1, img, i, label) + formspec[n] = string.format("image_button[%f,0.4;1,1;%s;bag%i;%s]", + (i + 1.35)*1.25, img, i, label) + n = n + 1 end end - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } end, }) end @@ -107,7 +109,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) if not stack:get_definition().groups.bagslots then return end - unified_inventory.set_inventory_formspec(player, "bag" .. i) + ui.set_inventory_formspec(player, "bag" .. i) return end end @@ -136,7 +138,7 @@ end local function load_bags_metadata(player, bags_inv) local player_inv = player:get_inventory() local meta = player:get_meta() - local bags_meta = meta:get_string("unified_inventory:bags") + local bags_meta = meta:get("unified_inventory:bags") local bags = bags_meta and minetest.deserialize(bags_meta) or {} local dirty_meta = false if not bags_meta then diff --git a/mods/unified_inventory/doc/mod_api.txt b/mods/unified_inventory/doc/mod_api.txt index c0be129b..0d100a08 100644 --- a/mods/unified_inventory/doc/mod_api.txt +++ b/mods/unified_inventory/doc/mod_api.txt @@ -3,6 +3,14 @@ unified_inventory API This file provides information about the API of unified_inventory. +API revisions within unified_inventory can be checked using: + + (unified_inventory.version or 1) + +**Revision history** + +* Version `1`: Classic formspec layout (no real_coordinates) +* Version `2`: Force formspec version 4 (includes real_coordinates) Misc functions -------------- diff --git a/mods/unified_inventory/init.lua b/mods/unified_inventory/init.lua index 7be101cd..614628f8 100644 --- a/mods/unified_inventory/init.lua +++ b/mods/unified_inventory/init.lua @@ -35,21 +35,101 @@ unified_inventory = { -- Trash enabled trash_enabled = (minetest.settings:get_bool("unified_inventory_trash") ~= false), + imgscale = 1.25, + list_img_offset = 0.13, + standard_background = "background9[0,0;1,1;"..dreambuilder_theme.name.."_ui_formbg_9_sliced.png;true;16]", + version = 2 +} +local ui = unified_inventory + +-- These tables establish position and layout for the two UI styles. +-- UI doesn't use formspec_[xy] anymore, but other mods may need them. + +ui.style_full = { + formspec_x = 1, + formspec_y = 1, pagecols = 8, pagerows = 10, - page_y = 0, - formspec_y = 1, - main_button_x = 0, - main_button_y = 9, - craft_result_x = 0.3, - craft_result_y = 0.5, - form_header_y = 0, - standard_background = "background[-0.2,-0.2;1,1;ui_form_bg.png;true]", -- the 'true' scales to fill, overrides the 1,1 - standard_inv = "list[current_player;main;0,YYY;8,4;]", -- the YYY's are placeholders which get - standard_inv_bg = "image[-0.1,YYY;10.05,4.70;ui_main_inventory.png]", -- replaced later by string.gsub() + page_x = 10.75, + page_y = 1.45, + craft_x = 2.8, + craft_y = 1.15, + craftresult_x = 7.8, + craft_arrow_x = 6.55, + craft_guide_x = 3.3, + craft_guide_y = 1.15, + craft_guide_arrow_x = 7.05, + craft_guide_result_x = 8.3, + craft_guide_resultstr_x = 0.3, + craft_guide_resultstr_y = 0.6, + give_btn_x = 0.25, + main_button_x = 0.4, + main_button_y = 11.0, + page_buttons_x = 11.60, + page_buttons_y = 10.15, + searchwidth = 3.4, + form_header_x = 0.4, + form_header_y = 0.4, + btn_spc = 0.85, + btn_size = 0.75, + std_inv_x = 0.3, + std_inv_y = 5.75, } +ui.style_lite = { + formspec_x = 0.6, + formspec_y = 0.6, + pagecols = 4, + pagerows = 6, + page_x = 10.5, + page_y = 1.25, + craft_x = 2.6, + craft_y = 0.75, + craftresult_x = 5.75, + craft_arrow_x = 6.35, + craft_guide_x = 3.1, + craft_guide_y = 0.75, + craft_guide_arrow_x = 7.05, + craft_guide_result_x = 8.3, + craft_guide_resultstr_x = 0.15, + craft_guide_resultstr_y = 0.35, + give_btn_x = 0.15, + main_button_x = 10.5, + main_button_y = 7.9, + page_buttons_x = 10.5, + page_buttons_y = 6.3, + searchwidth = 1.6, + form_header_x = 0.2, + form_header_y = 0.2, + btn_spc = 0.8, + btn_size = 0.7, + std_inv_x = 0.1, + std_inv_y = 4.6, +} + +dofile(modpath.."/api.lua") + +for _, style in ipairs({ui.style_full, ui.style_lite}) do + style.items_per_page = style.pagecols * style.pagerows + style.standard_inv = string.format("list[current_player;main;%f,%f;8,4;]", + style.std_inv_x + ui.list_img_offset, style.std_inv_y + ui.list_img_offset) + + style.standard_inv_bg = ui.make_inv_img_grid(style.std_inv_x, style.std_inv_y, 8, 1, true).. + ui.make_inv_img_grid(style.std_inv_x, style.std_inv_y + ui.imgscale, 8, 3) + + style.craft_grid = table.concat({ + ui.make_inv_img_grid(style.craft_x, style.craft_y, 3, 3), + ui.single_slot(style.craft_x + ui.imgscale*4, style.craft_y), -- the craft result slot + string.format("image[%f,%f;%f,%f;ui_crafting_arrow.png]", + style.craft_arrow_x, style.craft_y, ui.imgscale, ui.imgscale), + string.format("list[current_player;craft;%f,%f;3,3;]", + style.craft_x + ui.list_img_offset, style.craft_y + ui.list_img_offset), + string.format("list[current_player;craftpreview;%f,%f;1,1;]", + style.craftresult_x + ui.list_img_offset, style.craft_y + ui.list_img_offset) + }) +end + -- Disable default creative inventory local creative = rawget(_G, "creative") or rawget(_G, "creative_inventory") if creative then @@ -65,7 +145,6 @@ if sfinv then end dofile(modpath.."/group.lua") -dofile(modpath.."/api.lua") dofile(modpath.."/internal.lua") dofile(modpath.."/callbacks.lua") dofile(modpath.."/match_craft.lua") diff --git a/mods/unified_inventory/internal.lua b/mods/unified_inventory/internal.lua index 1308e464..6c033107 100644 --- a/mods/unified_inventory/internal.lua +++ b/mods/unified_inventory/internal.lua @@ -1,5 +1,6 @@ local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape +local ui = unified_inventory -- This pair of encoding functions is used where variable text must go in -- button names, where the text might contain formspec metacharacters. @@ -9,87 +10,58 @@ local F = minetest.formspec_escape -- This is a game engine bug, and in the anticipation that it might be -- fixed some day we don't want to rely on it. So for safety we apply -- an encoding that avoids all formspec metacharacters. -function unified_inventory.mangle_for_formspec(str) + +function ui.mangle_for_formspec(str) return string.gsub(str, "([^A-Za-z0-9])", function (c) return string.format("_%d_", string.byte(c)) end) end -function unified_inventory.demangle_for_formspec(str) +function ui.demangle_for_formspec(str) return string.gsub(str, "_([0-9]+)_", function (v) return string.char(v) end) end -function unified_inventory.get_per_player_formspec(player_name) - local lite = unified_inventory.lite_mode and not minetest.check_player_privs(player_name, {ui_full=true}) - local ui = {} - ui.pagecols = unified_inventory.pagecols - ui.pagerows = unified_inventory.pagerows - ui.page_y = unified_inventory.page_y - ui.formspec_y = unified_inventory.formspec_y - ui.main_button_x = unified_inventory.main_button_x - ui.main_button_y = unified_inventory.main_button_y - ui.craft_result_x = unified_inventory.craft_result_x - ui.craft_result_y = unified_inventory.craft_result_y - ui.form_header_y = unified_inventory.form_header_y +function ui.get_per_player_formspec(player_name) + local draw_lite_mode = ui.lite_mode and not minetest.check_player_privs(player_name, {ui_full=true}) - if lite then - ui.pagecols = 4 - ui.pagerows = 6 - ui.page_y = 0.25 - ui.formspec_y = 0.47 - ui.main_button_x = 8.2 - ui.main_button_y = 6.5 - ui.craft_result_x = 2.8 - ui.craft_result_y = 3.4 - ui.form_header_y = -0.1 - end - - ui.items_per_page = ui.pagecols * ui.pagerows - return ui, lite + return table.copy(draw_lite_mode and ui.style_lite or ui.style_full), draw_lite_mode end -function unified_inventory.get_formspec(player, page) +function ui.get_formspec(player, page) if not player then return "" end local player_name = player:get_player_name() - local ui_peruser,draw_lite_mode = unified_inventory.get_per_player_formspec(player_name) + local ui_peruser,draw_lite_mode = ui.get_per_player_formspec(player_name) - unified_inventory.current_page[player_name] = page - local pagedef = unified_inventory.pages[page] + ui.current_page[player_name] = page + local pagedef = ui.pages[page] if not pagedef then return "" -- Invalid page name end local formspec = { - "size[14,10]", + "formspec_version[4]size[17.75,12.25]", pagedef.formspec_prepend and "" or "no_prepend[]", - unified_inventory.standard_background -- Background + ui.standard_background -- Background } - formspec[4]="style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.."]" - formspec[5]= - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "" - local n = 6 + local n = 4 if draw_lite_mode then - formspec[1] = "size[11,7.7]" - formspec[3] = unified_inventory.standard_background + formspec[1] = "formspec_version[4]size[14,9.75]" + formspec[3] = ui.standard_background end - if unified_inventory.is_creative(player_name) - and page == "craft" then - formspec[n] = "background[0,"..(ui_peruser.formspec_y + 2)..";1,1;default_single_slot.png]" - n = n+1 - end - - local perplayer_formspec = unified_inventory.get_per_player_formspec(player_name) + local perplayer_formspec = ui.get_per_player_formspec(player_name) local fsdata = pagedef.get_formspec(player, perplayer_formspec) formspec[n] = fsdata.formspec + formspec[n+1]="style_type[image_button;bgcolor="..dreambuilder_theme.btn_color.."]" + formspec[n+2]= + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + "" + n = n + 2 n = n+1 local button_row = 0 @@ -99,7 +71,7 @@ function unified_inventory.get_formspec(player, page) local filtered_inv_buttons = {} - for i, def in pairs(unified_inventory.buttons) do + for i, def in pairs(ui.buttons) do if not (draw_lite_mode and def.hide_lite) then table.insert(filtered_inv_buttons, def) end @@ -114,21 +86,20 @@ function unified_inventory.get_formspec(player, page) if def.type == "image" then if (def.condition == nil or def.condition(player) == true) then - formspec[n] = "image_button[" - formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (i - 1) - button_col * 0.65 * 4) - formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * 0.7)..";0.8,0.8;" - formspec[n+3] = F(def.image)..";" - formspec[n+4] = F(def.name)..";]" - formspec[n+5] = "tooltip["..F(def.name) - formspec[n+6] = ";"..(def.tooltip or "").."]" - n = n+7 + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s;]", + ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4, + ui_peruser.main_button_y + button_row * ui_peruser.btn_spc, + ui_peruser.btn_size,ui_peruser.btn_size, + F(def.image), + F(def.name)) + formspec[n+1] = "tooltip["..F(def.name)..";"..(def.tooltip or "").."]" + n = n+2 else - formspec[n] = "image[" - formspec[n+1] = ( ui_peruser.main_button_x + 0.65 * (i - 1) - button_col * 0.65 * 4) - formspec[n+2] = ","..(ui_peruser.main_button_y + button_row * 0.7)..";0.8,0.8;" - formspec[n+3] = F(def.image).."^[colorize:#808080:alpha]" - n = n+4 - + formspec[n] = string.format("image[%f,%f;%f,%f;%s^[colorize:#808080:alpha]", + ui_peruser.main_button_x + ui_peruser.btn_spc * (i - 1) - button_col * ui_peruser.btn_spc * 4, + ui_peruser.main_button_y + button_row * ui_peruser.btn_spc, + ui_peruser.btn_size,ui_peruser.btn_size,def.image) + n = n+1 end end end @@ -136,7 +107,7 @@ function unified_inventory.get_formspec(player, page) if fsdata.draw_inventory ~= false then -- Player inventory formspec[n] = "" - formspec[n+1] = string.gsub(unified_inventory.standard_inv, "YYY", ui_peruser.formspec_y + 3.5) + formspec[n+1] = ui_peruser.standard_inv n = n+2 end @@ -144,71 +115,52 @@ function unified_inventory.get_formspec(player, page) return table.concat(formspec, "") end - -- Controls to flip items pages - local start_x = 9.2 - - if not draw_lite_mode then - formspec[n] = - "image_button[" .. (start_x + 0.6 * 0) - .. ",9;.8,.8;ui_skip_backward_icon.png;start_list;]" - .. "tooltip[start_list;" .. F(S("First page")) .. "]" - - .. "image_button[" .. (start_x + 0.6 * 1) - .. ",9;.8,.8;ui_doubleleft_icon.png;rewind3;]" - .. "tooltip[rewind3;" .. F(S("Back three pages")) .. "]" - .. "image_button[" .. (start_x + 0.6 * 2) - .. ",9;.8,.8;ui_left_icon.png;rewind1;]" - .. "tooltip[rewind1;" .. F(S("Back one page")) .. "]" - - .. "image_button[" .. (start_x + 0.6 * 3) - .. ",9;.8,.8;ui_right_icon.png;forward1;]" - .. "tooltip[forward1;" .. F(S("Forward one page")) .. "]" - .. "image_button[" .. (start_x + 0.6 * 4) - .. ",9;.8,.8;ui_doubleright_icon.png;forward3;]" - .. "tooltip[forward3;" .. F(S("Forward three pages")) .. "]" - - .. "image_button[" .. (start_x + 0.6 * 5) - .. ",9;.8,.8;ui_skip_forward_icon.png;end_list;]" - .. "tooltip[end_list;" .. F(S("Last page")) .. "]" - else - formspec[n] = - "image_button[" .. (8.2 + 0.65 * 0) - .. ",5.8;.8,.8;ui_skip_backward_icon.png;start_list;]" - .. "tooltip[start_list;" .. F(S("First page")) .. "]" - .. "image_button[" .. (8.2 + 0.65 * 1) - .. ",5.8;.8,.8;ui_left_icon.png;rewind1;]" - .. "tooltip[rewind1;" .. F(S("Back one page")) .. "]" - .. "image_button[" .. (8.2 + 0.65 * 2) - .. ",5.8;.8,.8;ui_right_icon.png;forward1;]" - .. "tooltip[forward1;" .. F(S("Forward one page")) .. "]" - .. "image_button[" .. (8.2 + 0.65 * 3) - .. ",5.8;.8,.8;ui_skip_forward_icon.png;end_list;]" - .. "tooltip[end_list;" .. F(S("Last page")) .. "]" - end - n = n+1 - -- Search box formspec[n] = "field_close_on_enter[searchbox;false]" - n = n+1 - if not draw_lite_mode then - formspec[n] = "field[9.5,8.325;3,1;searchbox;;" - .. F(unified_inventory.current_searchbox[player_name]) .. "]" - formspec[n+1] = "image_button[12.2,8.1;.8,.8;ui_search_icon.png;searchbutton;]" - .. "tooltip[searchbutton;" ..F(S("Search")) .. "]" - formspec[n+2] = "image_button[12.9,8.1;.8,.8;ui_reset_icon.png;searchresetbutton;]" - .. "tooltip[searchbutton;" ..F(S("Search")) .. "]" - .. "tooltip[searchresetbutton;" ..F(S("Reset search and display everything")) .. "]" - else - formspec[n] = "field[8.5,5.225;2.2,1;searchbox;;" - .. F(unified_inventory.current_searchbox[player_name]) .. "]" - formspec[n+1] = "image_button[10.3,5;.8,.8;ui_search_icon.png;searchbutton;]" - .. "tooltip[searchbutton;" ..F(S("Search")) .. "]" - formspec[n+2] = "image_button[11,5;.8,.8;ui_reset_icon.png;searchresetbutton;]" - .. "tooltip[searchbutton;" ..F(S("Search")) .. "]" - .. "tooltip[searchresetbutton;" ..F(S("Reset search and display everything")) .. "]" + formspec[n+1] = string.format("field[%f,%f;%f,%f;searchbox;;%s]", + ui_peruser.page_buttons_x, ui_peruser.page_buttons_y, + ui_peruser.searchwidth - 0.1, ui_peruser.btn_size, + F(ui.current_searchbox[player_name])) + formspec[n+2] = string.format("image_button[%f,%f;%f,%f;ui_search_icon.png;searchbutton;]", + ui_peruser.page_buttons_x + ui_peruser.searchwidth, ui_peruser.page_buttons_y, + ui_peruser.btn_size,ui_peruser.btn_size) + formspec[n+3] = "tooltip[searchbutton;" ..F(S("Search")) .. "]" + formspec[n+4] = string.format("image_button[%f,%f;%f,%f;ui_reset_icon.png;searchresetbutton;]", + ui_peruser.page_buttons_x + ui_peruser.searchwidth + ui_peruser.btn_spc, + ui_peruser.page_buttons_y, + ui_peruser.btn_size, ui_peruser.btn_size) + formspec[n+5] = "tooltip[searchresetbutton;"..F(S("Reset search and display everything")).."]" + + n = n + 6 + + -- Controls to flip items pages + + local btnlist = { + { "ui_skip_backward_icon.png", "start_list", S("First page") }, + { "ui_doubleleft_icon.png", "rewind3", S("Back three pages") }, + { "ui_left_icon.png", "rewind1", S("Back one page") }, + { "ui_right_icon.png", "forward1", S("Forward one page") }, + { "ui_doubleright_icon.png", "forward3", S("Forward three pages") }, + { "ui_skip_forward_icon.png", "end_list", S("Last page") }, + } + + if draw_lite_mode then + btnlist[5] = nil + btnlist[2] = nil + end + + local bn = 0 + for _, b in pairs(btnlist) do + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s;]", + ui_peruser.page_buttons_x + ui_peruser.btn_spc*bn, + ui_peruser.page_buttons_y + ui_peruser.btn_spc, + ui_peruser.btn_size, ui_peruser.btn_size, + b[1],b[2]) + formspec[n+1] = "tooltip["..b[2]..";"..F(b[3]).."]" + bn = bn + 1 + n = n + 2 end - n = n+3 local no_matches = S("No matching items") if draw_lite_mode then @@ -216,23 +168,23 @@ function unified_inventory.get_formspec(player, page) end -- Items list - if #unified_inventory.filtered_items_list[player_name] == 0 then - formspec[n] = "label[8.2,"..ui_peruser.form_header_y..";" .. F(no_matches) .. "]" + if #ui.filtered_items_list[player_name] == 0 then + formspec[n] = "label["..ui_peruser.page_x..","..(ui_peruser.page_y+0.15)..";" .. F(no_matches) .. "]" else - local dir = unified_inventory.active_search_direction[player_name] - local list_index = unified_inventory.current_index[player_name] + local dir = ui.active_search_direction[player_name] + local list_index = ui.current_index[player_name] local page2 = math.floor(list_index / (ui_peruser.items_per_page) + 1) local pagemax = math.floor( - (#unified_inventory.filtered_items_list[player_name] - 1) + (#ui.filtered_items_list[player_name] - 1) / (ui_peruser.items_per_page) + 1) for y = 0, ui_peruser.pagerows - 1 do for x = 0, ui_peruser.pagecols - 1 do - local name = unified_inventory.filtered_items_list[player_name][list_index] + local name = ui.filtered_items_list[player_name][list_index] local item = minetest.registered_items[name] if item then -- Clicked on current item: Flip crafting direction - if name == unified_inventory.current_item[player_name] then - local cdir = unified_inventory.current_craft_direction[player_name] + if name == ui.current_item[player_name] then + local cdir = ui.current_craft_direction[player_name] if cdir == "recipe" then dir = "usage" elseif cdir == "usage" then @@ -240,13 +192,15 @@ function unified_inventory.get_formspec(player, page) end else -- Default: use active search direction by default - dir = unified_inventory.active_search_direction[player_name] + dir = ui.active_search_direction[player_name] end local button_name = "item_button_" .. dir .. "_" - .. unified_inventory.mangle_for_formspec(name) - formspec[n] = ("item_image_button[%f,%f;.81,.81;%s;%s;]"):format( - 8.2 + x * 0.7, ui_peruser.formspec_y + ui_peruser.page_y + y * 0.7, + .. ui.mangle_for_formspec(name) + formspec[n] = ("item_image_button[%f,%f;%f,%f;%s;%s;]"):format( + ui_peruser.page_x + x * ui_peruser.btn_spc, + ui_peruser.page_y + y * ui_peruser.btn_spc, + ui_peruser.btn_size, ui_peruser.btn_size, name, button_name ) formspec[n + 1] = ("tooltip[%s;%s \\[%s\\]]"):format( @@ -258,26 +212,29 @@ function unified_inventory.get_formspec(player, page) end end end - formspec[n] = "label[8.2,"..ui_peruser.form_header_y..";"..F(S("Page")) .. ": " - .. S("@1 of @2",page2,pagemax).."]" + formspec[n] = string.format("label[%f,%f;%s: %s]", + ui_peruser.page_x, ui_peruser.form_header_y, + F(S("Page")), S("@1 of @2",page2,pagemax)) end n= n+1 - if unified_inventory.activefilter[player_name] ~= "" then - formspec[n] = "label[8.2,"..(ui_peruser.form_header_y + 0.4)..";" .. F(S("Filter")) .. ":]" - formspec[n+1] = "label[9.1,"..(ui_peruser.form_header_y + 0.4)..";"..F(unified_inventory.activefilter[player_name]).."]" + if ui.activefilter[player_name] ~= "" then + formspec[n] = string.format("label[%f,%f;%s:]", + ui_peruser.page_x, ui_peruser.page_y - 0.65, F(S("Filter"))) + formspec[n+1] = string.format("label[%f,%f;%s]", + ui_peruser.page_x, ui_peruser.page_y - 0.25, F(ui.activefilter[player_name])) end return table.concat(formspec, "") end -function unified_inventory.set_inventory_formspec(player, page) +function ui.set_inventory_formspec(player, page) if player then - player:set_inventory_formspec(unified_inventory.get_formspec(player, page)) + player:set_inventory_formspec(ui.get_formspec(player, page)) end end --apply filter to the inventory list (create filtered copy of full one) -function unified_inventory.apply_filter(player, filter, search_dir) +function ui.apply_filter(player, filter, search_dir) if not player then return false end @@ -306,26 +263,26 @@ function unified_inventory.apply_filter(player, filter, search_dir) or llocaldesc and string.find(llocaldesc, lfilter, 1, true) end end - unified_inventory.filtered_items_list[player_name]={} + ui.filtered_items_list[player_name]={} for name, def in pairs(minetest.registered_items) do if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" and ffilter(name, def) then - table.insert(unified_inventory.filtered_items_list[player_name], name) + table.insert(ui.filtered_items_list[player_name], name) end end - table.sort(unified_inventory.filtered_items_list[player_name]) - unified_inventory.filtered_items_list_size[player_name] = #unified_inventory.filtered_items_list[player_name] - unified_inventory.current_index[player_name] = 1 - unified_inventory.activefilter[player_name] = filter - unified_inventory.active_search_direction[player_name] = search_dir - unified_inventory.set_inventory_formspec(player, - unified_inventory.current_page[player_name]) + table.sort(ui.filtered_items_list[player_name]) + ui.filtered_items_list_size[player_name] = #ui.filtered_items_list[player_name] + ui.current_index[player_name] = 1 + ui.activefilter[player_name] = filter + ui.active_search_direction[player_name] = search_dir + ui.set_inventory_formspec(player, + ui.current_page[player_name]) end -function unified_inventory.items_in_group(groups) +function ui.items_in_group(groups) local items = {} for name, item in pairs(minetest.registered_items) do for _, group in pairs(groups:split(',')) do @@ -337,7 +294,7 @@ function unified_inventory.items_in_group(groups) return items end -function unified_inventory.sort_inventory(inv) +function ui.sort_inventory(inv) local inlist = inv:get_list("main") local typecnt = {} local typekeys = {} diff --git a/mods/unified_inventory/mod.conf b/mods/unified_inventory/mod.conf index 03a5f8e1..91e8cb35 100644 --- a/mods/unified_inventory/mod.conf +++ b/mods/unified_inventory/mod.conf @@ -1,7 +1,8 @@ name = unified_inventory -depends = dreambuilder_gui_theming, default +depends = dreambuilder_theme_settings, default optional_depends = creative, sfinv, datastorage, farming description = """ Unified Inventory replaces the default survival and creative inventory. It adds a nicer interface and a number of features, such as a crafting guide. """ +min_minetest_version = 5.4.0 diff --git a/mods/unified_inventory/register.lua b/mods/unified_inventory/register.lua index 89ca1ab3..52ccea03 100644 --- a/mods/unified_inventory/register.lua +++ b/mods/unified_inventory/register.lua @@ -1,6 +1,7 @@ local S = minetest.get_translator("unified_inventory") local NS = function(s) return s end local F = minetest.formspec_escape +local ui = unified_inventory minetest.register_privilege("creative", { description = S("Can use the creative inventory"), @@ -12,10 +13,9 @@ minetest.register_privilege("ui_full", { give_to_singleplayer = false, }) - local trash = minetest.create_detached_inventory("trash", { --allow_put = function(inv, listname, index, stack, player) - -- if unified_inventory.is_creative(player:get_player_name()) then + -- if ui.is_creative(player:get_player_name()) then -- return stack:get_count() -- else -- return 0 @@ -29,19 +29,19 @@ local trash = minetest.create_detached_inventory("trash", { }) trash:set_size("main", 1) -unified_inventory.register_button("craft", { +ui.register_button("craft", { type = "image", image = "ui_craft_icon.png", tooltip = S("Crafting Grid") }) -unified_inventory.register_button("craftguide", { +ui.register_button("craftguide", { type = "image", image = "ui_craftguide_icon.png", tooltip = S("Crafting Guide") }) -unified_inventory.register_button("home_gui_set", { +ui.register_button("home_gui_set", { type = "image", image = "ui_sethome_icon.png", tooltip = S("Set home position"), @@ -49,8 +49,8 @@ unified_inventory.register_button("home_gui_set", { action = function(player) local player_name = player:get_player_name() if minetest.check_player_privs(player_name, {home=true}) then - unified_inventory.set_home(player, player:get_pos()) - local home = unified_inventory.home_pos[player_name] + ui.set_home(player, player:get_pos()) + local home = ui.home_pos[player_name] if home ~= nil then minetest.sound_play("dingdong", {to_player=player_name, gain = 1.0}) @@ -60,7 +60,7 @@ unified_inventory.register_button("home_gui_set", { else minetest.chat_send_player(player_name, S("You don't have the \"home\" privilege!")) - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) end end, condition = function(player) @@ -68,7 +68,7 @@ unified_inventory.register_button("home_gui_set", { end, }) -unified_inventory.register_button("home_gui_go", { +ui.register_button("home_gui_go", { type = "image", image = "ui_gohome_icon.png", tooltip = S("Go home"), @@ -76,13 +76,13 @@ unified_inventory.register_button("home_gui_go", { action = function(player) local player_name = player:get_player_name() if minetest.check_player_privs(player_name, {home=true}) then - if unified_inventory.go_home(player) then + if ui.go_home(player) then minetest.sound_play("teleport", {to_player = player_name}) end else minetest.chat_send_player(player_name, S("You don't have the \"home\" privilege!")) - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) end end, condition = function(player) @@ -90,7 +90,7 @@ unified_inventory.register_button("home_gui_go", { end, }) -unified_inventory.register_button("misc_set_day", { +ui.register_button("misc_set_day", { type = "image", image = "ui_sun_icon.png", tooltip = S("Set time to day"), @@ -106,7 +106,7 @@ unified_inventory.register_button("misc_set_day", { else minetest.chat_send_player(player_name, S("You don't have the settime privilege!")) - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) end end, condition = function(player) @@ -114,7 +114,7 @@ unified_inventory.register_button("misc_set_day", { end, }) -unified_inventory.register_button("misc_set_night", { +ui.register_button("misc_set_night", { type = "image", image = "ui_moon_icon.png", tooltip = S("Set time to night"), @@ -130,7 +130,7 @@ unified_inventory.register_button("misc_set_night", { else minetest.chat_send_player(player_name, S("You don't have the settime privilege!")) - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) end end, condition = function(player) @@ -138,19 +138,19 @@ unified_inventory.register_button("misc_set_night", { end, }) -unified_inventory.register_button("clear_inv", { +ui.register_button("clear_inv", { type = "image", image = "ui_trash_icon.png", tooltip = S("Clear inventory"), action = function(player) local player_name = player:get_player_name() - if not unified_inventory.is_creative(player_name) then + if not ui.is_creative(player_name) then minetest.chat_send_player(player_name, S("This button has been disabled outside" .." of creative mode to prevent" .." accidental inventory trashing." .."\nUse the trash slot instead.")) - unified_inventory.set_inventory_formspec(player, unified_inventory.current_page[player_name]) + ui.set_inventory_formspec(player, ui.current_page[player_name]) return end player:get_inventory():set_list("main", {}) @@ -159,35 +159,42 @@ unified_inventory.register_button("clear_inv", { {to_player=player_name, gain = 1.0}) end, condition = function(player) - return unified_inventory.is_creative(player:get_player_name()) + return ui.is_creative(player:get_player_name()) end, }) -unified_inventory.register_page("craft", { +ui.register_page("craft", { get_formspec = function(player, perplayer_formspec) - local formspecy = perplayer_formspec.formspec_y - local formheadery = perplayer_formspec.form_header_y + local formheaderx = perplayer_formspec.form_header_x + local formheadery = perplayer_formspec.form_header_y + local craftx = perplayer_formspec.craft_x + local crafty = perplayer_formspec.craft_y local player_name = player:get_player_name() - local formspec = "background[2,"..formspecy..";6,3;ui_crafting_form.png]" - formspec = formspec..string.gsub(unified_inventory.standard_inv_bg, "YYY", (formspecy + 3.4)) - formspec = formspec.."label[0,"..formheadery..";" ..F(S("Crafting")).."]" - formspec = formspec.."" - formspec = formspec.."list[current_player;craftpreview;6,"..formspecy..";1,1;]" - formspec = formspec.."list[current_player;craft;2,"..formspecy..";3,3;]" - if unified_inventory.trash_enabled or unified_inventory.is_creative(player_name) or minetest.get_player_privs(player_name).give then - formspec = formspec.."label[7,"..(formspecy + 1.5)..";" .. F(S("Trash:")) .. "]" - formspec = formspec.."background[7,"..(formspecy + 2)..";1,1;default_single_slot.png]" - formspec = formspec.."list[detached:trash;main;7,"..(formspecy + 2)..";1,1;]" + local formspec = { + perplayer_formspec.standard_inv_bg, + perplayer_formspec.craft_grid, + "label["..formheaderx..","..formheadery..";" ..F(S("Crafting")).."]", + "", + "listring[current_name;craft]", + "listring[current_player;main]" + } + local n=#formspec+1 + + if ui.trash_enabled or ui.is_creative(player_name) or minetest.get_player_privs(player_name).give then + formspec[n] = string.format("label[%f,%f;%s]", craftx + 6.45, crafty + 2.4, F(S("Trash:"))) + formspec[n+1] = ui.make_trash_slot(craftx + 6.25, crafty + 2.5) + n=n + 2 end - formspec = formspec.."listring[current_name;craft]" - formspec = formspec.."listring[current_player;main]" - if unified_inventory.is_creative(player_name) then - formspec = formspec.."label[0,"..(formspecy + 1.5)..";" .. F(S("Refill:")) .. "]" - formspec = formspec.."list[detached:"..F(player_name).."refill;main;0,"..(formspecy +2)..";1,1;]" + + if ui.is_creative(player_name) then + formspec[n] = ui.single_slot(craftx - 2.5, crafty + 2.5) + formspec[n+1] = string.format("label[%f,%f;%s]", craftx - 2.3, crafty + 2.4,F(S("Refill:"))) + formspec[n+2] = string.format("list[detached:%srefill;main;%f,%f;1,1;]", + F(player_name), craftx - 2.5 + ui.list_img_offset, crafty + 2.5 + ui.list_img_offset) end - return {formspec=formspec} + return {formspec=table.concat(formspec)} end, }) @@ -206,18 +213,18 @@ local function stack_image_button(x, y, w, h, buttonname_prefix, item) local selectitem = name if name:sub(1, 6) == "group:" then local group_name = name:sub(7) - local group_item = unified_inventory.get_group_item(group_name) + local group_item = ui.get_group_item(group_name) show_is_group = not group_item.sole displayitem = group_item.item or "unknown" selectitem = group_item.sole and displayitem or name end local label = show_is_group and "G" or "" - local buttonname = F(buttonname_prefix..unified_inventory.mangle_for_formspec(selectitem)) + local buttonname = F(buttonname_prefix..ui.mangle_for_formspec(selectitem)) local button = string.format("item_image_button[%f,%f;%f,%f;%s;%s;%s]", x, y, w, h, F(displayitem), buttonname, label) if show_is_group then - local groupstring, andcount = unified_inventory.extract_groupnames(name) + local groupstring, andcount = ui.extract_groupnames(name) local grouptip if andcount == 1 then grouptip = S("Any item belonging to the @1 group", groupstring) @@ -257,26 +264,33 @@ local other_dir = { usage = "recipe", } -unified_inventory.register_page("craftguide", { +ui.register_page("craftguide", { get_formspec = function(player, perplayer_formspec) - local formspecy = perplayer_formspec.formspec_y - local formheadery = perplayer_formspec.form_header_y - local craftresultx = perplayer_formspec.craft_result_x - local craftresulty = perplayer_formspec.craft_result_y + local craftguidex = perplayer_formspec.craft_guide_x + local craftguidey = perplayer_formspec.craft_guide_y + local craftguidearrowx = perplayer_formspec.craft_guide_arrow_x + local craftguideresultx = perplayer_formspec.craft_guide_result_x + local formheaderx = perplayer_formspec.form_header_x + local formheadery = perplayer_formspec.form_header_y + local give_x = perplayer_formspec.give_btn_x local player_name = player:get_player_name() local player_privs = minetest.get_player_privs(player_name) - local fs = { - string.gsub(unified_inventory.standard_inv_bg, "YYY", (formspecy + 3.4)), - "label[0,"..formheadery..";" .. F(S("Crafting Guide")) .. "]", + + local formspec = { + perplayer_formspec.standard_inv_bg, + "label["..formheaderx..","..formheadery..";" .. F(S("Crafting Guide")) .. "]", "" } - local item_name = unified_inventory.current_item[player_name] + + local item_name = ui.current_item[player_name] if not item_name then - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } end + local n = 4 + local item_name_shown if minetest.registered_items[item_name] and minetest.registered_items[item_name].description then @@ -286,51 +300,60 @@ unified_inventory.register_page("craftguide", { item_name_shown = item_name end - local dir = unified_inventory.current_craft_direction[player_name] + local dir = ui.current_craft_direction[player_name] local rdir = dir == "recipe" and "usage" or "recipe" - local crafts = unified_inventory.crafts_for[dir][item_name] - local alternate = unified_inventory.alternate[player_name] + local crafts = ui.crafts_for[dir][item_name] + local alternate = ui.alternate[player_name] local alternates, craft if crafts and #crafts > 0 then alternates = #crafts craft = crafts[alternate] end - local has_give = player_privs.give or unified_inventory.is_creative(player_name) + local has_give = player_privs.give or ui.is_creative(player_name) - fs[#fs + 1] = "background[0.5,"..(formspecy + 0.2)..";8,3;ui_craftguide_form.png]" - fs[#fs + 1] = string.format("textarea[%f,%f;10,1;;%s: %s;]", - craftresultx, craftresulty, F(role_text[dir]), item_name_shown) - fs[#fs + 1] = stack_image_button(0, formspecy, 1.1, 1.1, - "item_button_" .. rdir .. "_", ItemStack(item_name)) + formspec[n] = string.format("image[%f,%f;%f,%f;ui_crafting_arrow.png]", + craftguidearrowx, craftguidey, ui.imgscale, ui.imgscale) + + formspec[n+1] = string.format("textarea[%f,%f;10,1;;%s: %s;]", + perplayer_formspec.craft_guide_resultstr_x, perplayer_formspec.craft_guide_resultstr_y, + F(role_text[dir]), item_name_shown) + n = n + 2 + + local giveme_form = table.concat({ + "label[".. (give_x+0.1)..",".. (craftguidey + 2.7) .. ";" .. F(S("Give me:")) .. "]", + "button["..(give_x)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_1;1]", + "button["..(give_x+0.8)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_10;10]", + "button["..(give_x+1.6)..",".. (craftguidey + 2.9) .. ";0.75,0.5;craftguide_giveme_99;99]" + }) if not craft then -- No craft recipes available for this item. - fs[#fs + 1] = "label[5.5,"..(formspecy + 2.35)..";" - .. F(no_recipe_text[dir]) .. "]" - local no_pos = dir == "recipe" and 4.5 or 6.5 - local item_pos = dir == "recipe" and 6.5 or 4.5 - fs[#fs + 1] = "image["..no_pos..","..formspecy..";1.1,1.1;ui_no.png]" - fs[#fs + 1] = stack_image_button(item_pos, formspecy, 1.1, 1.1, + formspec[n] = string.format("label[%f,%f;%s]", craftguidex+2.5, craftguidey+1.5, F(no_recipe_text[dir])) + local no_pos = dir == "recipe" and (craftguidex+2.5) or craftguideresultx + local item_pos = dir == "recipe" and craftguideresultx or (craftguidex+2.5) + formspec[n+1] = "image["..no_pos..","..craftguidey..";1.2,1.2;ui_no.png]" + formspec[n+2] = stack_image_button(item_pos, craftguidey, 1.2, 1.2, "item_button_" .. other_dir[dir] .. "_", ItemStack(item_name)) if has_give then - fs[#fs + 1] = "label[0," .. (formspecy + 2.10) .. ";" .. F(S("Give me:")) .. "]" - .. "button[0, " .. (formspecy + 2.7) .. ";0.6,0.5;craftguide_giveme_1;1]" - .. "button[0.6," .. (formspecy + 2.7) .. ";0.7,0.5;craftguide_giveme_10;10]" - .. "button[1.3," .. (formspecy + 2.7) .. ";0.8,0.5;craftguide_giveme_99;99]" + formspec[n+3] = giveme_form end - return { formspec = table.concat(fs) } + return { formspec = table.concat(formspec) } + else + formspec[n] = stack_image_button(craftguideresultx, craftguidey, 1.2, 1.2, + "item_button_" .. rdir .. "_", ItemStack(craft.output)) + n = n + 1 end - local craft_type = unified_inventory.registered_craft_types[craft.type] or - unified_inventory.craft_type_defaults(craft.type, {}) + local craft_type = ui.registered_craft_types[craft.type] or + ui.craft_type_defaults(craft.type, {}) if craft_type.icon then - fs[#fs + 1] = string.format("image[%f,%f;%f,%f;%s]", - 5.7, (formspecy + 0.05), 0.5, 0.5, craft_type.icon) + formspec[n] = string.format("image[%f,%f;%f,%f;%s]", + craftguidearrowx+0.35, craftguidey, 0.5, 0.5, craft_type.icon) + n = n + 1 end - fs[#fs + 1] = "label[5.5,"..(formspecy + 1)..";" .. F(craft_type.description).."]" - fs[#fs + 1] = stack_image_button(6.5, formspecy, 1.1, 1.1, - "item_button_usage_", ItemStack(craft.output)) + formspec[n] = string.format("label[%f,%f;%s]", craftguidearrowx + 0.15, craftguidey + 1.4, F(craft_type.description)) + n = n + 1 local display_size = craft_type.dynamic_display_size and craft_type.dynamic_display_size(craft) @@ -341,11 +364,12 @@ unified_inventory.register_page("craftguide", { -- This keeps recipes aligned to the right, -- so that they're close to the arrow. - local xoffset = 5.5 + local xoffset = craftguidex+3.75 + local bspc = 1.25 -- Offset factor for crafting grids with side length > 4 local of = (3/math.max(3, math.max(display_size.width, display_size.height))) local od = 0 - -- Minimum grid size at which size optimazation measures kick in + -- Minimum grid size at which size optimization measures kick in local mini_craft_size = 6 if display_size.width >= mini_craft_size then od = math.max(1, display_size.width - 2) @@ -354,12 +378,12 @@ unified_inventory.register_page("craftguide", { -- Size modifier factor local sf = math.min(1, of * (1.05 + 0.05*od)) -- Button size - local bsize_h = 1.1 * sf - local bsize_w = bsize_h - if display_size.width >= mini_craft_size then - bsize_w = 1.175 * sf + local bsize = 1.2 * sf + + if display_size.width >= mini_craft_size then -- it's not a normal 3x3 grid + bsize = 0.8 * sf end - if (bsize_h > 0.35 and display_size.width) then + if (bsize > 0.35 and display_size.width) then for y = 1, display_size.height do for x = 1, display_size.width do local item @@ -369,48 +393,53 @@ unified_inventory.register_page("craftguide", { -- Flipped x, used to build formspec buttons from right to left local fx = display_size.width - (x-1) -- x offset, y offset - local xof = (fx-1) * of + of - local yof = (y-1) * of + 1 + local xof = ((fx-1) * of + of) * bspc + local yof = ((y-1) * of + 1) * bspc if item then - fs[#fs + 1] = stack_image_button( - xoffset - xof, formspecy - 1 + yof, bsize_w, bsize_h, + formspec[n] = stack_image_button( + xoffset - xof, craftguidey - 1.25 + yof, bsize, bsize, "item_button_recipe_", ItemStack(item)) else -- Fake buttons just to make grid - fs[#fs + 1] = string.format("image_button[%f,%f;%f,%f;ui_blank_image.png;;]", - xoffset - xof, formspecy - 1 + yof, bsize_w, bsize_h) + formspec[n] = string.format("image_button[%f,%f;%f,%f;ui_blank_image.png;;]", + xoffset - xof, craftguidey - 1.25 + yof, bsize, bsize) end + n = n + 1 end end else -- Error - fs[#fs + 1] = string.format("label[2,%f;%s]", - formspecy, F(S("This recipe is too@nlarge to be displayed."))) + formspec[n] = string.format("label[2,%f;%s]", + craftguidey, F(S("This recipe is too@nlarge to be displayed."))) + n = n + 1 end if craft_type.uses_crafting_grid and display_size.width <= 3 then - fs[#fs + 1] = "label[0," .. (formspecy + 0.9) .. ";" .. F(S("To craft grid:")) .. "]" - .. "button[0, " .. (formspecy + 1.5) .. ";0.6,0.5;craftguide_craft_1;1]" - .. "button[0.6," .. (formspecy + 1.5) .. ";0.7,0.5;craftguide_craft_10;10]" - .. "button[1.3," .. (formspecy + 1.5) .. ";0.8,0.5;craftguide_craft_max;" .. F(S("All")) .. "]" + formspec[n] = "label["..(give_x+0.1)..",".. (craftguidey + 1.7) .. ";" .. F(S("To craft grid:")) .. "]" + formspec[n+1] = "button[".. (give_x)..",".. (craftguidey + 1.9) .. ";0.75,0.5;craftguide_craft_1;1]" + formspec[n+2] = "button[".. (give_x+0.8)..",".. (craftguidey + 1.9) .. ";0.75,0.5;craftguide_craft_10;10]" + formspec[n+3] = "button[".. (give_x+1.6)..",".. (craftguidey + 1.9) .. ";0.75,0.5;craftguide_craft_max;" .. F(S("All")) .. "]" + n = n + 4 end + if has_give then - fs[#fs + 1] = "label[0," .. (formspecy + 2.1) .. ";" .. F(S("Give me:")) .. "]" - .. "button[0, " .. (formspecy + 2.7) .. ";0.6,0.5;craftguide_giveme_1;1]" - .. "button[0.6," .. (formspecy + 2.7) .. ";0.7,0.5;craftguide_giveme_10;10]" - .. "button[1.3," .. (formspecy + 2.7) .. ";0.8,0.5;craftguide_giveme_99;99]" + formspec[n] = giveme_form + n = n + 1 end if alternates and alternates > 1 then - fs[#fs + 1] = "label[5.5," .. (formspecy + 1.6) .. ";" - .. F(S(recipe_text[dir], alternate, alternates)) .. "]" - .. "image_button[5.5," .. (formspecy + 2) .. ";1,1;ui_left_icon.png;alternate_prev;]" - .. "image_button[6.5," .. (formspecy + 2) .. ";1,1;ui_right_icon.png;alternate;]" - .. "tooltip[alternate_prev;" .. F(prev_alt_text[dir]) .. "]" - .. "tooltip[alternate;" .. F(next_alt_text[dir]) .. "]" + formspec[n] = string.format("label[%f,%f;%s]", + craftguidex+4, craftguidey + 2.3, F(S(recipe_text[dir], alternate, alternates))) + formspec[n+1] = string.format("image_button[%f,%f;1.1,1.1;ui_left_icon.png;alternate_prev;]", + craftguidearrowx+0.2, craftguidey + 2.6) + formspec[n+2] = string.format("image_button[%f,%f;1.1,1.1;ui_right_icon.png;alternate;]", + craftguidearrowx+1.35, craftguidey + 2.6) + formspec[n+3] = "tooltip[alternate_prev;" .. F(prev_alt_text[dir]) .. "]" + formspec[n+4] = "tooltip[alternate;" .. F(next_alt_text[dir]) .. "]" end - return { formspec = table.concat(fs) } + + return { formspec = table.concat(formspec) } end, }) @@ -418,7 +447,7 @@ local function craftguide_giveme(player, formname, fields) local player_name = player:get_player_name() local player_privs = minetest.get_player_privs(player_name) if not player_privs.give and - not unified_inventory.is_creative(player_name) then + not ui.is_creative(player_name) then minetest.log("action", "[unified_inventory] Denied give action to player " .. player_name) return @@ -433,7 +462,7 @@ local function craftguide_giveme(player, formname, fields) amount = tonumber(amount) or 0 if amount == 0 then return end - local output = unified_inventory.current_item[player_name] + local output = ui.current_item[player_name] if (not output) or (output == "") then return end local player_inv = player:get_inventory() @@ -454,21 +483,21 @@ local function craftguide_craft(player, formname, fields) local player_name = player:get_player_name() - local output = unified_inventory.current_item[player_name] or "" + local output = ui.current_item[player_name] or "" if output == "" then return end - local crafts = unified_inventory.crafts_for[ - unified_inventory.current_craft_direction[player_name]][output] or {} + local crafts = ui.crafts_for[ + ui.current_craft_direction[player_name]][output] or {} if #crafts == 0 then return end - local alternate = unified_inventory.alternate[player_name] + local alternate = ui.alternate[player_name] local craft = crafts[alternate] if craft.width > 3 then return end - unified_inventory.craftguide_match_craft(player, "main", "craft", craft, amount) + ui.craftguide_match_craft(player, "main", "craft", craft, amount) - unified_inventory.set_inventory_formspec(player, "craft") + ui.set_inventory_formspec(player, "craft") end minetest.register_on_player_receive_fields(function(player, formname, fields) diff --git a/mods/unified_inventory/textures/ui_craftguide_form.png b/mods/unified_inventory/textures/ui_craftguide_form.png deleted file mode 100644 index d9be53f7..00000000 Binary files a/mods/unified_inventory/textures/ui_craftguide_form.png and /dev/null differ diff --git a/mods/unified_inventory/textures/ui_crafting_arrow.png b/mods/unified_inventory/textures/ui_crafting_arrow.png new file mode 100644 index 00000000..6901c588 Binary files /dev/null and b/mods/unified_inventory/textures/ui_crafting_arrow.png differ diff --git a/mods/unified_inventory/textures/ui_formbg_9_sliced.png b/mods/unified_inventory/textures/ui_formbg_9_sliced.png new file mode 100644 index 00000000..0b8463ca Binary files /dev/null and b/mods/unified_inventory/textures/ui_formbg_9_sliced.png differ diff --git a/mods/unified_inventory/textures/ui_misc_form.png b/mods/unified_inventory/textures/ui_misc_form.png deleted file mode 100644 index c6a6057d..00000000 Binary files a/mods/unified_inventory/textures/ui_misc_form.png and /dev/null differ diff --git a/mods/unified_inventory/textures/ui_single_slot.png b/mods/unified_inventory/textures/ui_single_slot.png new file mode 100644 index 00000000..2451623c Binary files /dev/null and b/mods/unified_inventory/textures/ui_single_slot.png differ diff --git a/mods/unified_inventory/textures/ui_single_slot_bright.png b/mods/unified_inventory/textures/ui_single_slot_bright.png new file mode 100644 index 00000000..c66365c9 Binary files /dev/null and b/mods/unified_inventory/textures/ui_single_slot_bright.png differ diff --git a/mods/unified_inventory/textures/ui_trash_slot_icon.png b/mods/unified_inventory/textures/ui_trash_slot_icon.png new file mode 100644 index 00000000..d40af263 Binary files /dev/null and b/mods/unified_inventory/textures/ui_trash_slot_icon.png differ diff --git a/mods/unified_inventory/textures/ui_xyz_off_icon.png b/mods/unified_inventory/textures/ui_xyz_off_icon.png deleted file mode 100644 index 3c1836eb..00000000 Binary files a/mods/unified_inventory/textures/ui_xyz_off_icon.png and /dev/null differ diff --git a/mods/unified_inventory/textures/ui_xyz_on_icon.png b/mods/unified_inventory/textures/ui_xyz_on_icon.png deleted file mode 100644 index 003ea633..00000000 Binary files a/mods/unified_inventory/textures/ui_xyz_on_icon.png and /dev/null differ diff --git a/mods/unified_inventory/waypoints.lua b/mods/unified_inventory/waypoints.lua index 97712b77..2a8ead43 100644 --- a/mods/unified_inventory/waypoints.lua +++ b/mods/unified_inventory/waypoints.lua @@ -1,5 +1,6 @@ local S = minetest.get_translator("unified_inventory") local F = minetest.formspec_escape +local ui = unified_inventory local hud_colors = { {"#FFFFFF", 0xFFFFFF, S("White")}, @@ -14,28 +15,38 @@ local hud_colors_max = #hud_colors -- Stores temporary player data (persists until player leaves) local waypoints_temp = {} -unified_inventory.register_page("waypoints", { +ui.register_page("waypoints", { get_formspec = function(player) local player_name = player:get_player_name() + local wp_info_x = ui.style_full.form_header_x + 1.25 + local wp_info_y = ui.style_full.form_header_y + 0.5 + local wp_bottom_row = ui.style_full.std_inv_y - 1 + local wp_buttons_rj = ui.style_full.std_inv_x + 10.1 - ui.style_full.btn_spc + local wp_edit_w = ui.style_full.btn_spc * 4 - 0.1 -- build a "fake" temp entry if the server took too long -- during sign-on and returned an empty entry if not waypoints_temp[player_name] then waypoints_temp[player_name] = {hud = 1} end local waypoints = datastorage.get(player_name, "waypoints") - local formspec = string.gsub(unified_inventory.standard_inv_bg, "YYY", "4.4") .. - "image[0,0;1,1;ui_waypoints_icon.png]" .. - "label[1,0;" .. F(S("Waypoints")) .. "]" + local formspec = { ui.style_full.standard_inv_bg, + string.format("label[%f,%f;%s]", + ui.style_full.form_header_x, ui.style_full.form_header_y, + F(S("Waypoints"))), + "image["..wp_info_x..","..wp_info_y..";1,1;ui_waypoints_icon.png]" + } + local n=4 -- Tabs buttons: - for i = 1, 5, 1 do - formspec = formspec .. - "image_button[0.0," .. 0.2 + i * 0.7 .. ";.8,.8;" .. - (i == waypoints.selected and "ui_blue_icon_background.png^" or "") .. - "ui_" .. i .. "_icon.png;" .. - "select_waypoint" .. i .. ";]" .. - "tooltip[select_waypoint" .. i .. ";" - .. S("Select Waypoint #@1", i).."]" + for i = 1, 5 do + local sw="select_waypoint"..i + formspec[n] = string.format("image_button[%f,%f;%f,%f;%sui_%i_icon.png;%s;]", + ui.style_full.main_button_x, wp_bottom_row - (5-i) * ui.style_full.btn_spc, + ui.style_full.btn_size, ui.style_full.btn_size, + (i == waypoints.selected) and "ui_blue_icon_background.png^" or "", + i, sw) + formspec[n+1] = "tooltip["..sw..";"..S("Select Waypoint #@1", i).."]" + n = n + 2 end local i = waypoints.selected or 1 @@ -44,72 +55,58 @@ unified_inventory.register_page("waypoints", { local default_name = S("Waypoint @1", i) -- Main buttons: - formspec = formspec .. - "image_button[4.5,3.7;.8,.8;".. - "ui_waypoint_set_icon.png;".. - "set_waypoint"..i..";]".. - "tooltip[set_waypoint" .. i .. ";" - .. F(S("Set waypoint to current location")).."]" + local btnlist = { + { "ui_waypoint_set_icon.png", "set_waypoint", S("Set waypoint to current location") }, + { waypoint.active and "ui_on_icon.png" or "ui_off_icon.png", "toggle_waypoint", S("Make waypoint @1", waypoint.active and "invisible" or "visible") }, + { waypoint.display_pos and "ui_green_icon_background.png^ui_xyz_icon.png" or "ui_red_icon_background.png^ui_xyz_icon.png^(ui_no.png^[transformR90)", "toggle_display_pos", S("@1 display of waypoint coordinates", waypoint.display_pos and "Disable" or "Enable") }, + { "ui_circular_arrows_icon.png", "toggle_color", S("Change color of waypoint display") }, + { "ui_pencil_icon.png", "rename_waypoint", S("Edit waypoint name") } + } - formspec = formspec .. - "image_button[5.2,3.7;.8,.8;".. - (waypoint.active and "ui_on_icon.png" or "ui_off_icon.png")..";".. - "toggle_waypoint"..i..";]".. - "tooltip[toggle_waypoint" .. i .. ";" - .. F(S("Make waypoint @1", - waypoint.active and S("invisible") or S("visible"))).."]" - - formspec = formspec .. - "image_button[5.9,3.7;.8,.8;".. - (waypoint.display_pos and "ui_green_icon_background.png" or "ui_red_icon_background.png").."^ui_xyz_icon.png;".. - "toggle_display_pos" .. i .. ";]".. - "tooltip[toggle_display_pos" .. i .. ";" - .. F(S("@1 display of waypoint coordinates", - waypoint.display_pos and S("Disable") or S("Enable"))) .."]" - - formspec = formspec .. - "image_button[6.6,3.7;.8,.8;".. - "ui_circular_arrows_icon.png;".. - "toggle_color"..i..";]".. - "tooltip[toggle_color" .. i .. ";" - .. F(S("Change color of waypoint display")).."]" - - formspec = formspec .. - "image_button[7.3,3.7;.8,.8;".. - "ui_pencil_icon.png;".. - "rename_waypoint"..i..";]".. - "tooltip[rename_waypoint" .. i .. ";" - .. F(S("Edit waypoint name")).."]" + local x = 4 + for _, b in pairs(btnlist) do + formspec[n] = string.format("image_button[%f,%f;%f,%f;%s;%s%i;]", + wp_buttons_rj - ui.style_full.btn_spc * x, wp_bottom_row, + ui.style_full.btn_size, ui.style_full.btn_size, + b[1], b[2], i) + formspec[n+1] = "tooltip["..b[2]..i..";"..F(b[3]).."]" + x = x - 1 + n = n + 2 + end -- Waypoint's info: + formspec[n] = "label["..wp_info_x..","..(wp_info_y+1.1)..";" if waypoint.active then - formspec = formspec .. "label[1,0.8;"..F(S("Waypoint active")).."]" + formspec[n+1] = F(S("Waypoint active")).."]" else - formspec = formspec .. "label[1,0.8;"..F(S("Waypoint inactive")).."]" + formspec[n+1] = F(S("Waypoint inactive")).."]" end + n = n + 2 if temp.edit then - formspec = formspec .. - "field[1.3,3.2;6,.8;rename_box" .. i .. ";;" - ..(waypoint.name or default_name).."]" .. - "image_button[7.3,2.9;.8,.8;".. - "ui_ok_icon.png;".. - "confirm_rename"..i.. ";]".. - "tooltip[confirm_rename" .. i .. ";" - .. F(S("Finish editing")).."]" + formspec[n] = string.format("field[%f,%f;%f,%f;rename_box%i;;%s]", + wp_buttons_rj - wp_edit_w - 0.1, wp_bottom_row - ui.style_full.btn_spc, + wp_edit_w, ui.style_full.btn_size, i, (waypoint.name or default_name)) + formspec[n+1] = string.format("image_button[%f,%f;%f,%f;ui_ok_icon.png;confirm_rename%i;]", + wp_buttons_rj, wp_bottom_row - ui.style_full.btn_spc, + ui.style_full.btn_size, ui.style_full.btn_size, i) + formspec[n+2] = "tooltip[confirm_rename"..i..";"..F(S("Finish editing")).."]" + n = n + 3 end - formspec = formspec .. "label[1,1.3;"..F(S("World position"))..": " .. - minetest.pos_to_string(waypoint.world_pos or vector.new()) .. "]" .. - "label[1,1.8;"..F(S("Name"))..": ".. (waypoint.name or default_name) .. "]" .. - "label[1,2.3;"..F(S("HUD text color"))..": " .. - hud_colors[waypoint.color or 1][3] .. "]" + formspec[n] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+1.6, F(S("World position")), + minetest.pos_to_string(waypoint.world_pos or vector.new())) + formspec[n+1] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+2.10, F(S("Name")), (waypoint.name or default_name)) + formspec[n+2] = string.format("label[%f,%f;%s: %s]", + wp_info_x, wp_info_y+2.60, F(S("HUD text color")), hud_colors[waypoint.color or 1][3]) - return {formspec=formspec} + return {formspec=table.concat(formspec)} end, }) -unified_inventory.register_button("waypoints", { +ui.register_button("waypoints", { type = "image", image = "ui_waypoints_icon.png", tooltip = S("Waypoints"), @@ -224,7 +221,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) update_hud(player, waypoints, temp, i) end if update_formspec then - unified_inventory.set_inventory_formspec(player, "waypoints") + ui.set_inventory_formspec(player, "waypoints") end if hit then return end end diff --git a/mods/vessels/init.lua b/mods/vessels/init.lua index dddb16a1..162e2595 100644 --- a/mods/vessels/init.lua +++ b/mods/vessels/init.lua @@ -9,17 +9,16 @@ local S = minetest.get_translator("vessels") local vessels_shelf_formspec = "size[8,7;]" .. - "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000;".. - dreambuilder_theme.tooltip_bgcolor..";".. - dreambuilder_theme.tooltip_fontcolor.."]".. - "image[-0.1,2.75;10.03,4.95;default_standard_inventory_bg.png]".. - "image[-0.1,0.23;10.03,2.37;vessels_upper_slots_bg.png]".. + "listcolors[#00000000;"..dreambuilder_theme.listcolor_slot_bg_hover..";#00000000]".. + dreambuilder_theme.make_inv_img_grid_v1(0, 0.25, 8, 2, false).. + dreambuilder_theme.make_inv_img_grid_v1(0, 2.8, 8, 1, true).. + dreambuilder_theme.make_inv_img_grid_v1(0, 4.05, 8, 3, false).. "list[context;vessels;0,0.3;8,2;]" .. "list[current_player;main;0,2.85;8,1;]" .. "list[current_player;main;0,4.08;8,3;8]" .. "listring[context;vessels]" .. "listring[current_player;main]" .. - default.get_hotbar_bg(0, 2.85) + "" local function update_vessels_shelf(pos) local meta = minetest.get_meta(pos) @@ -37,7 +36,7 @@ local function update_vessels_shelf(pos) end if not invlist or invlist[i]:is_empty() then formspec = formspec .. - "image[" .. vx .. "," .. vy .. ";1,1;vessels_shelf_slot.png]" + "image[" .. vx .. "," .. vy .. ";1,1;"..dreambuilder_theme.name.."_vessels_shelf_slot.png]" else local stack = invlist[i] if not stack:is_empty() then diff --git a/mods/vessels/mod.conf b/mods/vessels/mod.conf index a2516c5f..e1191743 100644 --- a/mods/vessels/mod.conf +++ b/mods/vessels/mod.conf @@ -1,4 +1,4 @@ name = vessels description = Minetest Game mod: vessels -depends = dreambuilder_gui_theming, default +depends = dreambuilder_theme_settings, default optional_depends = dungeon_loot diff --git a/mods/vessels/textures/vessels_shelf_slot.png b/mods/vessels/textures/vessels_shelf_slot.png new file mode 100644 index 00000000..93a729e5 Binary files /dev/null and b/mods/vessels/textures/vessels_shelf_slot.png differ