From d4609f23f2344e530cf610f107029249039abf33 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sat, 29 Oct 2022 21:36:33 +0200 Subject: [PATCH] Chests: Use prepend styling and re-order elements (#608) --- technic_chests/common.lua | 4 +- technic_chests/register.lua | 117 +++++++++++------- .../textures/technic_chest_form_bg.png | Bin 1656 -> 0 bytes .../technic_copper_chest_inventory.png | Bin 3394 -> 0 bytes technic_chests/textures/technic_form_bg.png | Bin 1656 -> 0 bytes .../textures/technic_gold_chest_inventory.png | Bin 4118 -> 0 bytes .../textures/technic_iron_chest_inventory.png | Bin 3139 -> 0 bytes .../textures/technic_main_inventory.png | Bin 4628 -> 0 bytes .../technic_mithril_chest_inventory.png | Bin 4118 -> 0 bytes .../technic_silver_chest_inventory.png | Bin 3908 -> 0 bytes .../technic_wooden_chest_inventory.png | Bin 1769 -> 0 bytes 11 files changed, 77 insertions(+), 44 deletions(-) delete mode 100644 technic_chests/textures/technic_chest_form_bg.png delete mode 100644 technic_chests/textures/technic_copper_chest_inventory.png delete mode 100644 technic_chests/textures/technic_form_bg.png delete mode 100644 technic_chests/textures/technic_gold_chest_inventory.png delete mode 100644 technic_chests/textures/technic_iron_chest_inventory.png delete mode 100644 technic_chests/textures/technic_main_inventory.png delete mode 100644 technic_chests/textures/technic_mithril_chest_inventory.png delete mode 100644 technic_chests/textures/technic_silver_chest_inventory.png delete mode 100644 technic_chests/textures/technic_wooden_chest_inventory.png diff --git a/technic_chests/common.lua b/technic_chests/common.lua index 6369b7a..87ace1a 100644 --- a/technic_chests/common.lua +++ b/technic_chests/common.lua @@ -1,7 +1,7 @@ technic.chests.groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - tubedevice=1, tubedevice_receiver=1} + tubedevice=1, tubedevice_receiver=1, technic_chest=1} technic.chests.groups_noinv = {snappy=2, choppy=2, oddly_breakable_by_hand=2, - tubedevice=1, tubedevice_receiver=1, not_in_creative_inventory=1} + tubedevice=1, tubedevice_receiver=1, not_in_creative_inventory=1, technic_chest=1} technic.chests.tube = { insert_object = function(pos, node, stack, direction) diff --git a/technic_chests/register.lua b/technic_chests/register.lua index f23888d..2cde3b0 100644 --- a/technic_chests/register.lua +++ b/technic_chests/register.lua @@ -4,9 +4,10 @@ local pipeworks = rawget(_G, "pipeworks") local fs_helpers local tubelib_exists = minetest.global_exists("tubelib") +local registered_chest_data = {} -- data passed to :register() + local allow_label = "" local tube_entry = "" -local shift_edit_field = 0 if not minetest.get_modpath("pipeworks") then -- Pipeworks is not installed. Simulate using a dummy table... @@ -26,11 +27,11 @@ if not minetest.get_modpath("pipeworks") then fs_helpers.cycling_button = function() return "" end else fs_helpers = pipeworks.fs_helpers - allow_label = "label[0.9,0.36;Allow splitting incoming stacks from tubes]" - shift_edit_field = 3 + allow_label = "Allow splitting incoming stacks from tubes" tube_entry = "^pipeworks_tube_connection_metallic.png" end +-- Change the appearance of the chest local chest_mark_colors = { {"black", S("Black")}, {"blue", S("Blue")}, @@ -84,33 +85,43 @@ end local function set_formspec(pos, data, page) local meta = minetest.get_meta(pos) - local formspec = data.base_formspec - formspec = formspec..fs_helpers.cycling_button( - meta, - "image_button[0,0.35;1,0.6", - "splitstacks", - { - pipeworks.button_off, - pipeworks.button_on - } - )..allow_label + + -- Static formspec elements are in base_formspec + local fs = { data.base_formspec } + + -- Pipeworks splitting setting + fs[#fs + 1] = fs_helpers.cycling_button( + meta, + "image_button[0,0.5;1,0.6", + "splitstacks", + { + pipeworks.button_off, + pipeworks.button_on + } + ) if data.autosort then local status = meta:get_int("autosort") - formspec = formspec.."button["..(data.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")).."]" + fs[#fs + 1] = ("checkbox[%g,%g;autosort_to_%s;%s;%s]"):format( + data.hileft + 2.2, data.lotop - 1.15, + tostring(1 - status), S("Auto-sort upon exit"), tostring(status == 1)) end + if data.infotext then local formspec_infotext = minetest.formspec_escape(meta:get_string("infotext")) + + local button_fmt = "image_button[%g,0;0.8,0.8;%s;%s;]" if page == "main" then - formspec = formspec.."image_button["..(shift_edit_field+data.hileft+2.1)..",0.1;0.8,0.8;" - .."technic_pencil_icon.png;edit_infotext;]" - .."label["..(shift_edit_field+data.hileft+3)..",0;"..formspec_infotext.."]" + fs[#fs + 1] = button_fmt:format(data.hileft + 6.1, + "technic_pencil_icon.png", "edit_infotext") + + fs[#fs + 1] = "label["..(data.hileft+7.1)..",0.1;"..formspec_infotext.."]" elseif page == "edit_infotext" then - formspec = formspec.."image_button["..(shift_edit_field+data.hileft+2.1)..",0.1;0.8,0.8;" - .."technic_checkmark_icon.png;save_infotext;]" - .."field["..(shift_edit_field+data.hileft+3.3)..",0.2;4.8,1;" - .."infotext_box;"..S("Edit chest description:")..";" + fs[#fs + 1] = button_fmt:format(data.hileft + 6.1, + "technic_checkmark_icon.png", "save_infotext") + + fs[#fs + 1] = "field["..(data.hileft+7.3)..",0.2;4,1;" + .."infotext_box;;" ..formspec_infotext.."]" end end @@ -122,9 +133,9 @@ local function set_formspec(pos, data, page) else colorName = S("None") end - formspec = formspec.."label["..(data.coleft+0.2)..","..(data.lotop+3)..";"..S("Color Filter: %s"):format(colorName).."]" + fs[#fs + 1] = "label["..(data.coleft+0.2)..","..(data.lotop+3)..";"..S("Color Filter: %s"):format(colorName).."]" end - meta:set_string("formspec", formspec) + meta:set_string("formspec", table.concat(fs)) end local function sort_inventory(inv) @@ -171,6 +182,7 @@ local function get_receive_fields(name, data) if fields.sort or (data.autosort and fields.quit and meta:get_int("autosort") == 1) then sort_inventory(meta:get_inventory()) + return -- No formspec update end if fields.edit_infotext then page = "edit_infotext" @@ -191,7 +203,6 @@ local function get_receive_fields(name, data) fs_helpers.on_receive_fields(pos, fields) end - meta:get_inventory():set_size("main", data.width * data.height) set_formspec(pos, data, page) end end @@ -199,10 +210,8 @@ end function technic.chests:definition(name, data) local lname = name:lower() name = S(name) - local d = {} - for k, v in pairs(data) do d[k] = v end - data = d + -- Calculate formspec positions data.lowidth = 8 data.ovwidth = math.max(data.lowidth, data.width) data.hileft = (data.ovwidth - data.width) / 2 @@ -222,23 +231,29 @@ function technic.chests:definition(name, data) data.lotop = data.height + 2 data.ovheight = data.lotop + 4 - local front = {"technic_"..lname.."_chest_front.png"} - data.base_formspec = "size["..data.ovwidth..","..data.ovheight.."]".. - "label[0,0;"..S("%s Chest"):format(name).."]".. - "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]".. - "listring[]" + -- Set up constant formspec fields + local fs = { + "size["..data.ovwidth..","..data.ovheight.."]", + "label[0,0;"..S("%s Chest"):format(name).."]", + "list[context;main;"..data.hileft..",1;"..data.width..","..data.height..";]", + "list[current_player;main;"..data.loleft..","..data.lotop..";8,4;]", + "listring[]" + } + if #allow_label > 0 then + fs[#fs + 1] = ("label[0.9,0.5;%s]"):format(allow_label) + end + + if data.color then + fs[#fs + 1] = get_color_buttons(data.coleft, data.lotop) + end if data.sort then - data.base_formspec = data.base_formspec.."button["..data.hileft..","..(data.height+1.1)..";1,0.8;sort;"..S("Sort").."]" - end - if data.color then - data.base_formspec = data.base_formspec..get_color_buttons(data.coleft, data.lotop) + fs[#fs + 1] = ("button[%g,%g;2,0.7;sort;%s]"):format( + data.hileft, data.lotop - 1, S("Sort now")) end + data.base_formspec = table.concat(fs) + local front = {"technic_"..lname.."_chest_front.png"} local locked_after_place if data.locked then locked_after_place = function(pos, placer) @@ -372,10 +387,12 @@ local _TUBELIB_CALLBACKS = { } function technic.chests:register(name, data) + data = table.copy(data) -- drop reference local def = technic.chests:definition(name, data) local nn = "technic:"..name:lower()..(data.locked and "_locked" or "").."_chest" minetest.register_node(":"..nn, def) + registered_chest_data[nn] = data if tubelib_exists then tubelib.register_node(nn, {}, _TUBELIB_CALLBACKS) @@ -397,7 +414,11 @@ function technic.chests:register(name, data) colordef.drop = nn colordef.groups = self.groups_noinv colordef.tiles = { def.tiles[1], def.tiles[2], def.tiles[3], def.tiles[4], def.tiles[5], mk_front("technic_chest_overlay"..postfix..".png") } - minetest.register_node(":"..nn..postfix, colordef) + + local new_name = nn .. postfix + minetest.register_node(":" .. new_name, colordef) + registered_chest_data[new_name] = data -- for all colors + if tubelib_exists then tubelib.register_node(nn..postfix, {}, _TUBELIB_CALLBACKS) end @@ -405,3 +426,15 @@ function technic.chests:register(name, data) end end + +-- Migration of chest formspecs +-- Group is specified in common.lua +minetest.register_lbm({ + label = "technic_chests formspec upgrade", + name = "technic_chests:upgrade_formspec", + nodenames = {"group:technic_chest"}, + run_at_every_load = false, + action = function(pos, node) + set_formspec(pos, registered_chest_data[node.name], "main") + end +}) diff --git a/technic_chests/textures/technic_chest_form_bg.png b/technic_chests/textures/technic_chest_form_bg.png deleted file mode 100644 index 74a6a3bd142bb0e9366e79e6baf8c56b59d8d944..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1656 zcmeAS@N?(olHy`uVBq!ia0y~yVC7|CV9sP=28smBGu;7FasfUet}ZSvUS3|Ip`r2d z@mX0}rKP0}4GrDh-BYJdU9eyQgO-prP$gGMkYDgkIOx#1lM6KPzo(01NX4zUm%JI9 zfLsHm4#5ruH-#pNMvf$wKAEL!|MY&~%aaWA5il2<&v@xsyKT$f=k4qHHeGAib+NtP z-p@AaTe~UC-S6$&xr)xUs~(9t-#(ow$mWRi2Lb+r&NeLk9|g$dkgpTP>QQ4*f&+y! z8a61wfx;OL8YxW8TWi41=>hn1Y!ge|r?idoe+9It)a m(7xg6Lx#*`L&rNmSZ{kMAKoLtTmY;f7(8A5T-G@yGywn_4OyZ9 diff --git a/technic_chests/textures/technic_copper_chest_inventory.png b/technic_chests/textures/technic_copper_chest_inventory.png deleted file mode 100644 index 2f4cb12524b63e4630907a1921d595138ac33cdb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3394 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 diff --git a/technic_chests/textures/technic_gold_chest_inventory.png b/technic_chests/textures/technic_gold_chest_inventory.png deleted file mode 100644 index a549cbb86e13b7011b8b865433af5b87d5db180f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4118 zcmcImdpMNq79SMd&^ak;SGE$}wn^=hd)djJQw-&r7=+1AX6Ks05K2+xIx(1Bav7JA zag8xlQm!!x$!KpGjN4}1h8fQLeX{G>r>E!a=RD{A!!zIVzVG_2-}=34tviMWdgAN0 ztwSIX;;5fbokJi*su2jGfHfk(V$!lOf8=f`R1)mrU#>dB}prBxBY3cg)>%qan zTrO825CjAS)YsRWn3&kv*`d*Bu+7HC#@5#M^5x5&ot+d4g-)k``0yb+JDW)zvL7E@m>BMn*;tA3g+^H#Ie-rKP2(r$2i1C?_WeeAd?1#>B*ggoJ?G zzzt?*W+zUZxN_wR@NQsWprN60`t<3uXV21Tw3?cl`}gnX=jVeTFJ8O=Fk)k4-QC^6 zwv?0<@Zgoy{xwyD^dU|?$djn3)&CM+=EG#W8!3KMK zdq+n{K!vljGw|-^UsR20!*~!h#&CAOJp@E1>OG`mefThaHO2EU@r%$ix`7{F25ZuohoJR<17Z)ac58BN40 zpWoP%XgiTeX3ysiqVl6%#%>kyBN2$|C33WUSJ2R6a{0>)Yg4Q&o00sQ$y6Llk{1t` z@Eniu9r7~bWZ%HLNCrnThmN4c^w15q zYvjf@e;@o|zQ3h4bEHr+B{LKK#s}3G)L#(ZxCd42Y`4I5?$Jnx%%m8}I`xz@$bC}X zEulu-qnet26jnMvWip@6)nuqUlM%p@%92-)8NPlau;C!C_gES@*G~GFp6};|vTOxz zIiu{fn2s8gP?cEgc2YZ1!YjUS5bG|dXEm!RPEAeS!6S$4u`@hxNA@n{%SwN5S6_UI z>L;@C-zkJyZ{=A(a2w;)rBWPK^uP(H`I2~ph6ze@sxuvbD+95!{6vBPXR*qrWroVC^pk4otznBGmG4#AxEOU8PQCXMrY zY!_AmkDI0yx>7FIt(Us!=)F(^1q38CsLh^O*mG4EjV4n{NnvB55ce$%Q=vt>&&pUy z?ib2{W%57D=R@!I0=J|b%hfOxd9RS~eB)j@b0MtEDTQ+Hfdhe?y>UIKK}xdm(OY8A z*RA(8nzLJ^d!K;dsyLaH$9h~BUsDr$@;8jXI&LRuEt#An*;NCXes1S(bCO!-pA}-M z;o8T<;46?rh3|YuI))AFtnT**jlQ=w9w2Q3>O4g!x)&Z<;A+qE>yZl^W`Y3%qwziWB;%f`9VW`R7v33dp?PrcLuTALt?lE%O7wI? zXYB*0n>v;`oeZh3m}#Enj}`a{1IrzJ^oU`8-|BTrv`W8jC?FHuxhYxhoFJ+ME*#xW zx?ZqU1~54Ye`V1PE6P}@4WJx+QpQ(m!{3+BA2^B5^5*uuKp09?#WQiO2Ky3k2&)r5 z`h6vLb4_SvsSA`6P-4RBv-?(8?e$e&Vre{t>s%4#eZ5+xXs}J~!#}8uB$WvGVZpZA7e^slJu+P#UGZAKLRj2pxFzoC5xtt*E2Rx7}&?!;TFgonj{y420o&v z45CE!#42X>v^*zs=70a)eP)aueGrl%o%k_%yB6o(<^|=LhG%cx3mtIz&=KZTe0oq? zX8)n!GR!T*H8s->?2`@m(ji)( z+gn23oW{Pg%qj1uek-2=AA(n>mJqOy2_XHG?I5FI*g0DF9BzI=#!nE3(Ytr^S8}(A@b{_lFyGt5r)Y5Kgy!df-{45e3j&3>jsr{gE z&+J~=TJ{Cty8uxm)PDF!lObyP>cfU1stPB@lOeUX)j{jCZe3FP~zMDtRaz*$!_G?hf;rOe` z(7=?yl2;k`)h*aHp4Sbf1PmRiuAJ*Pkn1pw3>8Tju0r1a(n1NUkes>lUj8s{py?9y zF#HtSXZb}qgLOu9u7$t(%t-r09UGoo#`jp6`a}ruJ2++Q3w;Zcy2CiWZlB(rfu|#x zjCE9+3~XE=D%NFUSK3c{scqq4Y~=V&)q#A%LCP zi|UdDF*iun>qXMT_zLg0m^Ek{fSSgfh6RGC_BZ7!6=^;g8@CvVxb(JxGxChz0kt@J zdUSeCYt5J-G9rmjsVY03M6ckPktJAqCWIr{Y>eMzq$5v4*$v9(#e zgyjyhXz1O+;wAU)C_zIM8R4RK)O%E(sBwrZ#gSks=!Y&|+R4DQnL@7*Ur|1o4|C7I zviSq@#piMKKZlN${_{m^`Q~8zRrxG738{CKKQURZ2(DgbHQ4yZV=z{ITolQxYL|KB z?AxnQO2E)zr0P*wEqxQo?j?!AaHCCQEiFPi0ygH#NG(p6a@opIrO=Az_z>QyDBjFs z@p82f`pj_VF1f*T%WRZV4!w>*m+*MM+CrQF7$UG$IVKcA?Bt!(#DA_ oUBV`pu$+F`OaOBT4=KcGQ7qeKU&pgqlW^!0rE731U&ki!-%R!ZDgXcg diff --git a/technic_chests/textures/technic_iron_chest_inventory.png b/technic_chests/textures/technic_iron_chest_inventory.png deleted file mode 100644 index 10837958bf102f9957b44b6bdd32872cfd0bc6c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3139 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 diff --git a/technic_chests/textures/technic_mithril_chest_inventory.png b/technic_chests/textures/technic_mithril_chest_inventory.png deleted file mode 100644 index a549cbb86e13b7011b8b865433af5b87d5db180f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4118 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 diff --git a/technic_chests/textures/technic_silver_chest_inventory.png b/technic_chests/textures/technic_silver_chest_inventory.png deleted file mode 100644 index b273cae3e8aa72240813f43fac393643177c0f47..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3908 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 SHsGI)h>^bOnW9ryg8vJO>BnLK diff --git a/technic_chests/textures/technic_wooden_chest_inventory.png b/technic_chests/textures/technic_wooden_chest_inventory.png deleted file mode 100644 index 2fdc53cd1e23114a34188b4cb7fb228b80abac26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1769 zcmb`HX;4#F6vtnp7MCJg>(pw;xG_w1RHQDW64Z_X8A1>R*(5BZs1phWF$;u%>?Gir zvV;IJ><+SoMS*C7K_gaah?WXyR8nk7GiX^-l7?(O2~O*W`bqDHb{6U=$SUpw)j?Tk(zsLaev=prX4CpR~j$z-xvth~Iu{QP`i z2FKWJ_FT(gS8;JMhr=l;DFG`=OH0ek%XvH=pU;QsfQMC8Rdb_(nZk4$8ylONnxHl4 zsI#*ZngW+ZA`$p-=gyrtkEEaArC}r-BOFIiu+V7qy!rDNEcnE>?Ck6oTGyf__V!Dc zIxJfb>r2eK^&6bN-n@B-%YH1@^F%1va*mM!#QAJMvx0H2)PuC3{idk5Pxe?nJ~cfv zGo#b#^m_g5f6HJn7>!1FHBDw%=^K5XBgj0p=ix(s)Mu}s-%SfVw9NfiCN|Ec^*coe z46x_$@6AYKtubshzpFoClhYu8FPBJDY5Y*bQU-65I8lG~j8D3Z z{Ze$q+!swB?RacIxtacoOIfRMeufVwYiqPrdtz{ma0O;Zg(Pa_Z`=ROA5uDwjqx&^ zpP>svPjU?_jn|POjV+G>kAFhNTT{TCFi{P`6;P2RIzKh z$i*TQ@2^84sS&Gs`4`UlF?EK%{ZAbG_o~Xz_cPpL5AZwra>a-|(V(Z(Y(b|^Lo?__ z@=~V7A@vJnJ3>T62o*JnRxXe%`M?9MMn7#6-9DkxXstT*ggFAa>W%e8FSUW~1ppKM zCBtpxh3(>ZTM+hAuJW>?t$PQ_V)wyR*3J~5GrSzn2%zf72tN5*6Nla^xb*QITU-~_89MczYsOeTCP@L SF^}Q%gLvWyhnv3*Px}W9hj>>2