diff --git a/technic_chests/copper_chest.lua b/technic_chests/copper_chest.lua index 21f0563..2d58379 100644 --- a/technic_chests/copper_chest.lua +++ b/technic_chests/copper_chest.lua @@ -25,7 +25,8 @@ minetest.register_craft({ }) technic.chests:register("Copper", { - width = 10, + width = 12, + height = 5, sort = true, autosort = true, infotext = false, @@ -34,7 +35,8 @@ technic.chests:register("Copper", { }) technic.chests:register("Copper", { - width = 10, + width = 12, + height = 5, sort = true, autosort = true, infotext = false, diff --git a/technic_chests/gold_chest.lua b/technic_chests/gold_chest.lua index 941834d..386d1c7 100644 --- a/technic_chests/gold_chest.lua +++ b/technic_chests/gold_chest.lua @@ -26,7 +26,8 @@ minetest.register_craft({ }) technic.chests:register("Gold", { - width = 12, + width = 15, + height = 6, sort = true, autosort = true, infotext = true, @@ -35,7 +36,8 @@ technic.chests:register("Gold", { }) technic.chests:register("Gold", { - width = 12, + width = 15, + height = 6, sort = true, autosort = true, infotext = true, diff --git a/technic_chests/iron_chest.lua b/technic_chests/iron_chest.lua index a1f5c63..aa02533 100644 --- a/technic_chests/iron_chest.lua +++ b/technic_chests/iron_chest.lua @@ -27,6 +27,7 @@ minetest.register_craft({ technic.chests:register("Iron", { width = 9, + height = 5, sort = true, autosort = false, infotext = false, @@ -36,6 +37,7 @@ technic.chests:register("Iron", { technic.chests:register("Iron", { width = 9, + height = 5, sort = true, autosort = false, infotext = false, diff --git a/technic_chests/mithril_chest.lua b/technic_chests/mithril_chest.lua index f5aa986..8fb7baa 100644 --- a/technic_chests/mithril_chest.lua +++ b/technic_chests/mithril_chest.lua @@ -25,7 +25,8 @@ minetest.register_craft({ }) technic.chests:register("Mithril", { - width = 13, + width = 15, + height = 7, sort = true, autosort = true, infotext = false, @@ -34,7 +35,8 @@ technic.chests:register("Mithril", { }) technic.chests:register("Mithril", { - width = 13, + width = 15, + height = 7, sort = true, autosort = true, infotext = false, diff --git a/technic_chests/register.lua b/technic_chests/register.lua index cec5e92..7f175f1 100644 --- a/technic_chests/register.lua +++ b/technic_chests/register.lua @@ -31,13 +31,13 @@ local function colorid_to_postfix(id) end -local function get_color_buttons() +local function get_color_buttons(loleft, lotop) local buttons_string = "" for y = 0, 3 do for x = 0, 3 do local file_name = "technic_colorbutton"..(y * 4 + x)..".png" buttons_string = buttons_string.."image_button[" - ..(8.1 + x * 0.7)..","..(6.1 + y * 0.7) + ..(loleft + 8.1 + x * 0.7)..","..(lotop + 0.1 + y * 0.7) ..";0.8,0.8;"..file_name..";color_button" ..(y * 4 + x + 1)..";]" end @@ -60,20 +60,25 @@ local function set_formspec(pos, data, page) local meta = minetest.get_meta(pos) local node = minetest.get_node(pos) local formspec = data.formspec + local lowidth = data.color and 11 or 8 + local ovwidth = math.max(lowidth, data.width) + local hileft = (ovwidth - data.width) / 2 + local loleft = (ovwidth - lowidth) / 2 + local lotop = data.height + 2 if data.autosort then local status = meta:get_int("autosort") - formspec = formspec.."button[2,5.1;3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]" + formspec = formspec.."button["..(hileft+2)..","..(data.height+1.1)..";3,0.8;autosort_to_"..(1-status)..";"..S("Auto-sort is %s"):format(status == 1 and S("On") or S("Off")).."]" end if data.infotext then local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext")) if page == "main" then - formspec = formspec.."image_button[2.1,0.1;0.8,0.8;" + formspec = formspec.."image_button["..(hileft+2.1)..",0.1;0.8,0.8;" .."technic_pencil_icon.png;edit_infotext;]" - .."label[3,0;"..formspec_infotext.."]" + .."label["..(hileft+3)..",0;"..formspec_infotext.."]" elseif page == "edit_infotext" then - formspec = formspec.."image_button[2.1,0.1;0.8,0.8;" + formspec = formspec.."image_button["..(hileft+2.1)..",0.1;0.8,0.8;" .."technic_checkmark_icon.png;save_infotext;]" - .."field[3.3,0.2;4.8,1;" + .."field["..(hileft+3.3)..",0.2;4.8,1;" .."infotext_box;"..S("Edit chest description:")..";" ..formspec_infotext.."]" end @@ -86,7 +91,7 @@ local function set_formspec(pos, data, page) else colorName = S("None") end - formspec = formspec.."label[8.2,9;"..S("Color Filter: %s"):format(colorName).."]" + formspec = formspec.."label["..(loleft+8.2)..","..(lotop+3)..";"..S("Color Filter: %s"):format(colorName).."]" end meta:set_string("formspec", formspec) end @@ -160,6 +165,7 @@ local function get_receive_fields(name, data) local nn = "technic:"..lname..(data.locked and "_locked" or "").."_chest" check_color_buttons(pos, meta, nn, fields) end + meta:get_inventory():set_size("main", data.width * data.height) set_formspec(pos, data, page) end end @@ -169,22 +175,27 @@ function technic.chests:register(name, data) local lname = name:lower() name = S(name) - local width = math.max(data.color and 11 or 8, data.width) + local lowidth = data.color and 11 or 8 + local ovwidth = math.max(lowidth, data.width) + local hileft = (ovwidth - data.width) / 2 + local loleft = (ovwidth - lowidth) / 2 + local lotop = data.height + 2 + local ovheight = lotop + 4 local locked_after_place = nil local front = {"technic_"..lname.."_chest_front.png"} - data.formspec = "invsize["..width..",10;]".. + data.formspec = "invsize["..ovwidth..","..ovheight..";]".. "label[0,0;"..S("%s Chest"):format(name).."]".. - "list[current_name;main;0,1;"..width..",4;]".. - "list[current_player;main;0,6;8,4;]".. - "background[-0.19,-0.25;"..width..".4,10.75;ui_form_bg.png]".. - "background[0,1;"..width..",4;technic_"..lname.."_chest_inventory.png]".. - "background[0,6;8,4;ui_main_inventory.png]" + "list[current_name;main;"..hileft..",1;"..data.width..","..data.height..";]".. + "list[current_player;main;"..loleft..","..lotop..";8,4;]".. + "background[-0.19,-0.25;"..(ovwidth+0.4)..","..(ovheight+0.75)..";ui_form_bg.png]".. + "background["..hileft..",1;"..data.width..","..data.height..";technic_"..lname.."_chest_inventory.png]".. + "background["..loleft..","..lotop..";8,4;ui_main_inventory.png]" if data.sort then - data.formspec = data.formspec.."button[0,5.1;1,0.8;sort;"..S("Sort").."]" + data.formspec = data.formspec.."button["..hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]" end if data.color then - data.formspec = data.formspec..get_color_buttons() + data.formspec = data.formspec..get_color_buttons(loleft, lotop) end if data.locked then @@ -221,7 +232,7 @@ function technic.chests:register(name, data) meta:set_string("infotext", S("%s Chest"):format(name)) set_formspec(pos, data, "main") local inv = meta:get_inventory() - inv:set_size("main", data.width * 4) + inv:set_size("main", data.width * data.height) end, can_dig = self.can_dig, on_receive_fields = get_receive_fields(name, data), diff --git a/technic_chests/silver_chest.lua b/technic_chests/silver_chest.lua index 75b33f8..0370488 100644 --- a/technic_chests/silver_chest.lua +++ b/technic_chests/silver_chest.lua @@ -25,7 +25,8 @@ minetest.register_craft({ }) technic.chests:register("Silver", { - width = 11, + width = 12, + height = 6, sort = true, autosort = true, infotext = true, @@ -34,7 +35,8 @@ technic.chests:register("Silver", { }) technic.chests:register("Silver", { - width = 11, + width = 12, + height = 6, sort = true, autosort = true, infotext = true, diff --git a/technic_chests/textures/technic_copper_chest_inventory.png b/technic_chests/textures/technic_copper_chest_inventory.png index 273a867..70da510 100644 Binary files a/technic_chests/textures/technic_copper_chest_inventory.png and b/technic_chests/textures/technic_copper_chest_inventory.png differ diff --git a/technic_chests/textures/technic_gold_chest_inventory.png b/technic_chests/textures/technic_gold_chest_inventory.png index b19524b..d4aa8b3 100644 Binary files a/technic_chests/textures/technic_gold_chest_inventory.png and b/technic_chests/textures/technic_gold_chest_inventory.png differ diff --git a/technic_chests/textures/technic_iron_chest_inventory.png b/technic_chests/textures/technic_iron_chest_inventory.png index 1785f88..a33967b 100644 Binary files a/technic_chests/textures/technic_iron_chest_inventory.png and b/technic_chests/textures/technic_iron_chest_inventory.png differ diff --git a/technic_chests/textures/technic_mithril_chest_inventory.png b/technic_chests/textures/technic_mithril_chest_inventory.png index 9054775..9bec6fe 100644 Binary files a/technic_chests/textures/technic_mithril_chest_inventory.png and b/technic_chests/textures/technic_mithril_chest_inventory.png differ diff --git a/technic_chests/textures/technic_silver_chest_inventory.png b/technic_chests/textures/technic_silver_chest_inventory.png index a61c4b9..b2fe835 100644 Binary files a/technic_chests/textures/technic_silver_chest_inventory.png and b/technic_chests/textures/technic_silver_chest_inventory.png differ diff --git a/technic_chests/textures/technic_wooden_chest_inventory.png b/technic_chests/textures/technic_wooden_chest_inventory.png index 145d9d2..5ffbc12 100644 Binary files a/technic_chests/textures/technic_wooden_chest_inventory.png and b/technic_chests/textures/technic_wooden_chest_inventory.png differ