From fbb368989e2815af0c99f9fc4f1a903849abf483 Mon Sep 17 00:00:00 2001 From: Madis Date: Wed, 20 Jul 2022 22:21:44 +0300 Subject: [PATCH 1/3] Compress images --- .../src/main/resources/assets/puzzle/icon.png | Bin 2387 -> 1812 bytes .../src/main/resources/assets/puzzle/icon.png | Bin 2387 -> 1812 bytes .../puzzle/textures/gui/puzzle_button.png | Bin 1633 -> 179 bytes .../src/main/resources/assets/puzzle/icon.png | Bin 2387 -> 1812 bytes .../src/main/resources/assets/puzzle/icon.png | Bin 2387 -> 1812 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/puzzle-base/src/main/resources/assets/puzzle/icon.png b/puzzle-base/src/main/resources/assets/puzzle/icon.png index 0050c65296e5f22a25407a433cd2679b1c85c244..ee93b6dae74fb51480e3118f108b5f03fbe08a43 100644 GIT binary patch literal 1812 zcmb7_X*3&%7RO^oNiB_s6fIGsMpH{HK@l1I(pow~LRzAhS8G+3ii%QcL)&L-s6ED7 z#5QFFt#B$zG*mDo3+koko%24w_u>BUx%d9gxu5R;W?lAlk(W6o0{{Tz z-CP~L#X0SJ0Dlmx`_=6-06=Qi&C$*$X=c6rlDo2->YJv<>&bz`lLN+&fPJoKh?rn= zIl1=EBv1x;$1 z7ShksA*Jos!`&dB+{OS?Z84+3bWmFFdL{_{{{fEy*0v2VBc4|GU=5+y9;-B^r_Ib- zzkh$S`!446X(gK^`0&n&VK7*2d3=<|3&o=7DQcE?3^|;$!Ul&7^~pPHbH#)`le{pK zc-eW{U)IS!C|^6+RrdHxc2~@wWrRbkLqmdnW^)JGsyswP<0tlq6YfLZAnJsLyh3 z&$Bu|R1c<-jjXRjj54dxdd6HTB_ozX0eV#zB$Ot-)Aq+kTKeMl0Pck-SfUIdRZ#SvasXF$1q`%BBFw5T3B&* z1pjws$T*~-GR?@@F+3Ro!5@ky3-mG!4C39yTeeH*Q8WC>F$Yp+QFCwKx6Lm7KRD&y z9SfX_=cByToov_qN{P&^t%SmYbb~REKHZ3QY#d+7er@#G6%&)7lglM+rMM%u{h@=Bnq`W_V(hWfNd94`0A} zp!9c35_81@*+@u#IW$Lz5)A4)*cjyIo%`^ef%BFZbX<*4sj1^X4jS?DQh)b)i)|B* zl)>2THOWqHDM3LUuLAH#NQfME?#66SLW{wbnkRDU>@;l{>=n%~v3DvQF4(AE_&l{3 z_d<$V$eExdZ4TYpj(*-*up%P&*!qvn^jhq2jiI`vC=uDPxg`*VqxhrE!|2Y=$v6H? zA#5z}{(V#6@Uw{NBYHp8q%!q>mH6aN!h^4K6Ut$Av2BI{B@3KSMLn?ycx*tqqKq*q zWb3cj{=UAZG3H3bfv`V)K-VkZ{dC7DCrX_)d^ux4^5}HLM3wK(m+8lkBv~g*st&MM ztlv!xeZRo~fsosqLK{M?4Ua_+ilH)%1SHmGkMi$JB!lYdhfP2zTJfd01<7_^>{-xX%Njh{yBU6cxjj#*$A)`ACZ?Vth01C>8+J za{Tb7;ulb7CnGs|F_q3(PgDknp)s?V=EZGVAIb;*W%H0=Z@M(ylYsZ|Nc1n(w!j=G zx!k?GuZc*y_Zb};K1_y^bvo-1wJnciFisErJ`^57G-@Lb*VidCvlC?L%A7icA0Q1E zV)iTt{}CYtXl=I_<$jmY8~jonv{joxC42p1UGdS($rA$A12i;WeHd|20#MO)4<0 z0qI?L)kKfwBE@guztsN(j9Z`}e1{T&t0tT5BFg>GvFClGTI|c}62r`ayAq+|ZwGL5 L@^oym54!(vkdcaE literal 2387 zcmY*bXH=8h68%Ca3PC{HqZjF&t5S?yiWC(hy<-9wt{_B0APPto5Tz*>rHY73v(Te- zp8jAt z21rzR`LdN900_-F+5PEpx#CBq|3wd?;$TYR{t-wbI0uJ%1g}3m58fU9!Tr zeO@n}tgYPz8V0zbfwO`>!dxvE?=6s*^DpxJE}*N;W&6Innp!Lsd3E>uHNwgddHs5-gQF9 z9ip_~9E!riHH*l14NVj0`Rb9qD#t9l)-1eB2xX&62hz!?U7Ur*-7voXoDP?LoPXSB2NtV(G0L}`sfOh)9)j9(c<WQUI&O`A;c-d z8U-nq_dt!Bl|`ep3KoX+X1GE!Mh;2zd^d<16Re}O<&6;C=*7QZU6?!0zxTu^ z_i=4i*q-ilu|VuIA={Np1R4FCB7uSQ5Z>h9!iPo=`**>4{Sy)#CAHlqCQ??EOY5~&bNDF1 zNw*$f-Ho1JWRhiS?hGhgZ6Rh@k<2n)eg#!21h+-r)^oA64b&LNJ9aXIr@}Y zA73hFT{;}lpe}CltRQ+reBXC;JTRT~e$K-#32x$hp<;lAysJC5p2i$^QH_hE<-Su* zlucNL?YLAIuj!v4v1m24+%MCuXGBGr-?G)QvW$xF+dGmuBs6V5x) ztmgTc5Bc)1CNCGHoeoYJW4tNgWi!vMw8s#QX5pWgf-b%h1zLvHr{A5c=sUr$M>^IS zuOH=*-_)5as0klf*_vHv+zpx^ba(F?4eka$qMx*#Adyb_v%vx-OWzkp%8|E6QtGrx z*wxS3)2wkz95!0x;P&G3%xGR7Xrc{cSUEFew)~-;zS~+a84hJ$-%nlvxv>4mSY}H7 z7H6-N+r2cOo}Aj)`WQ>#Z8otvhq#=#2erJReY6RR%zP&Fu!M_$ zEez#W0@7GuZB($;z0S?iG$lp=ronv*_)n*TjV(Be=i|Yi;0sjgQGh7LY1|}EyiTSW zw<0_d2SZDPQNkHL6wo@(0oGKm2c?br_ zLtm_Xi1dqIN4yU_V@hw%rKYJ*G|DfXMJ>To=?@p{(xg-3_E>cL8e&0O9d^YX7WoT{G$bBUF|r}x$Jh~VmrgNp+= n=^HtDg1A-=EMmjKSxWsgD8q}1uA-a|5#VI+V)xAEeENR?b%&di diff --git a/puzzle-gui/src/main/resources/assets/puzzle/icon.png b/puzzle-gui/src/main/resources/assets/puzzle/icon.png index 0050c65296e5f22a25407a433cd2679b1c85c244..ee93b6dae74fb51480e3118f108b5f03fbe08a43 100644 GIT binary patch literal 1812 zcmb7_X*3&%7RO^oNiB_s6fIGsMpH{HK@l1I(pow~LRzAhS8G+3ii%QcL)&L-s6ED7 z#5QFFt#B$zG*mDo3+koko%24w_u>BUx%d9gxu5R;W?lAlk(W6o0{{Tz z-CP~L#X0SJ0Dlmx`_=6-06=Qi&C$*$X=c6rlDo2->YJv<>&bz`lLN+&fPJoKh?rn= zIl1=EBv1x;$1 z7ShksA*Jos!`&dB+{OS?Z84+3bWmFFdL{_{{{fEy*0v2VBc4|GU=5+y9;-B^r_Ib- zzkh$S`!446X(gK^`0&n&VK7*2d3=<|3&o=7DQcE?3^|;$!Ul&7^~pPHbH#)`le{pK zc-eW{U)IS!C|^6+RrdHxc2~@wWrRbkLqmdnW^)JGsyswP<0tlq6YfLZAnJsLyh3 z&$Bu|R1c<-jjXRjj54dxdd6HTB_ozX0eV#zB$Ot-)Aq+kTKeMl0Pck-SfUIdRZ#SvasXF$1q`%BBFw5T3B&* z1pjws$T*~-GR?@@F+3Ro!5@ky3-mG!4C39yTeeH*Q8WC>F$Yp+QFCwKx6Lm7KRD&y z9SfX_=cByToov_qN{P&^t%SmYbb~REKHZ3QY#d+7er@#G6%&)7lglM+rMM%u{h@=Bnq`W_V(hWfNd94`0A} zp!9c35_81@*+@u#IW$Lz5)A4)*cjyIo%`^ef%BFZbX<*4sj1^X4jS?DQh)b)i)|B* zl)>2THOWqHDM3LUuLAH#NQfME?#66SLW{wbnkRDU>@;l{>=n%~v3DvQF4(AE_&l{3 z_d<$V$eExdZ4TYpj(*-*up%P&*!qvn^jhq2jiI`vC=uDPxg`*VqxhrE!|2Y=$v6H? zA#5z}{(V#6@Uw{NBYHp8q%!q>mH6aN!h^4K6Ut$Av2BI{B@3KSMLn?ycx*tqqKq*q zWb3cj{=UAZG3H3bfv`V)K-VkZ{dC7DCrX_)d^ux4^5}HLM3wK(m+8lkBv~g*st&MM ztlv!xeZRo~fsosqLK{M?4Ua_+ilH)%1SHmGkMi$JB!lYdhfP2zTJfd01<7_^>{-xX%Njh{yBU6cxjj#*$A)`ACZ?Vth01C>8+J za{Tb7;ulb7CnGs|F_q3(PgDknp)s?V=EZGVAIb;*W%H0=Z@M(ylYsZ|Nc1n(w!j=G zx!k?GuZc*y_Zb};K1_y^bvo-1wJnciFisErJ`^57G-@Lb*VidCvlC?L%A7icA0Q1E zV)iTt{}CYtXl=I_<$jmY8~jonv{joxC42p1UGdS($rA$A12i;WeHd|20#MO)4<0 z0qI?L)kKfwBE@guztsN(j9Z`}e1{T&t0tT5BFg>GvFClGTI|c}62r`ayAq+|ZwGL5 L@^oym54!(vkdcaE literal 2387 zcmY*bXH=8h68%Ca3PC{HqZjF&t5S?yiWC(hy<-9wt{_B0APPto5Tz*>rHY73v(Te- zp8jAt z21rzR`LdN900_-F+5PEpx#CBq|3wd?;$TYR{t-wbI0uJ%1g}3m58fU9!Tr zeO@n}tgYPz8V0zbfwO`>!dxvE?=6s*^DpxJE}*N;W&6Innp!Lsd3E>uHNwgddHs5-gQF9 z9ip_~9E!riHH*l14NVj0`Rb9qD#t9l)-1eB2xX&62hz!?U7Ur*-7voXoDP?LoPXSB2NtV(G0L}`sfOh)9)j9(c<WQUI&O`A;c-d z8U-nq_dt!Bl|`ep3KoX+X1GE!Mh;2zd^d<16Re}O<&6;C=*7QZU6?!0zxTu^ z_i=4i*q-ilu|VuIA={Np1R4FCB7uSQ5Z>h9!iPo=`**>4{Sy)#CAHlqCQ??EOY5~&bNDF1 zNw*$f-Ho1JWRhiS?hGhgZ6Rh@k<2n)eg#!21h+-r)^oA64b&LNJ9aXIr@}Y zA73hFT{;}lpe}CltRQ+reBXC;JTRT~e$K-#32x$hp<;lAysJC5p2i$^QH_hE<-Su* zlucNL?YLAIuj!v4v1m24+%MCuXGBGr-?G)QvW$xF+dGmuBs6V5x) ztmgTc5Bc)1CNCGHoeoYJW4tNgWi!vMw8s#QX5pWgf-b%h1zLvHr{A5c=sUr$M>^IS zuOH=*-_)5as0klf*_vHv+zpx^ba(F?4eka$qMx*#Adyb_v%vx-OWzkp%8|E6QtGrx z*wxS3)2wkz95!0x;P&G3%xGR7Xrc{cSUEFew)~-;zS~+a84hJ$-%nlvxv>4mSY}H7 z7H6-N+r2cOo}Aj)`WQ>#Z8otvhq#=#2erJReY6RR%zP&Fu!M_$ zEez#W0@7GuZB($;z0S?iG$lp=ronv*_)n*TjV(Be=i|Yi;0sjgQGh7LY1|}EyiTSW zw<0_d2SZDPQNkHL6wo@(0oGKm2c?br_ zLtm_Xi1dqIN4yU_V@hw%rKYJ*G|DfXMJ>To=?@p{(xg-3_E>cL8e&0O9d^YX7WoT{G$bBUF|r}x$Jh~VmrgNp+= n=^HtDg1A-=EMmjKSxWsgD8q}1uA-a|5#VI+V)xAEeENR?b%&di diff --git a/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/puzzle_button.png b/puzzle-gui/src/main/resources/assets/puzzle/textures/gui/puzzle_button.png index 7d64eca4e91fd6dc2c7b5883567a474ba596f452..ddbf55566fdb1461ef028aba87f5bd8301cb5ae5 100644 GIT binary patch delta 163 zcmaFJvzc*%L_G^L0|P_nf{eL9ia)?7#MQmP=RcFl|NsBh)zvL5EE0A*Uja%nl?3?( zGce7VyG8`a3-okx46!(!oUlMBA;>{EAV^82VOguErzfXt3+D<~Mpt3wWl|xG6U0PS z*+VKt#Z7p%cz&?V=xuCBG+>BoSt%4XqlqP;Szz`7nGc+o106yc8163RU6XxF>oL%D N22WQ%mvv4FO#lr1GlKvC delta 1628 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 L@^oym54!(vkdcaE literal 2387 zcmY*bXH=8h68%Ca3PC{HqZjF&t5S?yiWC(hy<-9wt{_B0APPto5Tz*>rHY73v(Te- zp8jAt z21rzR`LdN900_-F+5PEpx#CBq|3wd?;$TYR{t-wbI0uJ%1g}3m58fU9!Tr zeO@n}tgYPz8V0zbfwO`>!dxvE?=6s*^DpxJE}*N;W&6Innp!Lsd3E>uHNwgddHs5-gQF9 z9ip_~9E!riHH*l14NVj0`Rb9qD#t9l)-1eB2xX&62hz!?U7Ur*-7voXoDP?LoPXSB2NtV(G0L}`sfOh)9)j9(c<WQUI&O`A;c-d z8U-nq_dt!Bl|`ep3KoX+X1GE!Mh;2zd^d<16Re}O<&6;C=*7QZU6?!0zxTu^ z_i=4i*q-ilu|VuIA={Np1R4FCB7uSQ5Z>h9!iPo=`**>4{Sy)#CAHlqCQ??EOY5~&bNDF1 zNw*$f-Ho1JWRhiS?hGhgZ6Rh@k<2n)eg#!21h+-r)^oA64b&LNJ9aXIr@}Y zA73hFT{;}lpe}CltRQ+reBXC;JTRT~e$K-#32x$hp<;lAysJC5p2i$^QH_hE<-Su* zlucNL?YLAIuj!v4v1m24+%MCuXGBGr-?G)QvW$xF+dGmuBs6V5x) ztmgTc5Bc)1CNCGHoeoYJW4tNgWi!vMw8s#QX5pWgf-b%h1zLvHr{A5c=sUr$M>^IS zuOH=*-_)5as0klf*_vHv+zpx^ba(F?4eka$qMx*#Adyb_v%vx-OWzkp%8|E6QtGrx z*wxS3)2wkz95!0x;P&G3%xGR7Xrc{cSUEFew)~-;zS~+a84hJ$-%nlvxv>4mSY}H7 z7H6-N+r2cOo}Aj)`WQ>#Z8otvhq#=#2erJReY6RR%zP&Fu!M_$ zEez#W0@7GuZB($;z0S?iG$lp=ronv*_)n*TjV(Be=i|Yi;0sjgQGh7LY1|}EyiTSW zw<0_d2SZDPQNkHL6wo@(0oGKm2c?br_ zLtm_Xi1dqIN4yU_V@hw%rKYJ*G|DfXMJ>To=?@p{(xg-3_E>cL8e&0O9d^YX7WoT{G$bBUF|r}x$Jh~VmrgNp+= n=^HtDg1A-=EMmjKSxWsgD8q}1uA-a|5#VI+V)xAEeENR?b%&di diff --git a/puzzle-splashscreen/src/main/resources/assets/puzzle/icon.png b/puzzle-splashscreen/src/main/resources/assets/puzzle/icon.png index 0050c65296e5f22a25407a433cd2679b1c85c244..ee93b6dae74fb51480e3118f108b5f03fbe08a43 100644 GIT binary patch literal 1812 zcmb7_X*3&%7RO^oNiB_s6fIGsMpH{HK@l1I(pow~LRzAhS8G+3ii%QcL)&L-s6ED7 z#5QFFt#B$zG*mDo3+koko%24w_u>BUx%d9gxu5R;W?lAlk(W6o0{{Tz z-CP~L#X0SJ0Dlmx`_=6-06=Qi&C$*$X=c6rlDo2->YJv<>&bz`lLN+&fPJoKh?rn= zIl1=EBv1x;$1 z7ShksA*Jos!`&dB+{OS?Z84+3bWmFFdL{_{{{fEy*0v2VBc4|GU=5+y9;-B^r_Ib- zzkh$S`!446X(gK^`0&n&VK7*2d3=<|3&o=7DQcE?3^|;$!Ul&7^~pPHbH#)`le{pK zc-eW{U)IS!C|^6+RrdHxc2~@wWrRbkLqmdnW^)JGsyswP<0tlq6YfLZAnJsLyh3 z&$Bu|R1c<-jjXRjj54dxdd6HTB_ozX0eV#zB$Ot-)Aq+kTKeMl0Pck-SfUIdRZ#SvasXF$1q`%BBFw5T3B&* z1pjws$T*~-GR?@@F+3Ro!5@ky3-mG!4C39yTeeH*Q8WC>F$Yp+QFCwKx6Lm7KRD&y z9SfX_=cByToov_qN{P&^t%SmYbb~REKHZ3QY#d+7er@#G6%&)7lglM+rMM%u{h@=Bnq`W_V(hWfNd94`0A} zp!9c35_81@*+@u#IW$Lz5)A4)*cjyIo%`^ef%BFZbX<*4sj1^X4jS?DQh)b)i)|B* zl)>2THOWqHDM3LUuLAH#NQfME?#66SLW{wbnkRDU>@;l{>=n%~v3DvQF4(AE_&l{3 z_d<$V$eExdZ4TYpj(*-*up%P&*!qvn^jhq2jiI`vC=uDPxg`*VqxhrE!|2Y=$v6H? zA#5z}{(V#6@Uw{NBYHp8q%!q>mH6aN!h^4K6Ut$Av2BI{B@3KSMLn?ycx*tqqKq*q zWb3cj{=UAZG3H3bfv`V)K-VkZ{dC7DCrX_)d^ux4^5}HLM3wK(m+8lkBv~g*st&MM ztlv!xeZRo~fsosqLK{M?4Ua_+ilH)%1SHmGkMi$JB!lYdhfP2zTJfd01<7_^>{-xX%Njh{yBU6cxjj#*$A)`ACZ?Vth01C>8+J za{Tb7;ulb7CnGs|F_q3(PgDknp)s?V=EZGVAIb;*W%H0=Z@M(ylYsZ|Nc1n(w!j=G zx!k?GuZc*y_Zb};K1_y^bvo-1wJnciFisErJ`^57G-@Lb*VidCvlC?L%A7icA0Q1E zV)iTt{}CYtXl=I_<$jmY8~jonv{joxC42p1UGdS($rA$A12i;WeHd|20#MO)4<0 z0qI?L)kKfwBE@guztsN(j9Z`}e1{T&t0tT5BFg>GvFClGTI|c}62r`ayAq+|ZwGL5 L@^oym54!(vkdcaE literal 2387 zcmY*bXH=8h68%Ca3PC{HqZjF&t5S?yiWC(hy<-9wt{_B0APPto5Tz*>rHY73v(Te- zp8jAt z21rzR`LdN900_-F+5PEpx#CBq|3wd?;$TYR{t-wbI0uJ%1g}3m58fU9!Tr zeO@n}tgYPz8V0zbfwO`>!dxvE?=6s*^DpxJE}*N;W&6Innp!Lsd3E>uHNwgddHs5-gQF9 z9ip_~9E!riHH*l14NVj0`Rb9qD#t9l)-1eB2xX&62hz!?U7Ur*-7voXoDP?LoPXSB2NtV(G0L}`sfOh)9)j9(c<WQUI&O`A;c-d z8U-nq_dt!Bl|`ep3KoX+X1GE!Mh;2zd^d<16Re}O<&6;C=*7QZU6?!0zxTu^ z_i=4i*q-ilu|VuIA={Np1R4FCB7uSQ5Z>h9!iPo=`**>4{Sy)#CAHlqCQ??EOY5~&bNDF1 zNw*$f-Ho1JWRhiS?hGhgZ6Rh@k<2n)eg#!21h+-r)^oA64b&LNJ9aXIr@}Y zA73hFT{;}lpe}CltRQ+reBXC;JTRT~e$K-#32x$hp<;lAysJC5p2i$^QH_hE<-Su* zlucNL?YLAIuj!v4v1m24+%MCuXGBGr-?G)QvW$xF+dGmuBs6V5x) ztmgTc5Bc)1CNCGHoeoYJW4tNgWi!vMw8s#QX5pWgf-b%h1zLvHr{A5c=sUr$M>^IS zuOH=*-_)5as0klf*_vHv+zpx^ba(F?4eka$qMx*#Adyb_v%vx-OWzkp%8|E6QtGrx z*wxS3)2wkz95!0x;P&G3%xGR7Xrc{cSUEFew)~-;zS~+a84hJ$-%nlvxv>4mSY}H7 z7H6-N+r2cOo}Aj)`WQ>#Z8otvhq#=#2erJReY6RR%zP&Fu!M_$ zEez#W0@7GuZB($;z0S?iG$lp=ronv*_)n*TjV(Be=i|Yi;0sjgQGh7LY1|}EyiTSW zw<0_d2SZDPQNkHL6wo@(0oGKm2c?br_ zLtm_Xi1dqIN4yU_V@hw%rKYJ*G|DfXMJ>To=?@p{(xg-3_E>cL8e&0O9d^YX7WoT{G$bBUF|r}x$Jh~VmrgNp+= n=^HtDg1A-=EMmjKSxWsgD8q}1uA-a|5#VI+V)xAEeENR?b%&di From 05bea0aab1fcf3ce8f6baeae3d07d4b777f80996 Mon Sep 17 00:00:00 2001 From: Traben Date: Mon, 1 Aug 2022 15:01:16 +1000 Subject: [PATCH 2/3] ETF 4.0 support added --- gradle.properties | 4 +-- .../java/net/puzzlemc/gui/PuzzleClient.java | 33 ++++++++++--------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/gradle.properties b/gradle.properties index 836aacf..4a56b8a 100755 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Done to increase the memory available to gradle. -org.gradle.jvmargs=-Xmx1G +org.gradle.jvmargs=-Xmx4G # Fabric Properties # check these on https://fabricmc.net/use @@ -28,4 +28,4 @@ org.gradle.jvmargs=-Xmx1G complete_config_version = 1.0.0 spruceui_version=4.0.0+1.19 midnightlib_version=0.5.2 - entitytexturefeatures_version=3.1.5 + entitytexturefeatures_version=4.0.1.fabric diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java index 63ed02c..2a08309 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java @@ -5,7 +5,6 @@ import dev.lambdaurora.lambdabettergrass.LambdaBetterGrass; import dev.lambdaurora.lambdynlights.DynamicLightsConfig; import dev.lambdaurora.lambdynlights.LambDynLights; import eu.midnightdust.cullleaves.config.CullLeavesConfig; -import eu.midnightdust.lib.config.AutoModMenu; import me.pepperbell.continuity.client.config.ContinuityConfig; import me.pepperbell.continuity.client.config.Option; import net.dorianpb.cem.internal.config.CemConfig; @@ -21,9 +20,8 @@ import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.puzzlemc.splashscreen.PuzzleSplashScreen; import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; -import traben.entity_texture_features.client.ETFClient; +import traben.entity_texture_features.ETFApi; import traben.entity_texture_features.config.ETFConfig; -import traben.entity_texture_features.config.ETFConfigScreen; public class PuzzleClient implements ClientModInitializer { @@ -160,32 +158,37 @@ public class PuzzleClient implements ClientModInitializer { } if (FabricLoader.getInstance().isModLoaded("entity_texture_features") && !PuzzleConfig.disabledIntegrations.contains("entity_texture_features")) { PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.title"))); - ETFConfig etfConfig = ETFClient.ETFConfigData; - ETFConfigScreen etfConfigScreen = new ETFConfigScreen(); + ETFConfig etfConfig = ETFApi.getETFConfigObject; + //ETFConfigScreen etfConfigScreen = new ETFConfigScreen(); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.enable_custom_textures.title"), (button) -> button.setMessage(etfConfig.enableCustomTextures ? YES : NO), (button) -> { etfConfig.enableCustomTextures = !etfConfig.enableCustomTextures; - etfConfigScreen.saveConfig(); - etfConfigScreen.resetVisuals(); + ETFApi.saveETFConfigChangesAndResetETF(); + //etfConfigScreen.saveConfig(); + //etfConfigScreen.resetVisuals(); })); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.enable_emissive_textures.title"), (button) -> button.setMessage(etfConfig.enableEmissiveTextures ? YES : NO), (button) -> { etfConfig.enableEmissiveTextures = !etfConfig.enableEmissiveTextures; - etfConfigScreen.saveConfig(); - etfConfigScreen.resetVisuals(); + ETFApi.saveETFConfigChangesAndResetETF(); + //etfConfigScreen.saveConfig(); + //etfConfigScreen.resetVisuals(); })); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Emissive Texture Rendering Mode"), (button) -> button.setMessage(etfConfig.fullBrightEmissives ? Text.of("Brighter") : Text.of("Default")), (button) -> { etfConfig.fullBrightEmissives = !etfConfig.fullBrightEmissives ; - etfConfigScreen.saveConfig(); - etfConfigScreen.resetVisuals(); + ETFApi.saveETFConfigChangesAndResetETF(); + //etfConfigScreen.saveConfig(); + //etfConfigScreen.resetVisuals(); })); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.blinking_mob_settings.title"), (button) -> button.setMessage(etfConfig.enableBlinking ? YES : NO), (button) -> { etfConfig.enableBlinking = !etfConfig.enableBlinking; - etfConfigScreen.saveConfig(); - etfConfigScreen.resetVisuals(); + ETFApi.saveETFConfigChangesAndResetETF(); + //etfConfigScreen.saveConfig(); + //etfConfigScreen.resetVisuals(); })); PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Enable Player Skin Features"), (button) -> button.setMessage(etfConfig.skinFeaturesEnabled ? YES : NO), (button) -> { etfConfig.skinFeaturesEnabled = !etfConfig.skinFeaturesEnabled; - etfConfigScreen.saveConfig(); - etfConfigScreen.resetVisuals(); + ETFApi.saveETFConfigChangesAndResetETF(); + //etfConfigScreen.saveConfig(); + //etfConfigScreen.resetVisuals(); })); } lateInitDone = true; From f89fc08505740de86cc93a8135cd9a4004851836 Mon Sep 17 00:00:00 2001 From: Motschen Date: Tue, 2 Aug 2022 14:05:47 +0200 Subject: [PATCH 3/3] Puzzle 1.4.0 - Fixes, Integrations & Tooltip - Fixed #41 (ETF 4.0+ crashing) - Fixed #39 (Broken update checker) - Fixed slider widgets being broken - Hide buttons when options are empty (Closes #10) - More mod integrations (Closes #20) - DynamicFPS - Borderless Mining - Colormatic - Added tooltips for all Puzzle options - Made everything translatable - Improve German translations --- build.gradle | 4 + gradle.properties | 8 +- puzzle-gui/build.gradle | 3 + .../java/net/puzzlemc/gui/IrisCompat.java | 6 +- .../java/net/puzzlemc/gui/PuzzleClient.java | 126 +++++++++++++++--- .../net/puzzlemc/gui/screen/IrisButton.java | 17 --- .../gui/screen/LoadingScreenBackgrond.java | 14 -- .../gui/screen/PuzzleOptionsScreen.java | 12 +- .../page/AbstractPuzzleOptionsPage.java | 10 +- .../screen/widget/PuzzleOptionListWidget.java | 48 ++++++- .../gui/screen/widget/PuzzleSliderWidget.java | 5 +- .../gui/screen/widget/PuzzleWidget.java | 19 ++- .../resources/assets/puzzle/lang/de_de.json | 32 ++++- .../resources/assets/puzzle/lang/en_us.json | 28 +++- 14 files changed, 245 insertions(+), 87 deletions(-) delete mode 100755 puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java delete mode 100755 puzzle-gui/src/main/java/net/puzzlemc/gui/screen/LoadingScreenBackgrond.java diff --git a/build.gradle b/build.gradle index ef71cdc..acf5a15 100755 --- a/build.gradle +++ b/build.gradle @@ -127,6 +127,10 @@ dependencies { modCompileOnly ("maven.modrinth:cit-resewn:${project.cit_resewn_version}") modImplementation ("maven.modrinth:continuity:${project.continuity_version}") modImplementation ("maven.modrinth:animatica:${project.animatica_version}") + modImplementation ("maven.modrinth:colormatic:${project.colormatic_version}") + modImplementation ("maven.modrinth:borderless-mining:${project.borderless_mining_version}") + modImplementation ("maven.modrinth:dynamic-fps:${project.dynamic_fps_version}") + modImplementation("com.moandjiezana.toml:toml4j:${project.toml4j_version}") modImplementation ("maven.modrinth:entitytexturefeatures:${project.entitytexturefeatures_version}") modImplementation ("maven.modrinth:cem:${project.cem_version}") modImplementation "com.gitlab.Lortseam:completeconfig:${project.complete_config_version}" diff --git a/gradle.properties b/gradle.properties index 4a56b8a..37243b4 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx4G loader_version=0.14.8 # Mod Properties - mod_version = 1.3.4 + mod_version = 1.4.0-1.19 maven_group = net.puzzlemc archives_base_name = puzzle @@ -23,7 +23,11 @@ org.gradle.jvmargs=-Xmx4G iris_version = 1.19.x-v1.2.5 continuity_version = 2.0.0+1.19 animatica_version = 0.5+1.19 - cit_resewn_version = 1.0.1+1.18.2 + colormatic_version = 3.1.2 + borderless_mining_version = 1.1.5+1.19 + dynamic_fps_version = 2.2.0 + toml4j_version = 0.7.2 + cit_resewn_version = 1.1.1+1.19 cem_version = 0.7.1-1.19 complete_config_version = 1.0.0 spruceui_version=4.0.0+1.19 diff --git a/puzzle-gui/build.gradle b/puzzle-gui/build.gradle index 057ed1c..9dc69da 100755 --- a/puzzle-gui/build.gradle +++ b/puzzle-gui/build.gradle @@ -42,6 +42,9 @@ dependencies { modImplementation ("maven.modrinth:lambdabettergrass:${project.lbg_version}") modImplementation ("maven.modrinth:iris:${project.iris_version}") modImplementation ("maven.modrinth:cit-resewn:${project.cit_resewn_version}") + modImplementation ("maven.modrinth:colormatic:${project.colormatic_version}") + modImplementation ("maven.modrinth:borderless-mining:${project.borderless_mining_version}") + modImplementation ("maven.modrinth:dynamic-fps:${project.dynamic_fps_version}") modImplementation ("maven.modrinth:entitytexturefeatures:${project.entitytexturefeatures_version}") modImplementation ("maven.modrinth:cem:${project.cem_version}") modImplementation "com.gitlab.Lortseam:completeconfig:${project.complete_config_version}" diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java index 4ceedbf..4f3d918 100644 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/IrisCompat.java @@ -1,10 +1,12 @@ package net.puzzlemc.gui; +import eu.midnightdust.lib.util.MidnightColorUtil; import net.fabricmc.loader.api.FabricLoader; import net.irisshaders.iris.api.v0.IrisApi; import net.irisshaders.iris.api.v0.IrisApiConfig; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.text.Style; import net.minecraft.text.Text; import net.puzzlemc.gui.screen.widget.PuzzleWidget; @@ -12,11 +14,11 @@ public class IrisCompat { public static void init() { if (FabricLoader.getInstance().isModLoaded("iris")) { PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("Iris"))); - PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.of("Enable Shaders"), (button) -> button.setMessage(IrisApi.getInstance().getConfig().areShadersEnabled() ? PuzzleClient.YES : PuzzleClient.NO), (button) -> { + PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.translatable("iris.puzzle.option.enableShaders"), (button) -> button.setMessage(IrisApi.getInstance().getConfig().areShadersEnabled() ? PuzzleClient.YES : PuzzleClient.NO), (button) -> { IrisApiConfig irisConfig = IrisApi.getInstance().getConfig(); irisConfig.setShadersEnabledAndApply(!irisConfig.areShadersEnabled()); })); - PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.translatable("options.iris.shaderPackSelection.title"), (button) -> button.setMessage(Text.of("OPEN")), (button) -> { + PuzzleApi.addToGraphicsOptions(new PuzzleWidget(Text.translatable("options.iris.shaderPackSelection.title"), (button) -> button.setMessage(Text.literal("➥ ").append(Text.translatable("iris.puzzle.option.open").setStyle(Style.EMPTY.withColor(MidnightColorUtil.radialRainbow(0.5f, 1).getRGB())))), (button) -> { MinecraftClient client = MinecraftClient.getInstance(); client.setScreen((Screen) IrisApi.getInstance().openMainIrisScreenObj(client.currentScreen)); })); diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java index 2a08309..b60323d 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/PuzzleClient.java @@ -4,7 +4,13 @@ import dev.lambdaurora.lambdabettergrass.LBGConfig; import dev.lambdaurora.lambdabettergrass.LambdaBetterGrass; import dev.lambdaurora.lambdynlights.DynamicLightsConfig; import dev.lambdaurora.lambdynlights.LambDynLights; +import dynamicfps.DynamicFPSConfig; +import dynamicfps.DynamicFPSMod; +import eu.midnightdust.core.MidnightLibClient; import eu.midnightdust.cullleaves.config.CullLeavesConfig; +import io.github.kvverti.colormatic.Colormatic; +import io.github.kvverti.colormatic.ColormaticConfigController; +import link.infra.borderlessmining.config.ConfigHandler; import me.pepperbell.continuity.client.config.ContinuityConfig; import me.pepperbell.continuity.client.config.Option; import net.dorianpb.cem.internal.config.CemConfig; @@ -22,6 +28,7 @@ import net.puzzlemc.splashscreen.PuzzleSplashScreen; import shcm.shsupercm.fabric.citresewn.config.CITResewnConfig; import traben.entity_texture_features.ETFApi; import traben.entity_texture_features.config.ETFConfig; +import io.github.kvverti.colormatic.ColormaticConfig; public class PuzzleClient implements ClientModInitializer { @@ -31,6 +38,7 @@ public class PuzzleClient implements ClientModInitializer { @Override public void onInitializeClient() { + MidnightLibClient.hiddenMods.add("puzzle"); MinecraftClient client = MinecraftClient.getInstance(); PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.of("Puzzle"))); PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.translatable("puzzle.option.check_for_updates"), (button) -> button.setMessage(PuzzleConfig.checkUpdates ? YES : NO), (button) -> { @@ -65,12 +73,102 @@ public class PuzzleClient implements ClientModInitializer { } if (FabricLoader.getInstance().isModLoaded("cullleaves") && !PuzzleConfig.disabledIntegrations.contains("cullleaves")) { PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("CullLeaves"))); - PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("Cull Leaves"), (button) -> button.setMessage(CullLeavesConfig.enabled ? YES : NO), (button) -> { + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("cullleaves.puzzle.option.enabled"), (button) -> button.setMessage(CullLeavesConfig.enabled ? YES : NO), (button) -> { CullLeavesConfig.enabled = !CullLeavesConfig.enabled; CullLeavesConfig.write("cullleaves"); MinecraftClient.getInstance().worldRenderer.reload(); })); } + if (FabricLoader.getInstance().isModLoaded("colormatic") && !PuzzleConfig.disabledIntegrations.contains("colormatic")) { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Colormatic"))); + ColormaticConfig colormaticConfig = Colormatic.config(); + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("colormatic.config.option.clearSky"), (button) -> button.setMessage(colormaticConfig.clearSky ? YES : NO), (button) -> { + colormaticConfig.clearSky = !colormaticConfig.clearSky; + ColormaticConfigController.persist(colormaticConfig); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("colormatic.config.option.clearVoid"), (button) -> button.setMessage(colormaticConfig.clearVoid ? YES : NO), (button) -> { + colormaticConfig.clearVoid = !colormaticConfig.clearVoid; + ColormaticConfigController.persist(colormaticConfig); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("colormatic.config.option.blendSkyLight"), (button) -> button.setMessage(colormaticConfig.blendSkyLight ? YES : NO), (button) -> { + colormaticConfig.blendSkyLight = !colormaticConfig.blendSkyLight; + ColormaticConfigController.persist(colormaticConfig); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("colormatic.config.option.flickerBlockLight"), (button) -> button.setMessage(colormaticConfig.flickerBlockLight ? YES : NO), (button) -> { + colormaticConfig.flickerBlockLight = !colormaticConfig.flickerBlockLight; + ColormaticConfigController.persist(colormaticConfig); + })); + PuzzleApi.addToResourceOptions(new PuzzleWidget(0, 100, Text.translatable("colormatic.config.option.relativeBlockLightIntensity"), + () -> (int) (100*(1.0 - colormaticConfig.relativeBlockLightIntensityExponent / -16.0)), + (button) -> button.setMessage(Text.translatable("colormatic.config.option.relativeBlockLightIntensity") + .append(": ") + .append(Text.literal(String.valueOf((int)(100 * Math.exp(ColormaticConfig.scaled(colormaticConfig.relativeBlockLightIntensityExponent))))).append("%"))), + (slider) -> { + try { + colormaticConfig.relativeBlockLightIntensityExponent = ((1.00 - ((slider.getInt())/100f)) * -16.0); + ColormaticConfigController.persist(colormaticConfig); + } + catch (NumberFormatException ignored) {} + })); + } + if (FabricLoader.getInstance().isModLoaded("dynamicfps") && !PuzzleConfig.disabledIntegrations.contains("dynamicfps")) { + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.of("Dynamic FPS"))); + DynamicFPSConfig fpsConfig = DynamicFPSMod.config; + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.reduce_when_unfocused"), (button) -> button.setMessage(fpsConfig.reduceFPSWhenUnfocused ? YES : NO), (button) -> { + fpsConfig.reduceFPSWhenUnfocused = !fpsConfig.reduceFPSWhenUnfocused; + fpsConfig.save(); + })); + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 60,Text.translatable("config.dynamicfps.unfocused_fps"), () -> fpsConfig.unfocusedFPS, + (button) -> button.setMessage(Text.of(fpsConfig.unfocusedFPS + " FPS")), + (slider) -> { + try { + fpsConfig.unfocusedFPS = slider.getInt(); + } + catch (NumberFormatException ignored) {} + finally {fpsConfig.save();} + })); + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.restore_when_hovered"), (button) -> button.setMessage(fpsConfig.restoreFPSWhenHovered ? YES : NO), (button) -> { + fpsConfig.restoreFPSWhenHovered = !fpsConfig.restoreFPSWhenHovered; + fpsConfig.save(); + })); + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(Text.translatable("config.dynamicfps.run_gc_on_unfocus"), (button) -> button.setMessage(fpsConfig.runGCOnUnfocus ? YES : NO), (button) -> { + fpsConfig.runGCOnUnfocus = !fpsConfig.runGCOnUnfocus; + fpsConfig.save(); + })); + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 100,Text.translatable("config.dynamicfps.unfocused_volume"), () -> ((Number)(fpsConfig.unfocusedVolumeMultiplier * 100)).intValue(), + (button) -> button.setMessage(Text.of(((Number)(fpsConfig.unfocusedVolumeMultiplier * 100)).intValue() + "%")), + (slider) -> { + try { + fpsConfig.unfocusedVolumeMultiplier = ((Number)slider.getInt()).floatValue() / 100; + } + catch (NumberFormatException ignored) {} + finally {fpsConfig.save();} + })); + PuzzleApi.addToPerformanceOptions(new PuzzleWidget(0, 100,Text.translatable("config.dynamicfps.hidden_volume"), () -> ((Number)(fpsConfig.hiddenVolumeMultiplier * 100)).intValue(), + (button) -> button.setMessage(Text.of(((Number)(fpsConfig.hiddenVolumeMultiplier * 100)).intValue() + "%")), + (slider) -> { + try { + fpsConfig.hiddenVolumeMultiplier = ((Number)slider.getInt()).floatValue() / 100; + } + catch (NumberFormatException ignored) {} + finally {fpsConfig.save();} + })); + } + if (FabricLoader.getInstance().isModLoaded("borderlessmining") && !PuzzleConfig.disabledIntegrations.contains("borderlessmining")) { + PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.of("Borderless Mining"))); + ConfigHandler bmConfig = ConfigHandler.getInstance(); + PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.translatable("config.borderlessmining.general.enabled"), (button) -> button.setMessage(bmConfig.isEnabledOrPending() ? YES : NO), (button) -> { + bmConfig.setEnabledPending(!bmConfig.isEnabledOrPending()); + bmConfig.save(); + })); + if (MinecraftClient.IS_SYSTEM_MAC) { + PuzzleApi.addToMiscOptions(new PuzzleWidget(Text.translatable("config.borderlessmining.general.enabledmac"), (button) -> button.setMessage(bmConfig.enableMacOS ? YES : NO), (button) -> { + bmConfig.enableMacOS = !bmConfig.enableMacOS; + bmConfig.setEnabledPending(bmConfig.isEnabled()); + bmConfig.save(); + })); + } + } if (FabricLoader.getInstance().isModLoaded("iris") && !PuzzleConfig.disabledIntegrations.contains("iris")) { IrisCompat.init(); } @@ -108,7 +206,7 @@ public class PuzzleClient implements ClientModInitializer { citConfig.broken_paths = !citConfig.broken_paths; citConfig.write(); })); - PuzzleApi.addToResourceOptions(new PuzzleWidget(0, 100,Text.translatable("config.citresewn.cache_ms.title"), (slider) -> slider.setInt(citConfig.cache_ms), + PuzzleApi.addToResourceOptions(new PuzzleWidget(0, 100,Text.translatable("config.citresewn.cache_ms.title"), () -> citConfig.cache_ms, (button) -> button.setMessage(message(citConfig)), (slider) -> { try { @@ -157,38 +255,28 @@ public class PuzzleClient implements ClientModInitializer { }); } if (FabricLoader.getInstance().isModLoaded("entity_texture_features") && !PuzzleConfig.disabledIntegrations.contains("entity_texture_features")) { - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.title"))); + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.title"))); ETFConfig etfConfig = ETFApi.getETFConfigObject; - //ETFConfigScreen etfConfigScreen = new ETFConfigScreen(); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.enable_custom_textures.title"), (button) -> button.setMessage(etfConfig.enableCustomTextures ? YES : NO), (button) -> { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.enable_custom_textures.title"), (button) -> button.setMessage(etfConfig.enableCustomTextures ? YES : NO), (button) -> { etfConfig.enableCustomTextures = !etfConfig.enableCustomTextures; ETFApi.saveETFConfigChangesAndResetETF(); - //etfConfigScreen.saveConfig(); - //etfConfigScreen.resetVisuals(); })); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.enable_emissive_textures.title"), (button) -> button.setMessage(etfConfig.enableEmissiveTextures ? YES : NO), (button) -> { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.enable_emissive_textures.title"), (button) -> button.setMessage(etfConfig.enableEmissiveTextures ? YES : NO), (button) -> { etfConfig.enableEmissiveTextures = !etfConfig.enableEmissiveTextures; ETFApi.saveETFConfigChangesAndResetETF(); - //etfConfigScreen.saveConfig(); - //etfConfigScreen.resetVisuals(); })); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Emissive Texture Rendering Mode"), (button) -> button.setMessage(etfConfig.fullBrightEmissives ? Text.of("Brighter") : Text.of("Default")), (button) -> { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.full_bright_emissives.title"), (button) -> button.setMessage( + etfConfig.fullBrightEmissives ? Text.translatable("entity_texture_features.puzzle.emissive_type.brighter") : Text.translatable("entity_texture_features.puzzle.emissive_type.default")), (button) -> { etfConfig.fullBrightEmissives = !etfConfig.fullBrightEmissives ; ETFApi.saveETFConfigChangesAndResetETF(); - //etfConfigScreen.saveConfig(); - //etfConfigScreen.resetVisuals(); })); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.etf.blinking_mob_settings.title"), (button) -> button.setMessage(etfConfig.enableBlinking ? YES : NO), (button) -> { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.blinking_mob_settings.title"), (button) -> button.setMessage(etfConfig.enableBlinking ? YES : NO), (button) -> { etfConfig.enableBlinking = !etfConfig.enableBlinking; ETFApi.saveETFConfigChangesAndResetETF(); - //etfConfigScreen.saveConfig(); - //etfConfigScreen.resetVisuals(); })); - PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.of("Enable Player Skin Features"), (button) -> button.setMessage(etfConfig.skinFeaturesEnabled ? YES : NO), (button) -> { + PuzzleApi.addToResourceOptions(new PuzzleWidget(Text.translatable("config.entity_texture_features.player_skin_features.title"), (button) -> button.setMessage(etfConfig.skinFeaturesEnabled ? YES : NO), (button) -> { etfConfig.skinFeaturesEnabled = !etfConfig.skinFeaturesEnabled; ETFApi.saveETFConfigChangesAndResetETF(); - //etfConfigScreen.saveConfig(); - //etfConfigScreen.resetVisuals(); })); } lateInitDone = true; diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java deleted file mode 100755 index aad8a6b..0000000 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/IrisButton.java +++ /dev/null @@ -1,17 +0,0 @@ -package net.puzzlemc.gui.screen; - -import net.coderbot.iris.gui.screen.ShaderPackScreen; -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.gui.DrawableHelper; -import net.minecraft.client.gui.screen.Screen; -import net.minecraft.client.gui.widget.ButtonWidget; - -import java.util.Objects; - -public class IrisButton extends DrawableHelper { - public static ButtonWidget getButton(int x, int y, int width, int height, Screen parent, MinecraftClient client) { - ShaderPackScreen shaderPackPage = new ShaderPackScreen(parent); - return new ButtonWidget(x, y, width, height, shaderPackPage.getTitle().copy().append("..."), (button) -> - Objects.requireNonNull(client).setScreen(shaderPackPage)); - } -} diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/LoadingScreenBackgrond.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/LoadingScreenBackgrond.java deleted file mode 100755 index 8194c45..0000000 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/LoadingScreenBackgrond.java +++ /dev/null @@ -1,14 +0,0 @@ -package net.puzzlemc.gui.screen; - -import net.minecraft.client.MinecraftClient; -import net.minecraft.client.util.math.MatrixStack; - -public class LoadingScreenBackgrond { - public static void render(MinecraftClient client, MatrixStack matrices, int width, int height, float delta) { -// if (client.world != null) { -// LogManager.getLogManager().getLogger("Puzzle").info(client.world.getDimension().toString()); -// } -// client.getTextureManager().bindTexture(new Identifier("minecraft","optifine/gui/loading/background0.png")); -// DrawableHelper.drawTexture(matrices,0,0,width,height,0,0,width,height,width,height); - } -} diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java index 2cb152a..1a78ac0 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/PuzzleOptionsScreen.java @@ -2,6 +2,7 @@ package net.puzzlemc.gui.screen; import net.minecraft.screen.ScreenTexts; import net.minecraft.text.Text; +import net.puzzlemc.gui.PuzzleApi; import net.puzzlemc.gui.PuzzleClient; import net.puzzlemc.gui.screen.page.GraphicsPage; import net.puzzlemc.gui.screen.page.MiscPage; @@ -30,13 +31,10 @@ public class PuzzleOptionsScreen extends Screen { PerformancePage performancePage = new PerformancePage(this); ResourcesPage resourcesPage = new ResourcesPage(this); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 48 - 6, 150, 20, graphicsPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(graphicsPage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 48 - 6, 150, 20, resourcesPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(resourcesPage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, performancePage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(performancePage))); - this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 72 - 6, 150, 20, miscPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(miscPage))); -// if (FabricLoader.getInstance().isModLoaded("iris")) { -// this.addDrawableChild(IrisButton.getButton(this.width / 2 - 155, this.height / 6 + 96 - 6, 310, 20, this, client)); -// } + if (!PuzzleApi.GRAPHICS_OPTIONS.isEmpty()) this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 48 - 6, 150, 20, graphicsPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(graphicsPage))); + if (!PuzzleApi.RESOURCE_OPTIONS.isEmpty()) this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 48 - 6, 150, 20, resourcesPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(resourcesPage))); + if (!PuzzleApi.PERFORMANCE_OPTIONS.isEmpty()) this.addDrawableChild(new ButtonWidget(this.width / 2 - 155, this.height / 6 + 72 - 6, 150, 20, performancePage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(performancePage))); + if (!PuzzleApi.MISC_OPTIONS.isEmpty()) this.addDrawableChild(new ButtonWidget(this.width / 2 + 5, this.height / 6 + 72 - 6, 150, 20, miscPage.getTitle().copy().append("..."), (button) -> Objects.requireNonNull(client).setScreen(miscPage))); this.addDrawableChild(new ButtonWidget(this.width / 2 - 100, this.height / 6 + 168, 200, 20, ScreenTexts.DONE, (button) -> Objects.requireNonNull(client).setScreen(parent))); } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java index 1544693..1b951bc 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/page/AbstractPuzzleOptionsPage.java @@ -12,8 +12,9 @@ import java.util.List; import java.util.Objects; public abstract class AbstractPuzzleOptionsPage extends Screen { - private PuzzleOptionListWidget list; + public PuzzleOptionListWidget list; private final List options; + public List tooltip = null; public AbstractPuzzleOptionsPage(Screen parent, Text title, List options) { super(title); @@ -41,5 +42,12 @@ public abstract class AbstractPuzzleOptionsPage extends Screen { drawCenteredText(matrices, textRenderer, title, width/2, 15, 0xFFFFFF); super.render(matrices, mouseX, mouseY, delta); + if (tooltip != null) { + if (this.list.getFocused() != null && (this.list.getHoveredEntry() == null || this.list.getHoveredEntry().button == null || !this.list.getHoveredEntry().button.isMouseOver(mouseX, mouseY))) { + renderTooltip(matrices, tooltip, this.list.getFocused().getX() + this.list.getFocused().getWidth(), this.list.getFocused().getY() + (this.list.getFocused().getHeight() * 2)); + } + else renderTooltip(matrices, tooltip, mouseX, mouseY); + } + tooltip = null; } } diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java index aa5f635..f2edea3 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleOptionListWidget.java @@ -8,8 +8,11 @@ import net.minecraft.client.gui.Element; import net.minecraft.client.gui.Selectable; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.ElementListWidget; +import net.minecraft.client.resource.language.I18n; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; +import net.minecraft.text.TranslatableTextContent; +import net.puzzlemc.gui.screen.page.AbstractPuzzleOptionsPage; import org.apache.logging.log4j.LogManager; import java.util.*; @@ -35,7 +38,7 @@ public class PuzzleOptionListWidget extends ElementListWidget { private static final TextRenderer textRenderer = MinecraftClient.getInstance().textRenderer; private List buttons = new ArrayList<>(); - private final ClickableWidget button; - private final Text text; + public final ClickableWidget button; + public final Text text; + private MinecraftClient client = MinecraftClient.getInstance(); private ButtonEntry(ClickableWidget button, Text text) { if (button != null) - this.buttons.add(button); + this.buttons.add(button); this.button = button; this.text = text; } @@ -75,6 +84,37 @@ public class PuzzleOptionListWidget extends ElementListWidget list = new ArrayList<>(); + for (String str : I18n.translate(key).split("\n")) + list.add(Text.literal(str)); + page.tooltip = list; + } + } + } + public int getY() { + return button.y; + } + public int getX() { + return button.x; + } + public int getHeight() { + return button.getHeight(); + } + public int getWidth() { + return button.getWidth(); } public List children() { diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java index f163d28..fc9e5d3 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleSliderWidget.java @@ -9,13 +9,12 @@ public class PuzzleSliderWidget extends SliderWidget { private final PuzzleWidget.TextAction setTextAction; private final PuzzleWidget.ChangeSliderValueAction changeAction; - public PuzzleSliderWidget(int min, int max, int x, int y, int width, int height, PuzzleWidget.SetSliderValueAction setValueAction, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { - super(x,y,width,height,Text.of(""),0); + public PuzzleSliderWidget(int min, int max, int x, int y, int width, int height, float defaultValue, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { + super(x,y,width,height,Text.of(""),(defaultValue-min) / (max - min)); this.min = min; this.max = max; - setValueAction.setSliderValue(this); this.setTextAction = setTextAction; this.changeAction = changeAction; this.updateMessage(); diff --git a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java index 3c808af..4d2ecee 100755 --- a/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java +++ b/puzzle-gui/src/main/java/net/puzzlemc/gui/screen/widget/PuzzleWidget.java @@ -7,16 +7,17 @@ import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.TextFieldWidget; import net.minecraft.text.Text; +import java.util.function.IntSupplier; + public class PuzzleWidget { public ButtonType buttonType; public int min; public int max; public Text descriptionText; - public Text buttonText; public TextAction buttonTextAction; public ButtonWidget.PressAction onPress; public PuzzleWidget.SetTextValueAction setTextValue; - public PuzzleWidget.SetSliderValueAction setSliderValue; + public IntSupplier defaultSliderValue; public PuzzleWidget.ChangeTextValueAction changeTextValue; public PuzzleWidget.ChangeSliderValueAction changeSliderValue; @@ -42,22 +43,24 @@ public class PuzzleWidget { this.onPress = onPress; } /** - * Puzzle Slider Widget Container (WIP - Doesn't work) + * Puzzle Slider Widget Container */ - public PuzzleWidget(int min, int max, Text descriptionText, PuzzleWidget.SetSliderValueAction setValueAction, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { + public PuzzleWidget(int min, int max, Text descriptionText, IntSupplier defaultSliderValue, PuzzleWidget.TextAction setTextAction, PuzzleWidget.ChangeSliderValueAction changeAction) { this.buttonType = ButtonType.SLIDER; this.min = min; this.max = max; this.descriptionText = descriptionText; - this.setSliderValue = setValueAction; + this.defaultSliderValue = defaultSliderValue; this.buttonTextAction = setTextAction; this.changeSliderValue = changeAction; } /** * Puzzle Text Field Widget Container (WIP - Doesn't work) */ - public PuzzleWidget(Text descriptionText, PuzzleWidget.SetTextValueAction setValue, ChangeTextValueAction changeAction, int a) { + public PuzzleWidget(int min, int max, Text descriptionText, PuzzleWidget.SetTextValueAction setValue, ChangeTextValueAction changeAction) { this.buttonType = ButtonType.TEXT_FIELD; + this.min = min; + this.max = max; this.descriptionText = descriptionText; this.setTextValue = setValue; this.changeTextValue = changeAction; @@ -75,10 +78,6 @@ public class PuzzleWidget { void setTextValue(TextFieldWidget textField); } @Environment(EnvType.CLIENT) - public interface SetSliderValueAction { - void setSliderValue(PuzzleSliderWidget slider); - } - @Environment(EnvType.CLIENT) public interface TextAction { void setTitle(ClickableWidget button); } diff --git a/src/main/resources/assets/puzzle/lang/de_de.json b/src/main/resources/assets/puzzle/lang/de_de.json index 129c189..c37f5b9 100644 --- a/src/main/resources/assets/puzzle/lang/de_de.json +++ b/src/main/resources/assets/puzzle/lang/de_de.json @@ -6,12 +6,34 @@ "puzzle.page.performance":"Performance Einstellungen", "puzzle.page.misc":"Sonstige Einstellungen", "puzzle.option.check_for_updates":"Auf Updates überprüfen", - "puzzle.option.show_version_info":"Zeige Puzzles Versions Informationen", - "puzzle.option.resourcepack_splash_screen":"Nutzte den Resourcepack-splash-Screen", + "puzzle.option.show_version_info":"Zeige Informationen über Puzzle's Version", + "puzzle.option.resourcepack_splash_screen":"Nutze Resourcepack-Ladebildschirm", "puzzle.option.better_splash_screen_blend":"Verbessere das Blending des Splash-Screen-Logos", - "puzzle.option.emissive_textures":"Emissive Texturen", "puzzle.option.unlimited_model_rotations":"Unbegrenzte Modellrotationen", "puzzle.option.bigger_custom_models":"Größere benutzerdefinierte Modelle", - "puzzle.option.render_layer_overrides":"Render Layer Overrides", - "puzzle.midnightconfig.title":"Erweiterte Puzzle Konfiguration" + "puzzle.midnightconfig.title":"Erweiterte Puzzle Konfiguration", + "puzzle.option.check_for_updates.tooltip": "Aktiviert Puzzle's eingebauten Update-Checker", + "puzzle.option.show_version_info.tooltip": "Zeigt Informationen über die Version\nvon Puzzle und die Verfügbarkeit von Updates\nauf dem Titelbildschirm und im F3-Menü", + "puzzle.option.resourcepack_splash_screen.tooltip": "Ermöglicht Resourcepacks, das Aussehen\ndes Ladebildschirms mit dem\nOptiFine-Format zu verändern", + "puzzle.option.better_splash_screen_blend.tooltip": "Ändert die Art des Blending,\ndie für das Logo auf dem Ladebildschirm benutzt wird,\ndamit es besser mit farbigen Logos funktioniert.", + "puzzle.option.unlimited_model_rotations.tooltip": "Schaltet volle 360° Rotation für\nbenutzerdefinierte Item-/Blockmodelle frei", + "puzzle.option.bigger_custom_models.tooltip": "Erhöht das Größenlimit für\nbenutzerdefinierte Item-/Blockmodelle\nvon 3x3x3 auf 5x5x5", + "puzzle.midnightconfig.tooltip": "Optionen für fortgeschrittene Nutzer", + + "cullleaves.puzzle.option.enabled": "Aktiviere Culling für Blätter", + "cullleaves.puzzle.option.enabled.tooltip": "Fügt Occlusion Culling für \nBlätter hinzu, was die Leistung des \nSpiels verbessert", + "iris.puzzle.option.enableShaders": "Shader aktivieren", + "iris.puzzle.option.enableShaders.tooltip": "Legt fest, ob Shader aktiviert werden sollen", + "iris.puzzle.option.open": "ÖFFNEN", + "options.iris.shaderPackSelection.tooltip": "Öffnet einen Bildschirm, um Shader\nauszuwählen und zu konfigurieren", + "lambdabettergrass.option.mode.tooltip": "Verbindet die Seiten von Grasblöcken\nmit anliegenden Grasblöcken", + "lambdabettergrass.option.better_snow.tooltip": "Fügt eine rein visuelle Schnee-/Moosschicht\nunter nicht-volle Blöcke hinzu,\nwelche von Schnee/Moos umgeben sind", + "config.dynamicfps.reduce_when_unfocused.tooltip": "Reduziert Minecraft's FPS,\nwährend das Spiel nicht im Fokus ist\n(z.B. wenn ein anderes Fenster fokussiert oder das Spiel versteckt ist)\num Strom und Systemressourcen zu sparen", + "config.dynamicfps.unfocused_fps.tooltip": "Die Anzahl der Bilder pro Sekunde (FPS)\nmit denen Minecraft rendern\ndarf, wenn es nicht im Fokus ist", + "config.dynamicfps.restore_when_hovered.tooltip": "Legt fest, ob die Limitierung\nder FPS aufgehoben werden soll, wenn Minecraft in der Vorschau erscheint\n(z.B. in der Taskleiste oder Dock überfahren wird)", + "config.dynamicfps.run_gc_on_unfocus.tooltip": "Lässt einen Garbage Collector laufen,\nwährend Minecraft nicht im Fokus ist\num etwas Arbeitsspeicher (RAM) freizumachen", + "config.dynamicfps.unfocused_volume.tooltip": "Die Lautstärke mit der Minecraft\nGeräusche wiedergeben kann, während es nicht im Fokus ist\n(z.B. wenn ein anderes Fenster fokussiert ist)", + "config.dynamicfps.hidden_volume.tooltip": "Die Lautstärke mit der Minecraft\nGeräusche wiedergeben kann, während es nicht im Fokus ist\n(z.B. wenn es minimiert, von anderen Fenstern verdeckt\noder auf einem anderen virtuellen Desktop ist)", + "entity_texture_features.puzzle.emissive_type.brighter": "§eHeller", + "entity_texture_features.puzzle.emissive_type.default": "§6Normal" } \ No newline at end of file diff --git a/src/main/resources/assets/puzzle/lang/en_us.json b/src/main/resources/assets/puzzle/lang/en_us.json index 872f2f5..f6b1c9c 100755 --- a/src/main/resources/assets/puzzle/lang/en_us.json +++ b/src/main/resources/assets/puzzle/lang/en_us.json @@ -6,12 +6,34 @@ "puzzle.page.performance":"Performance Settings", "puzzle.page.misc":"Miscellaneous Settings", "puzzle.option.check_for_updates":"Check for Updates", + "puzzle.option.check_for_updates.tooltip":"Enables Puzzle's built-in update checker", "puzzle.option.show_version_info":"Show Puzzle version info", + "puzzle.option.show_version_info.tooltip":"Show information about the current\nPuzzle version and update status on\nthe Title Screen and F3 Menu", "puzzle.option.resourcepack_splash_screen":"Use resourcepack splash screen", + "puzzle.option.resourcepack_splash_screen.tooltip":"Enables resourcepacks to change the look\nof Minecraft's loading/splash\nscreen using the OptiFine format", "puzzle.option.better_splash_screen_blend":"Better splash screen logo blending", - "puzzle.option.emissive_textures":"Emissive Textures", + "puzzle.option.better_splash_screen_blend.tooltip":"Changes the type of blending used\nby the logo on the splash screen\nto work better with custom colored logos", "puzzle.option.unlimited_model_rotations":"Unlimited Model Rotations", + "puzzle.option.unlimited_model_rotations.tooltip":"Unlocks full 360° rotation on custom block/item models", "puzzle.option.bigger_custom_models":"Bigger Custom Models", - "puzzle.option.render_layer_overrides":"Render Layer Overrides", - "puzzle.midnightconfig.title":"Puzzle Advanced Config" + "puzzle.option.bigger_custom_models.tooltip":"Increases the limit of\ncustom block/item model sizes\nfrom 3x3x3 to 5x5x5", + "puzzle.midnightconfig.title":"Puzzle Advanced Config", + "puzzle.midnightconfig.tooltip":"Options for advanced users only", + + "cullleaves.puzzle.option.enabled": "Cull Leaves", + "cullleaves.puzzle.option.enabled.tooltip": "Enable the culling of leaves to enhance performance", + "iris.puzzle.option.enableShaders": "Enable Shaders", + "iris.puzzle.option.enableShaders.tooltip": "Whether or not to enable shaderpacks", + "iris.puzzle.option.open": "OPEN", + "options.iris.shaderPackSelection.tooltip": "Open a screen to select\nshaderpacks and configure them", + "lambdabettergrass.option.mode.tooltip": "Makes the sides of\ngrass blocks connect to\nadjacent grass blocks", + "lambdabettergrass.option.better_snow.tooltip": "Adds a purely visual snow/moss layer\nto non-full blocks that\nare surrounded by snow/moss", + "config.dynamicfps.reduce_when_unfocused.tooltip": "Reduces Minecraft's FPS when unfocused\n(i.e. another window is focused or the game is hidden)\nto save power and system resources", + "config.dynamicfps.unfocused_fps.tooltip": "The amount of frames per second\nMinecraft is allowed to\nrender at while unfocused", + "config.dynamicfps.restore_when_hovered.tooltip": "Whether or not to stop the\nFPS limiting while Minecraft is previewed\n(i.e. hovered on task bar or dock)", + "config.dynamicfps.run_gc_on_unfocus.tooltip": "Run a garbage collector while\nMinecraft is not focused to\nfree up some RAM", + "config.dynamicfps.unfocused_volume.tooltip": "The volume the game should play\nsound at while unfocused\n(i.e. another window is selected)", + "config.dynamicfps.hidden_volume.tooltip": "The volume the game should play\nsound at while not visible\n(i.e. minimized, covered by other windows\nor on another virtual desktop)", + "entity_texture_features.puzzle.emissive_type.brighter": "§eBrighter", + "entity_texture_features.puzzle.emissive_type.default": "§6Default" }