From e2849cf8f3627dbf9f96364004597d053feec1ec Mon Sep 17 00:00:00 2001 From: Fenad2 Date: Fri, 7 Aug 2026 17:34:18 +0800 Subject: [PATCH 1/2] Update README.md --- README.md | 26 +++++++++++++------------- docs/SchematicDynamicPreview.jpg | Bin 0 -> 33271 bytes 2 files changed, 13 insertions(+), 13 deletions(-) create mode 100644 docs/SchematicDynamicPreview.jpg diff --git a/README.md b/README.md index 0f0d2ce..16260d1 100644 --- a/README.md +++ b/README.md @@ -5,53 +5,53 @@ - **复制准星目标 ID** -复制准星所指的方块或实体 ID + 复制准星所指的方块或实体 ID - **实体高亮边框** -为名单中的实体类型添加原版发光描边效果 + 为名单中的实体类型添加原版发光描边效果 - **实体高亮边框-选择列表** -每行一个实体 ID + 每行一个实体 ID - **实体高亮边框-颜色** -设置名单中实体的描边颜色 + 设置名单中实体的描边颜色 - **实体渲染黑名单开关** -跳过名单中实体的客户端渲染 + 跳过名单中实体的客户端渲染 - **实体渲染黑名单-列表** -每行一个实体 ID + 每行一个实体 ID - **实体渲染黑名单-范围** -黑名单实体在该三维范围内会重新渲染,0 为始终不渲染 + 黑名单实体在该三维范围内会重新渲染,0 为始终不渲染 - **掏炉灰助手-开关** -高亮输入槽含有无法烧制物品的普通熔炉 + 高亮输入槽含有无法烧制物品的普通熔炉 - **掏炉灰助手-范围设置** -以玩家所在区块为中心,区块为范围的扫描半径 + 以玩家所在区块为中心,区块为范围的扫描半径 - **TNT爆炸预览** -以TNT当前实时位置预览方块破坏范围,红色为保守范围,黄色为额外可能范围 + 以TNT当前实时位置预览方块破坏范围,红色为保守范围,黄色为额外可能范围 - **TNT爆炸预览-显示模式** -选择是否显示可能被炸坏的方块 + 选择是否显示可能被炸坏的方块 - **投射物落点预测** -显示支持投射物的预测落点 + 显示支持投射物的预测落点 - **投影实时预览** -在投影文件选择界面新增原理图预览窗口,实时显示当前选中的原理图 + 在投影文件选择界面新增原理图预览窗口,实时显示当前选中的原理图 ![](docs/new.jpg) diff --git a/docs/SchematicDynamicPreview.jpg b/docs/SchematicDynamicPreview.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ec0af70255efda7756317489bb3c10da0dcc7e2 GIT binary patch literal 33271 zcmce-1z1#F*DySEOLr+P2nf$eRadEJ5aPaOB5#Ze+yn};7Kt@1FOhQUZii=N9K}JGB zL_$jPV-X}2#51U9SZHWiBzQP@B>(Hr?Nar4-zs0Msy5JENmRa4G;nVG7<_3GAhass1bMjB7O&;5~2~^uqRx!q4a3taN zkIBSjd|cK-sycYU^yrmS02VeGIRzyZGYc!*eRe*60YM>Qkta{3Wn|^#pQ)*9XliNe z=$e?CnOnTJv~qTFb#wRd^m_X)FevzaNN8-_hxmlVk4ed&v$At?^YRM{%PT4&Rn;}M zb**jf9i7mw?r%fGBco&E6O&VmOUo;(YwH`ETZc!-C#PrU7nfH*@InHh{6gzrnEeAU zLIhsOsHiBY7(ehrLUuHVS{+J|>V=~KHuoxey9+19r8pI}J z;#*`s{DIm}%>FyX0{%Z?_AkW##A^zGi-Lq;9tt4<2!OTgByOJORkp||YDPRw+qx-@ za(BIRVYA0YEHqE@yiFnrIazUsvzomUYLCK@Wr<@#qX~vFUd5K8r+D51-t@ysaW=e? zzjP*gW?Y?t4zl9Ua6X4;uaqORRQ2YKJF(FQ-n1#a=E zWw+GPe;xBbSo<{VQr`;Np1lRM7IiPCDa6*f?!!@l7wX4%dvrtCNppELj~ zmDZKddEI%cgR!c6^jeVUVPB$KN&476oYW9>XRfoYr>s#GRR7}{`A!vj-bYN@(-dm- zr5^cbU#^Rb#qlg}0WY@-AM#yS(Vy-uU#VL>83BeVG^*{|ARbZa;cBbnos4rta}&(Z zL&~UI49+Y;S!|T9HIO)nlBou*hf+(8fTH9Z>9+0GuT*}pDUr!Gs`esO?p0LA!zGB` z(-93nMTu+R?DeBtK;TmZor8OG42f?6h6vHI;@#mgRkbFyKXvj$FPxEO;;ek*JDxnM zh@sJS3kY%Dpg-L~fT2o@p|PK9D0ov3yifrfJ9DiOy`51{A}w~Il{_5+f4BvVS0EPW zX%H+BoE-*(4k!_P3zKO1UZ3=lBu#WI%)?pJ=rYIyTucTYRN3)-tR$EPcS;zaFHI-%7k*`gEZqWr;>IOI(;<_>I-<60(8f{>db#yBW2fgAqCW(+@uYtE z7GQ^M=?zp^Lj}MVpDAKtCl{ z{UM`^5FbSEeM%SLv;~|6C%T9{Zv_Fs5DpgQ%C-U_BR(?aq%5_Vn2GUTSXcWw*!w^U zw3rNeehNo0bSg$mlYYs*YrUlWl=BwQCh1WGPX+C_fezI{hzS^;3j8tASR2uV4;g%K zO!cOVy9MAOEj3>`+ya{MZUG%C|Cno~sK{0(I-EJ~cqzm9FhZL*p>UYsEr3+^$Lz-D z=jw);F}3rW-P7n}n8a0uKi0IBo%X^w$UTFb(>@ z%{(C_&OJ5WLTBQva4M7z(8=;Gz>oSC5SsOCy7+qv7Wf=xDY3Y-JaLk7@fx4>7BC!q zb72o>kNVrJVJcKSyFQrdel z^?Pq4IQzd4L!ja2F|9r|3%yXuqD6f@ISFedi`Il`4`mxMwS0r5DNZ_C({k} zs6~U{rCo!6!kx#{=+=}2l4$A>OZvk7tj7Ra{~S$wmMf4{=;kP+-qj; zrns+y@8`HdNwGwkyz^S;Lz2fMAb3jSDgsMFwzvf=o$7lt7-H!Utyf6t*>;WO{ra1a zXvb~=+h1=18?TzIXOG^9b0iYYWRY*#%gW1p5f(*H(r67BVwkY*3>FfPUq6q6g^+si z#Y76aARNWBcQ?tdl6OE$=AaW(^%oZzpSFECMrqJUR5b5?4rK%UZ$=Kihp***S(VdV z*0LGFx$GSKhSwUF6zm1&CT{@UtV8u=(6o_f9DB+WMrYg^9a9Mzhd3Pr*;HO$NWZTvYnm^-7UGMv7*QEkroUS6QR}`f=LzXi|KNOWr^g* zV^V)*;q9q(xh@ncZY=h!Rc!oF>lqcDp9N;jAuaRo^$3PPM!9LZvF5FWN#6qQA;A~m z<`o>Vdg<>ZNJvzqrHrLXULgH-Xg&ZgU(LhoxQ`1@O_Xl|QQP)c8_nO<^g{J$14&d2 z@=^xaK8FGj1Kr6BAqXMy&_!6FtM$3orhYC2u?0s|+a>na_#SwuJZNVwuQl*<=r)`H zCJqXtCvFg4*w{~e9;Z`J_W5v$_r21XXehFv%VvzOpqZPobvkL$KS=XmjUR%NokJ@-_AwpmFz+#vP>pZliq`INY#d|y zJUrr?6n%dF^gh+Ioej@fu&Q*&isrgb5FV4iT_#?H8*qGsGK zJ7@_D1X|XPWW%%`10-GxXob z%q%a$eo7*&*IbLKS{&1d4MC=W)=;)j$bTKhhy&N*jqNSKfc!EPtjTu^xPVt7_!|c6 z;IB!C8tcuWL`lYVUSWHb$}b+Y89n9~=5+TgvTg7TbPI5<7W&%za&W9(gw9D~5Z-YU zjIaozOSgdQrQ=&bgqHXrj{Hq@<^fj|oM6mHMKDzJn_3RkrTQ^T?Uc`#=`0kx9Sc^{ zBVW?Q^6l@v;w7WSBr34{lJGudT|}t-f0lD_8=+pN#OM|20fxd&?9xT!!uo+7c*(Ni zRduM#M(No0H_J0Yyt;=qoqM^>;@0ICf`?ds#4z;(Xt-_*M0ya6Hds#VDPwb=+I`o? zb^Gm5X!M#cp^`pWZI643THz+n{9bBbNQupe(*~wh>={ zeBH!$W?H!?{n4gDb05a7#rh9!0mhcFWirO6oi{}pwdrq598T1N z*+bn?i`2~H>0S;(k+ikXv9EBxZmz<=Uw!I_wO=AUb@aIZlUl!5k2Z}YFNB}L zd+TyR8_c%=$i2_O?Kj9(J)?BK{})tgNL|qreg70;o#tOfRY~0f#1a0yslzq5*mIBT znkXKxh4K@i5uKg;&)?{6-om}1w*cQzcPVoPY3Z{r;Cch-d?IT%8r1J`3)nA{9;h`k z$v7m3y~DVEdzt*bgw{(s7RLL~bwXGzL$|L~$IiWNQA(OboeW`D0e>B&f3c$)Ug;eH zbJMX7sG;&eU28}2$j;EPU5DR$$WGtA1*9MTfV-Y6N}|7vla&0=OMgLy{67Mzb0!>N z4S%dfAACeQ3Z6B}aq?=z;>VhlGZSi|i43T7t$%9;zmmw9BmJOTFPNXf&hq*5wJH7a z9PoNaF|o3G16OqG^&|jnUgn z=a};$o4y5@H>$4#4YlOQ$vK1*s2mbQh`98{nf%bu3SplCzIiwKo zTk?N9Fc3U@h|TudAMv0Z$|k}oKKxJ4e<_qL_g~S$m7^@;0fZw}BT$hh0jQjO4wdvu z+_^#c!d`oL13o;6W6d@EbEK%&FtB1D77S^=I=BT)cKEDNuTsZ_yOXB>@I8eG=h&wD@lU`C8G z(tQb>sGgf-h*at=pdAr5Z*aU{}D3BY+Th`$`73wGOp&y5Mbz?u)jc?!su)60i zA`W5t-?I1r*8Oxj*Fex;gNjRAxJvnx;bw*=|C@~F72y&@!p$F%gX-{sMIT_78FJ7l zx8NtK|G+t^UaQUnVTwEX5g`Q84{1J#&2ndHoNpQ`y?GjiU~EMz%ziN5XwfkL zc#G|GUHHFw$-jEcpWpG38%>^EP}+LBVsFtgN6xXR>OZmiz73^S!ei<56em5AiMtlM zc&5|P6Gb+oKh2Ft)t;~;Pvg^@v1*{0x6`u_=KV1zcKb!0v}ic*Z07DAD zl(|ouwC`I)R#t5>Ep33?7!WIfx7rQjz>Rc}@{=vwdZZh3p|;pj+|B336&WkD7@sgg zL*T&}rJ}aWIOCJoLHFtw;0Y3e+@!gW?>p-i@4i4$<;@Omaf)~21`ty^Ft~_lH|ky5kcLw&(b;4bJ_W>Xw?sf@~g{^^o{Uf zI(+gE{3u7~1Yd0RnBBw0>|$Ik>4GDBoN13qEp7(X1qdo*M`NCFNBc(cpMC%lh>=tg z&OFKABG@A0K_5C$xQ~-wLmdR7i_aF5&gC2IxXH9Duld$_gl3nt;k^t|=OIWQj1v=E z9Jo}SJ~KIN?5I?&)b*_p>JGAQP7{wL3BSS0hu}|UK?OA7rfv!D{WbXPV;kgGuofAN zv8I;FNIX^L`?)NP=gG4NZHE}4CB+_e^M*A+!u+<6TUqedptu(@d%TzuX=P&{wvX!V zgkG%8PF#T1E?Ae-=*D-+C1~n+_HeEf z>U1wf+7UY0PVU)OzEtqA8P>AwD1?LnutndYb%H{NKS6WH30>E8Pdb;dHm>qUY{CH})Ko&i3VK$-B!GyV_bAcnz$Mp17FY#W}{U9LsLXbIjEyCq>$Y zroM)S*Q{ZKhR{MEqM^llg3=;K^R47mJkVQBSHO9`pR zBUUWV!PO61pY&nmV`H{e<7DoRh=Z@Ne!52|p2aMT^-#RH9xb4+`FQAlqW$pNU3mPn zVtUm(5}~uT2ZHZ8&5q{f>de0ihlq8o&pL7NE-N%bl9rPDmhQh;j9Gdqb-q-o8aC;# z8LD|RO==7Y*096O-X6;TTj2U{D)}q0#aI1@Nr0D=s`Oi3q5SFl=&yyq8R*!N-kKEP zAT*VW)gv~$d*yhDlyJaI_cgy&a31V=^I5jWqBmipHK#W?U_|y>!0HoC)Gi`o%et2r zq>yyQGd}5+)xYsMbmGl_a#?>|2WPtAgxK4jTqnserOyddu-!Gw!ief?@+!FzgeJq| zsGzn5-xxJ83+@u3y?BTmghAt_YPBp|J@tH>whycC`{8LZK5_9m*;p}6yp{{Kc2EyM z^2#Ugq*S7RnJyC}?JPo~Z`o_X(>n`#+;9JEFmXvUxIp*go(-6jN*Fb!(#(hzmClK$ z1(;^6%GolB>t#hg=EUbPuYXr%4Kv}fj1$tr8NVNpa+|DN86HFP70vbd9zENN$tu(< z6X$iJ7LIsiBl$|Lf%;+-DVoqpNi4l1;fNHBk0S5E_^-G*1(X@*#r zK+(+gmF+@3&>|xtk}^hB$zz$4e^rZ4-ASi(cjLQ?oK0FIbp3f#1=(5gG1@VsBSU#9 zrts#a%E+X8epQ^f)-|2b3J31cM5gdGP8nP_qq9<`q*MorOO{;xne8G1>EWI1SUEc- zU+1xgNJ_5V?6kYJwf_2OL{A*r)^;2+U)I_syj6pd#3rMKE$*zy}`FzOJv`9 zUB<7uw_Y)EvEF`0p0a<6<2`X8i9=PRe?Ij-8}6Ek-{I>t=WbcK))dV6EnU>|F3J|~ z%8kdBRygz!MKw~kDt74GLOw1NQk+-ZIL%l%i0E!4-gy-A#w2YuGpSgO8VO zkGr@en5gWqFNUToblYag_1d6$_Unc`#f^35pzUYj{i@s9wcjatYE`b^|5hXx=d?xGEwTJ z3{?4}dbzxq@QmZ+qYL<*E!;PyvB@4bfOB#ijmynI*5M`&Uq96Ou&&aTL-e$q?uxaj z=ao-6PBLZ_eC!IdR+GIDwa=QIFr2ln`=IPH@u9AHmJi7S@mtbF`lu&d8fDfnOs7nfp8CHLTE0t@ znl43aP1uAz|0GX}zX?Lc7w$03;(-#=BfwFY(jh=3PvY1$)U}S$^NPp6pSDO~zJplt z{mW`CoJzAM8&elxnuH=+-()X$%RaHZFJ5YLxS@V@<&wuT1;B+`l9DFUS#QdymCdEd zTV~vqIX)X#rv#cShN$645n}I!|bmjIX(d=b3h0X@m1lk(EWc7osqVTD$ZfSu86oDctrtDWwb-b z^QHeYw}gL_s@2=1#}1~Cmv;4#T_b4{_6aLu=n@hp-Al)N(Oh9(6aZTJdCUb9)D5fq z3=##4i)vMSaD!lv3=8S^@#KESy<#F(_JfH!d8AuWK*S-&>A!I>$f4}kiUC`U3`Mzn z8huDt$*MjDJ!LBTy$rT*+h+=Io?z4`W#J6akvb`Hw56M7OuC7` zU!XtcNOa{!zd#iDwoR{c5Yai`b)zsOCt=3-Qy1YN9m*Q}7tlvDSro>xDhQ~;l8UbY z+)H&4|6H)gnEx%5{>-GkxZ*NYhh+5)yB=enZZm$nuamfNX8I*0#VqO@SrNw6i-MJa z@^F(kUQ}bFP4}if3i)aeS>A<`Kc`Yxy$qVwoDr!pXef1R@M&)MEemT`Ef{NWAl7SL zLoYjkchcibU%cTgoNSz)*1JjA)LndIj`c`J?qwwT-O@cuXDEMCk&j4?Ex(y3*midh z%mj(l`xx4O{PcUVe^<*(mHOjIk#XB)vjboUPJCmz@($;dYut@kMFvWpQBqtYa;fMx z^H#Tv4~Iil4YrGyVoxj*z$2S=;K_{0K>fOgz7qeUB=f^#ku9hG!6nR|7!lHZXK0!j4<+c43iR2EO z>Bxr(%>|Rzgow1gjePE=vv$i_M_|b!i%gQ!XQ7GmwE0K4bfTm^%$XTq(lR)nA3@TL z^kW}TEFSrM8OI5ClHZoets1M7?hZB%zA+>@wYk|k<;M3gf)h{oO0>3~%QiGn(NJ|} zIu`L%MPf1AV4B_~r2nQKAfqI?$3ZsywGQ;2??!xBDUz>o#C&K-oB3ElnW}(smEIv% zpxTcYjZ;nQsgQbDMMyU$lX=kEebc8Z(K$~r;%K7ajb6Z(rLxlcRbd@Nxs=y5`x749 zQ#B(8TY{4ng|nO4dN<&2Bev-Ra_;f-kWM#K!nkk(XTywx{; zmDb`6cK^!t>B~Wk+Sr6GsJtuKYRWdbSod8=T0H4wEe))-^3>Pw5+eWd`uY1%Il!H) zZ5=@}FZC}w!7r@0^RqSY3ig~Q-la=>q?b63Or3=CKkI36s-s0t#+vt~CXv!JPTCe22Zci(R%;5PY?84al0M~S zDzP3yC9@c9yVjpRGAC)Rw_NtPyz;_s9kZ?YoTKzQKMP+`z}f1Jz9j*ccA0q;wwHzY zqhzz7sO&BBE!(>d5RdH3H;JX5>r97wgt;*mz9I#lrc>@dA2pVfK|!b1o?PqNw(&0n zkTjU8(8TZ9S-T2t&(duxAL8)YvVPcI!(iMiRVImk!rWPCVSR$d7x+d;*fC=~#|w83 zYox)l;Po-*;_w6GWZ85#$1YU-2hbXedro(RW}G)QPQmCN_{w9prFyy_73^{RwgL45 zvW(%&Z#(hqvDmgvyq!7wsDyU3v~iF5j`o=Dv=!v)Zbi$w3dSMlYnVTnwVFSZNOk2% z+T~hJnAJ!IE;(WDN1~ZpUKz9}xGPs?nqdn%j;sT7Y?X?wj6Q@6$BXy#T-=n-DlXJ; z9%NY5G`(oE2eMb-`Y|+lgDr2euqVO6JDQsY{b^!fvK)k^Wf%_}@XNqtr8PUwfg~!= z5xKa(mp1+~$0&d!%0@qPnr*iL3)16oCzQyC)*Jhi=f5fgpq-^Ar-;Y-%gM>}sD7{V z4uLVXtU2DSfkE?=P!0N1Lf{pR#*&trrwPiw;HKf=!c4{_Sfl?2^+#qV9zWy?yINVT zKmT)RdBA@-8vM<=$5WezLd9qf$3vg7S#4(KSvYI$lAROFY(HR-1cvzatxq$CmI;2e zz+L=q>}OxemL%R}wocMSa-fvAEMLkv+|k52LjLG`S$OI$fKEG=4o#uNgInXEacNrk zwOuqvS6P|Shwwxvp2r130-e_VUclju9t2#DEI(;Q}>LE7NZQ6TL~ zLG6>2&C>;x0O}6$meA&aRGG0KU1Zrm*|-JZT*Q67@;xg|-VaLHe?E3{@qp{(GFvB0 zdqFrNAXUOcDKDUwRIPQ6_@F7#aUpy7bX!3|k-NjmBVbh-KBRK2E_PpMh~+p1XRS>v&_VP7no&@)DdtGK5H$RBW)Cm8@BCC$GRjih4J2Fr7kPB~ThvKOZfE zt7#F$>6)gu01kraMd5Bn*pt3BFq)ex&w6eOR@0C>e&Q!^*@;Sr+2Y z`Q;b8zA~fTA0x3n)uN|zS zsXfrva_sG`nZE=5?z^`AXs9bHJkJ)7N6FCY3x> zernFydgc|0$ z7P3cfTox_otWSxVq0;Fw>P~hBhV<=rWB@PVKgGjollVCI=H zY%$Z~`Ux8iMnXfdTN)|3vOj}uWMGZM+7B?`4%2KzOPq~E>35{SwHy_R*Wig~CL zI`g?w+8wXHY?y{Po-ti?yh7WffTeEMjBB8)-Au_X)%1;*1!>A5@rz`8^ewBM{_A*F z__fiq)dCrQe)EI;C7)Wb4{=>}sCDpA+zWXJw2p?bhc7VqYR$SBBk>%_4KZpVyzlq2 z-xnFbid)w>MbjJ3Sn5}PcCJ^DUEUP(DeZH-G9ER7bCk-ZW>6-WzdgS$Ext4#*TcN# zJ(eVe&|Hm;`}VeeY+FxOb7^zPAXQIka8F%u(B7`pd>;M%H^%%$mz)f7Q8n_EeIDyM z>h5}O)}A?GPO#7ODsQc69NVJSjg)6z(^1yd5Xr<@25HQ%&TvoNZMg-w6rpU6;JTN3 zZ7=k;?Rcx$=C|C%V%*#-?v!|f7i=eaPIEQ>AioBtVm+)@$e$q#`g*z7Ij2Y4U$r!< zA4}Eot|00$uN6lvT3;sBWmR=Y(8IxxITW;gLcjFG;l^MCu5i()&bMbw7XT4r1Fdou9Vy9traio&kcGT3#%K7osZ>N(yaD^ z)rb0o+B`#sKfUx=o@=aLm=7(T{@N95)wzR{gq#;^C`(~@N14|5YCLpCr^kXYT-x_l z@xy*w)+vU~uC5iw{Z2e@^41BNj0JCoc9?)Su^36tILyC9)i{?~IM-L! z9zr&X#|H(rJ{qfJZH%OF*)We39q9UA*48KPm1cqbvOnMS4~2xW3+CZEhNFE@ov+Le+t%1V1}y1G_DlfP5An@J+DYL23%3 zB75^9S_(eYiGSnrs}k9o8^X=!xk{p<8~ztd`yau3ec?5PXqD6}uO8*5S02ueesIp_ zAIj~7#F()i$+3eUbPK5HZ>8Rr^0s#dhO{#`wB_sXK7Y7C5(bE0kM=qRM{shoG}i@; z&5BKjtY~LF_pkl<23@&;q3Oeg=QTP^`OqznboOQ}W6_pnOK#qFbTDb9jkf}GaYm4> z4}~yo261*Qe8!_&Vdb)_GR3|=mVw{I4ii40{a7_{qKMr&|4lCaTCqybeaC3_G7^0g z6ZHt{&a|Ffa_GK{@lH&7al4Cqk54abywcOAq2}p1);)Sg#+T)>-?C4D-28_YQDQot z2hb&nvb@UZSt#wyfWqB(h4oCODFLz1)@gYilY{1$;&YZN%O+aTritj}7%nGJWC+1FEohTXUwoysy_ILL>S@Dx8F@PD4Fk4i{Qok;tK#iS!@x{k& zM#(YxatcUno!kiPHzRFNh{@-)Uf;7*p2O(`Vb2cuu}f3Sns0OhF`XQw4vDyrf} zNh(LqkQ_f-582iDpG-!Z%9S!HiLRIMp11DjDHA29B)dOfanP6+8u0mo(s#VZXpob=p*L{&Im=;VncwugD;q#o!` zL-`b`Jhjbt@T57=Li>B{=RVjL=V83vovU=Y1<=-mvSuHSK!p_EAX*jYA6Jr|D7tE- z={>7`9<2~8brC5|(+8v)AW^%}Q5|njEV2%pXH`|4;F*_U-jQz+JK0a}i&Hw-f6t|{ zR+;k5t(#Z3I{7UME!K?CdO@F}bPn=Cq%o+$2cP^1Zc%R1lNN zU0ijcp^{96bacOpgQlUqE|8hNuJxUXSsrtR0FifWN;2|rA}_aI7domzS0ii>yUyN4 zftau1sP1=3fuc0H$6xQhq<_{@qs(dQeD@UvZBHb=ag1S<`+q3%a;>cJs&+| zQi%X-IWHV9nA)c9`^fbiMCRD|Jmung5I?!1#Uijmz;mwGgmqe)r8QQZXzGUfMe#u> zg?uWm#ahexzD|NyJfv~7Vf|^qmXF*dmt>dz$^NlPlXwx`y#5G(gxbzf*VuvBn@U32 z)u+O<-|_*+k+ntPg|bU%6xCV$4blv4u421V%8mW9wg2E;H0MN!8-1 z`pfj(2UD&qUQfyL-^mJ_us9&mm}D4QTWCje7~y9pKH_;Sup9Np;UUIRv7(`9eGfH> zUSfC?Z}}bMgoV(N#5UO%!-#IRZl*{%89T?gOF6z}YzxYn7q4YB*W znA-2ck0VpDkGUi1>n=bJ$6q29!fFzj>`J8`IG!LE*vTJPLl8EN;Gd@T_xwl0$Q#6n zrpx=45JvRG{BAbv6efS&-Qi37k9L6;<1U&7^|1@aV^UxUEHbDut}Wxp&I^3=4uq)k zEywSq)7}E&oJT=Bi25Fcp`Z<>JTTPU+NiQlkZ+lVk@*sT-9YP1F#~oD-iGt{AiA6A z2|-QGef7#q{NvA;3#ZsYricc|{yKQ&A73DLQLT`2;mZuCyx$MX{{CNcBP$-`(ViN- z8xeA6xZZ#|zwo~|scv$Kc+7@^EfGID&J6~2DZ;~Gg)H$A1@g6&Co0m;w1{Sxe@m^P zo(V?f8R;2x7WUh-KP#NY(!{`+4!xnia4xkX*jAaIHtMysb<)TUCFfaHX7%s%+hdfPipEOrD!cn zE$Bk6c{4F$(K-`6UHRZu`LS4tO1VH{$cGTXcBO-3A1|8Iv1aZ*^Y@0ZO4h3I15tYn zecib^TCP0>dE0pjjTUY)>;TLdPmJ`FvWww%vIpIz;v-d#UFy%kbp&2F3z)F&%D1wO zLx!tV^g9V}>1}3ujspQEJu&|CZ#-z7-%b@+4(3Fiyr48rq4N4Ex3jCLwk{ah zkRYu2`~*AH$-2+Q+6Z&TIER^}^B`P+dbW!mk$vcU$R#e;L4LcOhr zJl{2|%4*_8P1hN#gvE=TALR_6D)dVDo>les*vh|pk>*8n2bAU_0tzoRl)pEUjB`8~ zK5%K56%K35_^$P#XL&-5y6}OUo94sW?>S^EUyezg2i`cw^*35>)YjO$y=ZjGqF_bI<0pD&R(D^%Bubj+!dgGISZ1jsaZSR-_RE#=*UbzS0~-g zYO~sR_py6|)DpxF4HfdO$v9lzDl{5ZaCfg6>9eDp?1!Gv-|6wGqm73}2Ee zTPj=RPiJ&Xwq>cwOk3*$c)I%wNFjL_R6~1P9ASdqS~TzzoBd&jh10Aw=#nmeym*vI z)6nM;{-=0#kJgO?nx24CwbTRxdR^`X07`vo1`ktd98=-^AUHvijVqgAg+6AU>`Iz=89|{eg3wOOOdlG zM#E@MS=FGSvJdNJso7_8Er$a2?zYV3M?<{$GX+9@qHxzR*Gwy_F$hg*1Vg^YR2C=n zB}c(XIweH?=#@+hwyB-6%JioG{QJ|Q+J?tt5BoZ&NPD1k=z5g*-cvFPEgTLH)!#4B zlN_2#;xW*jnwzPVZ;~wTWz-6R4@|XJY>J3yhbpHyGcBGw)RS<{m^3Giix*AWoXm5L zt?AW@HRMzDDLqO)Fq&eA^_0A>ax9&evqe;vBy9Wd;mThzjH}Lc9X(_FT*>s8Q1)l? z0M9indvX_JXG=*O(Z*FPaGhK4dR=rDQUCF%Ts zFv?D`k?Il_GX;O#ifB=OWt}jnJIl}>z<)pW&N@q-)w&O&&5}L_(NPB6vSLZRpCc^D z@u=}H~KW;Uy%=Q?OUeXs}_{rVD9h*`!#+OG!Q4Xo0P zIoy`67#5TE%|Y~p6WHa}a(uS@@|~oG{@&4Q(6a#L{tNZ753z%26djE^mnMgA+YUB> zWDWMYn+fQ{isj?>B_$O&8Holaji zyvG`}m^+-AW{yW41h9_};uT&he?$!Wd<$T& zOF^T5-;XHke%SdPGW-Y|{v21-i>V>LITubkrZ|rty!QCoS~YluWF$5YfpJIb^A8*E?N{QB{ZSbO0aJwsC25;L>42N%IzrCYzrha=)L`K8^n} z{GDs3nt<||oW#PV{h1Wt?Qij7;@&tR33ohUZ8ab}66SWHeqUlYDR7gh zhfTs`v&O1c87(TfrNj}gsH|{E)-*QEVL9GOaBY4w?cf-1U$;zi9ceYXnsXDBy~Jy` z96|CCzU{w7-n^(K@}i*VX{S>pv=2yBDQ+Zn*aW6oGH=y7tWDZ^KY8aHXQY~ zhzu{{ZOu}NZCNKrKH0r_#6d<0eUWvzsddn!mN7vHXQsw+z*mtu|!=|@=}r+4Y?vC zi59o!J?=oJ#xbo@ zuTIum)sQhlOE=gZyY@P!HXSE-s1YD>RFV!>+WEW zcjXkeB~AU@$+giLDPoZrsD2Q%@3HgZ-=DV0o>}hMo+)A(PGc||SNFMgPn{fE_nMNbGANm^!z-(WG7EO$@c|#gL zW`;h_%6dl~yrAgI>Fmqg5#PYWoxtRL#63=WWFNJ!l)3EdAj}S(pkT)8xAWAe%ojW_awq+rt^a4F<|U0l&D^Z zM&^iAE*j!hJXFH=Cdz{l^%tK$a#ehV!p=*W?{f!Ibn<|Rg_|!}Gg^&sV44?@C0g!I zKf1U2!zCxIwLx>I)K<^9?!9P3b%uQOV`*qU3%^M{ou6#(aHC>@fJ_Q|d@ar{)`p)3 z@hS7fS=+1hsWzS6gn?}FDf|WzeSxQ7e2*~Mfs<=dPG$(^%Ft4hDHlt~L-(#WisOv$>m^%3A=LrJx_`0p4815;yj?mr-K=7CP405>~^~GnS>Sy+S&Tro&RR``3z* z!4%%&{r*LNeQTmLw055G764rVo%UZPZ>D$hHT`z$e|C?ruBHNHtT*O=7D(2Ay{y*P zWMV@>GfrzC0DM%Q(GGvgzn_lT4|}9pgeZ9+&Wo8Hh8TwD3sIK>C0g)S1YMs5)ftZu z%o87Qt2=xFLEDY?!N;Y;7ZHvQf0>ZF?SyhX0fw9YFJzq=4 zXarHcg-)z^0ivF$i{YQDcQE!o5fi-w<5=Su6y>&fTMH#sv zw~=}QmMbvYDnzs!60jbNgMz%LZ}0^^{t8cy@B7#l5_0pw>DiWS=x9Ai3Q+`}HlN zx_Q|6W3MI%B*^z30h50HLaynBVtE;Ew}9$}ww_rgn8sPPgV^$0&63!<5-D6o!F z6M5@#lg?&f9IZs{`cNbGks?t4n&>H0Rf9P+;X+4AYQ-7SDYaseSxjG1lr=Iu7nDr} zZEJLIb0%v{;yRHJldD!ls(qjK4QeSBKO@=4Gfa#2asz%hPI-jZcJG`9GcYKx-U8Rp zV+PjKdFPIopg5X)Rnx;m@_<&o7N?_0c}n7Ta;Nf>djoHwCANAq9%_cB&5-(xRyZTu zoc>up9dXUeGiHq8v0C218xh}Y-!K^meP)W{8Y9pypnD zj5f`c^QMZ&lTJFu;dADaMV_t&3R)>mq0P6$!otu-w~nef?~i&0_ysQgwE7nhx?Ilm zEaJ{zDZMMe2-07GGgKl}WRd3LZ55|^>s$wvcUDIv9~&L(wHyll-m(x3=G^MXQ8khi z*``?@Ipo=mERXe2^p1zksRO@*U$yDXx9Oo7y&+^o4OYSbp{3>bDqEX6=hWPVmTj8XK zsTPg;2m9|_E-Sq^^H^n%DY04H$r#0=eXV>kW%C+$$X@179F5-*UY|ZJZ6i9q@G+3G z;9S{6mUU(fqUdp`>GX^5vL=G&ZH>iP9z+*I&*SbmrlxA?nTZx_?kw*rqN?>Jtv^s2 z06yy(EO|AW8>%Sx1ht!7r<~H^4x&8~80ZY0)$fe8+a!TKTI=<6b}Qo>mZg};OILF6 zYqb9S#Z;iGVn#-FNhanDto8<7QDbO1O1{>kM3C<;y-@c|{$1S2ndGXFb-k zTAdx?zP$4a$a;qN3FcXXBxk6@i%*_7o1D#h_+=Ksat&Imi+<~Cmv3y1X>zH%cARCi zC#H!~oYtP08D^Y|j9izIMP2^`pFun=%7cBA~rJwc8p0EMwRyy124+qw`?o`w8~BmwDE zw&8EuNkS#{5e)FjjR+79CBk^p?66aYryxuz%LWH$JsT0t;8&xQX1c#x`VWEzJfsv$ zLJbipQjPk>pyU?-m*ra{pP(mBGz~ySw18uL##g`>NpaF_WUg-E<=n>>g^gKOwW+!- zBhy~nN_n+9B{hJJ@Lw(n)rhC%78WzmsBwSBGGj^9CP8{=8}$q{`@q8WjV^b|1MGEm ze{rh$=d&B>EupTP1YtU^q&*F6+R|dvS0bYX8Nw%@93ic;u8p9=ndX!vM3gxWhS<7P z-#mJ|xIoFU$=9kd7z4qqXSy-Q7<&goc2dFUvaZXQ4&vm+FgMTiYASS)mDpU(x@te% znk5mcwGh3~Gj!x@gTIu-*cW+h^aaCkVwTSAwn`emA*10L@wf9H7vAO5QMe+sdijnu zSMzs#dKp6G6Ai@onaKU$n@U+)P`LbZ}l zF1hcOP32t>i?`LnJ*R0|cy`A-R+$(l%Uen`FCY`b2yWHoLO&jajsc?ZQ{{znW#5v>kZo&h|z=vfa9RJali-YPy#%1~HF%qA{ zpftBFW1r33V2@HDmJ(cyY&KlYRqD$S%9 zW!T)WyQ4$2SSv7>jC{e6t-4=Ji}A**(RxaJM1ZBdz-UFSXuAG9bCk^tz8o~q zEiFQ0wNQTiX)Km~{)?$FOlaF-aSOMupT#BwbQIoAn}|Fj$gguMAr|7|O*sEHB*p6- zxv}FU-idg566;z@k9EfB3gi0)f-U(m zFRrdi92fb3$j4sGPbL`Gf`6)d`uZl;hw?iYZ%=**r8m6lPSO`Qvaxzn9$nts$!s*1 zQxWikdm}RKt+n=1ny_K`BLpofIH= zX0)^Hx_sjZI zLr7`|#CafZ@jeHs%~&tuY^JL9)!-C#Ua|J@4H;K=#`Cq?_D+N@;2q)2&JTR>CMajx zE12KP%OlcM)%2S>cPZfTsOnBv@yV0(^NZQEMJockamGSVaXUXV@?NNxBv*6M|N%8`2Ch8s0(%;XhX> zZS#T>&YtpycIAv5z@#_JeRqa9ND4S3NbAiW@w}ftoJ~WC)tUq38~xHct6Sr9$FM|P zY(vo&yCY<>DT2a@*sp4FIMc_Z*F@Yi2ZP={N}z4dOR&(5=Fgoa@ADlVss7igMwS|~b) z-$Sv)G0$|`u+68vWw3|jinD~-b(a|)1r5^bIilc>n_Q}C`1f+w#2GXE)dPfu(_WZ-9C@mC4|JE0y!Ky;_<>csmXYh zoNOu%zTK*`FN-pEy;vFJM#0Xd(ye?t?e6<=9ELQkZiWK&jq=Akw8Gj|F-pD4@QxQX zMI5*R`6kJU_tLm=Ue1n+APuyOOYao9@{qfyf9r)}1A+RbTZ*mK@1716dk+Ml*y=$LLv5T(pOjiZ@8$2K) z){XZiO9*JFiB#-8(TILkHXcN}V6%Fq7@j9nR*n-?eOW1lKd}`H`y%#6{=J|C^OhD= zYpia3Wo7z7-@T1IMs??p6PmKKj=c2IxNe_4)aEBDIjXM*Qo|2D%9)es+WkTjh(QvLLxh2SK6~7HI$-Mc)?K4nMytglK1215gS-1`ee6YX5?8Tn6eHj5 zYHuDQ?d_to7Y0nbZ})jZ&vg5Cj~GyUokZAd86Ib!TZ0M3%lQ(*q^kc6Yr}qFMrNxZ z_;zQef}KUVU$1d*!=GxxOjFyBaoSesNZlf3xP#bls~+n1G@6B;$f331E~A+RsdjtX zcx|aq7PkcMgIVjdGdK&iP%&ue=Tjj!Cw!-Bo+9q1l+`m81P=REN#oMjs|K3#ys{gu zF8N-qNoqZQ7Pp<(y0k_`H@ zqgWleEadIID^|(B=T#F!x~8}DxIv%`ACep;Mw4gZYFUuhI>K!1WL2#yE~0PvQH5X4 zDo+BR*L&XOb}!f5b_5+GJ6>y9bQun>8lpGG7401uh(LNIX+I%|x>wO#c*VbM;d8q_xu-n==Evp#7T|#H zt}Bu0F00jps6nbVD=aQ7{K_y0jYi1BjeX^tX@8pC74PUzbz6H zE9$P!4#JtN5`%Yx-vC4&qub|GCop7J@qGv|y6jq{wTZQcdQcpnsBxafxdH>d^m<^R zFY&@3Ar%ZnXI*g|Y`yYuGlLCmOksF@^#n_4_X3#sxy2ebWM8v|DPX>v;?mw83PK{L z`tXL>5rK9^4{(SJdT$Z7IJd=!UjlTZl z447DI?h3V9{@`JnSoYWTb(WA-9u$u=h)r$ElV41ev&p3rC&ucgm!(oLb1uA$SRf%(=mK91QU zmDp|EOPY?%*Z%qY`L;R<3&TW+yiG! zo|8DvD#mjrD;;oT@#su;{Hh6^&1NWCtRs*dRx z53TKskOoJ6Rrl#kX!wicV}wN~`kJW2YK~QdR;?U^@IGvvH`;5P!h#Qa)AxwnmJF#j z9f73Nb$V25V20dsj|mmPvFqA733daS>YT7wHt`CBq;L&oo{ihRmxBn?@Nm~dZYPvnKrde#+v*}hixIg9)l!rv2C_^C=YAx@_-DVnSC ziWXD)nUwIS_dUD$;0^+qQb++T7-!+<8!_r!f*zd3rwQcImQblytVd;)f`V)*uReVW z@lYJ(TgTSH%+#xfe{k-wx=dK9h)sT6D0#f%PYmZc0CT8PCUsXp~ouw05H_M>v>RGXO4`ks$)2h4M=~)!o-uKwnO6}GRcs^= zW!jC-$ZQH1hHKx3?5#qcDu+pb$z9vB56xX3Bc z!$@(*)h_B1u{NF7v#idX;QW1F&V0hYar3Ye)*v!B7Hk$g+1$!mM#CpT3zZtHC)K#j zRU&PN!(&q>M}sXTId1APAN_T~Dy)3t?VqAV7|X6JJNe0sfp9nLc$$Q|E@0p}H(xI! zEAS$Y@#fS6X#!G%RO6Zkj=rK54XG&&b56~60|>pEKxJf^aGPp0O<>Lg$@`DV6T;5z zzRM;5X!LL5u6_ep`bU_ng&x2Cp)dfZD$$eo?w_F5yn*#V$YR_USNNX&j>f*VZKu>NRWjsZE`N22&*I zrxBmGlcM<=lVvJlO2w5ikx@7<{dij|Ev0nVZ+v#@vyG`{?;NOr*9uwaI1evq45Se! zDB_6oC{EtRID~I71UaBMddk|$-uTfT=5?zVYZMHa zNKx1@>`|dq&P;Ti+$R72(qUTCV2w?h<_d|%a?GGVo6aG^vaj7#<7BSnkDM-y4ti*U z3v)FghoIweo0AU5(Xb`vHm>?R&yaMI$8Mi=WsYx|n<3$R{hlvG91YU}&G~XOLLn zM>u43I`}DBc55B$;JC^CdZ2M~>09YeD;D~4ap{-)m(;D8m}nFoaP8YCSO$dV#3(nt zvdbzoN~_E6?|Ci%$pfPl#Noaal46)J2&uFwbal}py=g*lLs*SDVB|7ZF2>Z0c453~ zZiCMveN7^E^(bHqwI9LagwpTu-t(v1oUN|6kY!C1qj z3?g%r6kr7os*Nof^EeO8@CvErR8)L2`!9CkerD=3snjdINt5^4R3&Abto#E=s~6qk zRyueh5u(#_`$5R3n>Jk2jIGGDM{4Uebm<3`!CjFKBIP8D0{G;eRRpxJ9b#~Bd}fhU z1&LByT}`XVU3|gx2jQMkw-_-ZRHj{@nb^GNx!tYsTscwYknM7R5cNVJkLBuGVW}6i zGyKC9hJ(b`l)^6<3cbA(qcX=g5#ts2@rcrsb_3lqwUe+iOFAYDu+MKIj`b( zDY_L_V6RYAEIX2vNsP1GF+Q|1O}eb*vt9bxDvs&Q(V1%DN2tq+MyV5Cf31(VRA4l-|O4}@BVry?Au54CKm!kcPn!YVg7?&1*Ni={Ij=Fi`s8 zhsX??VP?0YwnJ&*O0;kJ-$Ie4{=_K7>IbQ;>p!=ZLamOYQtPn@tt05)!MJ4CLvb>` zZ#L(*gl|5Ar5qXjMM)xndR6?xGr&JjT0I=4%lp0|4-)=V1|3`7X zKx;*^E@Z9u-lbf31U~Uv_?UX}fkbOGin*#B&$}@vr~Q!(#w^uU@5HJQizZgpfLF#$ z8usS|u0*O+?d~Skn#_DkRzwD5G!^3PJxz&X6SBbqaA9u*ce~iAW(R7h?95K19u#H1 zsHu*(>f}tOJK33kC574Y5vNF3MD88pLQJ=um0j1YkK9|);^S@8<e5@v!+^|kG?Aj|>w3_LJ4dkD%sAe{ zgXoEA^)AW@%<-rCL@Gg8Nq!8pT+ADstCvsHGVuvDYhs7=wT0HP=Lkqfa}KMB%~cL7 zt(44F3OZeBTM9N7?{0|nnp11%;uDXz5(G1q25|vYfy)mK#6^iI>E}#Gb%*p;@G~bS zwYu}Ti25`rVjn~WCZ=DqxvXN%+EC1ppaP-YRLirnyKdVasObxtkeno|q}5c^6&1}L z%$Z&lZYB|Gw4B*hO()4q)y}(LXB3a|`lNAAo8J;r*2u=kwb~U@Cw<3UDs?_PVB}3A zd&o-@d(1bLq*p^`#<#;!9U+wZjv^rmsy3@wnIF{emdgdYQCdemU-foqUoP0qgJvTd zgmW}BM>KWyOnGmGkI6Wz-D2USj=hEX?5+*HLqf>-*}{_PVLp7#N%@##Nh;hBKFju! zOUY8YG==9{6)HZZJyRvGdeNUgUAQ#R&o^yHSP}K4x&cqzZ(iJ9dP&k|bWF~}!Ng{M z{q&u|djY+$O>Ot#)OS|h5qV@5j1jipOH=CV+2%dNY@?(8495`!A+;$P+ z*CBo}rW@lr7V5Z=q19Q3ilR-=T8EJm*fe9jTzUWJ)gC6{IPz;RSR z=O(p>;OEvjjY7N3c&H2rxGEVQPqaP?n1Ri?-mSZJCByHX3%;#Jw~Gsz-I*2&YmLQ?d%6*1TDowo+F&udveNt;d6aACV-3lk2A4<0Xg_L z%#`@FC=Cq7MZMdozpzBXK@-TkR|g~K{ zi;)`MFBr_TxriZPt(Z${DIFxIaiHVj7eFXF_Wwo?ef?i22+8LBqR%!KmP;0wzSWDV z9MS&m5D&+d-9p^}j3a!xs=kw(sh!s?W1K_C11|U~iLEYq35n;%Q4Afe^x8(A!%9i+1SUaFh2@`L zE#uPeCGwA~-W+Q+n@CIGKbCmn3rV;zSh-Gg(7=9cL{47cNcCsylOqC=WIqA^vA90lB91m_zv^Bo#<()h)aDxtB6dP}Nr@ z37$3O9wI%fW9zuM-fVuKPr&1~C|0xjo2nAcci83x+^Nt6TVTcU;8lCr~csbA&;&Nzw{uY+tRoxO6)Zu(X%sjlQr;8tV&&S&*}` z-?q24=5{|@;EIe3$z<1VqnzqYSOX~JYK{?1naN~!TpXH#vaNV&mEHH(mE=9ngoHYG zTzO|j*U8irT#9j4hUHaJk~iatcE#qcjtn!SQPbQ%E{^(JbICA;8nYaD`FcU?pmLWw zJM;T3J(deOLp7Jwv&!>u2syadQLr6#LItOgeTqEIvIt?wbzn z90>00xbKn}m<0cVQ2^iiGvtA8ZT|vt_f6crd97RU4oFm&1%wd*Aw_z)dDygn<=pEkx{|GgCyPaiG>Ud#|64g_?C@g8p z?P9nQe1yT+fVRuE1F||fWTz#?Y!y>?*;A@&Gh?I?a;yV6%ZzWi)q1=hQV{x<2*-1? zUr8(MAG7*5IOJdN|7E!Ypj>n+s-QGwLu4n&nGyrQ?JnT^iqPO%UBEN&Hs6j8Tg)(H zvt!N@S>|ejl5a&HL46HlSF6oygl$=a+A?2rsLJU4k9hJ_Yp?Ck~-)~@+!apMvS1y_0kJJUA^A3Lbb(@ATWuds)^Za2* zOe<%24)CB99rCk(_n>UL?}ZY4!Dz2sPTm6%kR#!0{eR*5){-gR{LO9hs|)47X{$SW zJ=hoTXQ+LZSg>YzoL>QZg!5Q5H;N3Csky1#g;Y@_^m;G1ON3Mh?}Z4NH3y}h-;uh1 zWzGMo{T<$U{0F>qv!#B(k>Xb)>#Jr(V|vDWM&xpLN+KS^xX?`NNdC>ja`?-_q9`&& zTUbdy&?6 zQ9>vDm%~w1L5p+~e0G7+E%tFCi=2{9bU#KYy+@dQvTbwxdEl6pAx%UR#`z9>+bT1{NAHn9kZ&$gd^`XGX@DeGbgGL4Q*T1{;hO(>V2CbI+Vib z^cRd%$C@t~z0iO;gn8(pprZfe9+wWl7<`ZxyS;Tt{=U+!ru!OjE8HToXwus{Pq#+A z@ZVPm`I{hOOgbX1>z%x#ntp`FS>0JEczrS8YT=XT=p!-^S5W&s~`<{dK%G zf8Tn{loM5`(?XX3N;-h!8bO}A0ywT34hxM!GMl>!V*3)>8a|!hVd5oLhS8O`m>0hp z2qpnF4{GBZ5#J^ZvFDoe@gVu76AGj;-2jnh&;B#F{*se}-ZLrn|60<8k3E5VOc&mK z{V}Ccl+v6)1FJs1H&${(s!fd|q}gGZ?+w>MmxB{ypegY85l zEvJ2^+^Emq3TCvn6_16}DYR79kKEg%+aRwGIFXy}CijHv;mZ|GXivh2Cnc~=x5D(= zrCiQDJ2DxmvpkLXf?*+VGKJ$`+R3Xlz~R>zU7fUjukTuZO0=1ghkd~NF09bR%ZxZ! zc&>9#e2x{o`yf|NQ$#eqXj}65kWW7EvaUG_L*oVRM~|=^s&Gq=DNKkxFrS;t>GnwU z+&N@7Y??J_OAj)_3YFEmTG$x0P$T)XUX0>TE~#XyT$1?Lbq@ZnF@HozYD;+a=~RI# zD{4FYAXf5G74^~VY`HIr@PvP(?)j^OD-Fn*vpzGFmM7BFFKTYOT~k+EHDet1l|t~o z@3Prvl`^1!Y-%y<9etYUbdJjru6$1TO8TO0`k?I__7_mU(@m| zQVU(05Sxc|rw*vhOb_bbgRcFrd+fb35Oj%N3C`0wdO=5lxjT7CY@xRcg40U^HqR`H zMYWMGCc9>o_FdEG#tL7jR<&q2EyGUq6DV&hNLg zIw3Q2F@|aZ??Is`^wTJb6Enp0l{cu*^b?RW(93}PvcDS;}f7+G(P$qWdJ)!4E&tO?rwx)oWjKs@1B;~_pTMEddzF^>z zm+u>&_#J?}jUUayv7R-DExF=6Nn=EVq}Ay#;xY=9RQu6#kgl)?H-D`a1Wwg|e2xW+ zT3yJIqiZ7u1s&HuY*w>Nrhw3_IY%cc@aK+{4(v#uao*f1vN=sg%!#76L+IGtM$hi& zhP{;*o+O8fDkwouKlSnhDA43ElT)eQmI=A)tbSY#5X;ioq=560dK2%Hr|>3CQ{BbB z&XCBQvW(2V$PSG(n-{Yz*V6aMucxQ1b7bxsEYdL8pvb!e5KEY#){3`0-A1A3y)PKI zP%qI}f7VmgSWW6iqD~}0@q~Nz(~hovs3#GK$!Caz0Ax~ftRIu&We~pm>odRiz>A`g z4u&lWvYa0HeZhE^0mAirW)+W!WI*>I<#XohV%EZ?C=nmicL< z0RK)35Q@oX^#`Exn1gFK>Iv}ge|^8{LMEiED6IQHU5phh)`+`bFzP{ZJ$13G;F&XE zojbh#k1iCycR825Kf{T-5@LS;^RgQ*uuK=5>2@&c(LF?>$dLiCCCqHZWTYGb^owsn z>|6q51S+pd30xA6XRi4Fmxpnf6hT3lucXJ&0~CssK7l5a0rJ+PN3IY$D;?y1 zqmmxB+Wqr!Y8tWw6pKu`q9I0llQGVHQ2PBYX|Cy&3AH}eZRH` zECeP)Gy}#ppEGy!EA3$4X@{mhn2T@J=YySaa8e;YS}T4f)&(>%16yD_G~bEYv&woH z8l4rc_b-@O96-JtZ<%#&Mz-jOpH_UqKu;H#8Vb%JuvG!Y8^2CpG9S172gP6C`5OZP z@_YVdKS{ni9#>@UN-x;iX#>umxw-)Ow+t}KFEj+a{R=Ck*aYkH>sEb!2*kJsb|MKR z!Xy~HU--L7{rf5Gt^H>*5_{xrIQ-6IWJ3Giyj5b31<-m%yT0P3ab$?rSe{XHMf1g z5b3$@rd^-(3ofS6i?YfWhrGjlh=m5Obn~Y&Uc8Qn2 z3h!@{Yytc~KD)D%N0cD4{jDp|Ah2mK*W<4pP=gMV-(&z%68Zf)lPqX}J>jp(Jk2d#D33w1w*8wHzHtK3TKpq@H@&Pe1 z5NB!hXOy4`sSCLHZyMz+7^k(qwZ6Wufzvk?r$!h5|ARML_n92k(d`i zuK4SL8puLD1WICmt`|K9=~E0opdc;qQ53DAuqA^q#OU|Q422;6noFhC95+99MFtPF z5<)C}oxQYQW-_1iKo24e#^$Sdg5w9Y@=GyM*A0F#da%fT?eE+Be|vq;ZzB47_F!|? zO#n3+Mt8K2?jfgdHYV8pM%ChE8~QS9mDLR`l`g-$_16((^EZVWY9{wVkj?D^pi1SxQtEs-Cmco8fO(z2DFqVgzh9SvDTosB2mFF2pwH`fqalU739!#@8=ugh51{5exc1xxnT(E?_0l2t@jHQ~L@4CVrnk%lO=# z{M>u?H6qMS1As1OjGlLQOe3q3Y@SVz}k7_15RLH46cA(;}ziW$;6ZaAosy) z^vBPYR7Ib`BRFNRroLhY|8$d)$7@zTH6R5K77%dtthB?vq^k9ECGD-T^c!)fS5wnV zmHO+Byx5}1R7e@_nWjFZlO$6%07yV8FKQcrDU2=)X?jMtjEU@?fdL;~qa-;4sSkMV z;Jj$yMc^3s>n%`{v>|LJZ7v$;<0DhOlL8D-G<;H-gvS|%9!X8^u>ieYc8$|f@DLsx PJt9mnwwF#=Uxxo5r-64f literal 0 HcmV?d00001 From 0a07f734464ec03bd6a862527c3f504a84937b4d Mon Sep 17 00:00:00 2001 From: Fenad2 Date: Sat, 8 Aug 2026 15:18:15 +0800 Subject: [PATCH 2/2] - update docs and README.md - Optimize project structure --- README.md | 6 ++++-- .../mixin/litematica/GuiSchematicBrowserBaseMixin.java | 3 +-- .../schematic/{ => browser}/ListMoreSchematicBrowser.java | 6 +++++- .../{ => preview}/SchematicPreviewDirection.java | 2 +- .../schematic/{ => preview}/SchematicPreviewLoader.java | 2 +- .../schematic/{ => preview}/SchematicPreviewModel.java | 2 +- .../schematic/{ => preview}/SchematicPreviewSession.java | 3 ++- .../{ => preview}/SchematicPreviewTransform.java | 2 +- .../{ => preview/gui}/SchematicPreviewLayout.java | 4 +++- .../{ => preview/gui}/SchematicPreviewOverlay.java | 4 +++- .../render}/SchematicPreviewRenderBackend.java | 5 ++++- .../render}/SchematicPreviewRenderManager.java | 8 ++++++-- .../{ => preview/render}/SchematicPreviewRenderer.java | 5 ++++- .../{ => preview/render}/SchematicPreviewWorld.java | 3 ++- 14 files changed, 38 insertions(+), 17 deletions(-) rename src/main/java/com/listmore/schematic/{ => browser}/ListMoreSchematicBrowser.java (96%) rename src/main/java/com/listmore/schematic/{ => preview}/SchematicPreviewDirection.java (86%) rename src/main/java/com/listmore/schematic/{ => preview}/SchematicPreviewLoader.java (96%) rename src/main/java/com/listmore/schematic/{ => preview}/SchematicPreviewModel.java (99%) rename src/main/java/com/listmore/schematic/{ => preview}/SchematicPreviewSession.java (97%) rename src/main/java/com/listmore/schematic/{ => preview}/SchematicPreviewTransform.java (98%) rename src/main/java/com/listmore/schematic/{ => preview/gui}/SchematicPreviewLayout.java (95%) rename src/main/java/com/listmore/schematic/{ => preview/gui}/SchematicPreviewOverlay.java (96%) rename src/main/java/com/listmore/schematic/{ => preview/render}/SchematicPreviewRenderBackend.java (66%) rename src/main/java/com/listmore/schematic/{ => preview/render}/SchematicPreviewRenderManager.java (88%) rename src/main/java/com/listmore/schematic/{ => preview/render}/SchematicPreviewRenderer.java (99%) rename src/main/java/com/listmore/schematic/{ => preview/render}/SchematicPreviewWorld.java (95%) diff --git a/README.md b/README.md index 16260d1..59db597 100644 --- a/README.md +++ b/README.md @@ -34,7 +34,9 @@ - **掏炉灰助手-开关** 高亮输入槽含有无法烧制物品的普通熔炉 - +- + (此功能暂时仅限单人游戏可用) +- - **掏炉灰助手-范围设置** 以玩家所在区块为中心,区块为范围的扫描半径 @@ -54,4 +56,4 @@ - **投影实时预览** 在投影文件选择界面新增原理图预览窗口,实时显示当前选中的原理图 -![](docs/new.jpg) + ![](docs/SchematicDynamicPreview.jpg) diff --git a/src/main/java/com/listmore/mixin/litematica/GuiSchematicBrowserBaseMixin.java b/src/main/java/com/listmore/mixin/litematica/GuiSchematicBrowserBaseMixin.java index 1a59c7f..78d26fc 100644 --- a/src/main/java/com/listmore/mixin/litematica/GuiSchematicBrowserBaseMixin.java +++ b/src/main/java/com/listmore/mixin/litematica/GuiSchematicBrowserBaseMixin.java @@ -28,14 +28,13 @@ public abstract class GuiSchematicBrowserBaseMixin { return; } try { - Class browserClass = Class.forName("com.listmore.schematic.ListMoreSchematicBrowser"); + Class browserClass = Class.forName("com.listmore.schematic.browser.ListMoreSchematicBrowser"); Object browser = browserClass.getConstructor(int.class, int.class, int.class, int.class, GuiSchematicBrowserBase.class, ISelectionListener.class) .newInstance(listX, listY, 100, 100, (GuiSchematicBrowserBase) (Object) this, this.getSelectionListener()); cir.setReturnValue((WidgetSchematicBrowser) browser); } catch (ReflectiveOperationException ignored) { - // The version-specific preview browser is intentionally optional. } } } diff --git a/src/main/java/com/listmore/schematic/ListMoreSchematicBrowser.java b/src/main/java/com/listmore/schematic/browser/ListMoreSchematicBrowser.java similarity index 96% rename from src/main/java/com/listmore/schematic/ListMoreSchematicBrowser.java rename to src/main/java/com/listmore/schematic/browser/ListMoreSchematicBrowser.java index adab9f2..b22bb4c 100644 --- a/src/main/java/com/listmore/schematic/ListMoreSchematicBrowser.java +++ b/src/main/java/com/listmore/schematic/browser/ListMoreSchematicBrowser.java @@ -1,6 +1,10 @@ -package com.listmore.schematic; +package com.listmore.schematic.browser; import java.util.Date; +import com.listmore.schematic.preview.SchematicPreviewDirection; +import com.listmore.schematic.preview.SchematicPreviewSession; +import com.listmore.schematic.preview.gui.SchematicPreviewLayout; +import com.listmore.schematic.preview.gui.SchematicPreviewOverlay; import org.jetbrains.annotations.Nullable; import fi.dy.masa.litematica.gui.GuiSchematicBrowserBase; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewDirection.java b/src/main/java/com/listmore/schematic/preview/SchematicPreviewDirection.java similarity index 86% rename from src/main/java/com/listmore/schematic/SchematicPreviewDirection.java rename to src/main/java/com/listmore/schematic/preview/SchematicPreviewDirection.java index 227ebb7..8c665e3 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewDirection.java +++ b/src/main/java/com/listmore/schematic/preview/SchematicPreviewDirection.java @@ -1,4 +1,4 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview; public enum SchematicPreviewDirection { UP("↑"), diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewLoader.java b/src/main/java/com/listmore/schematic/preview/SchematicPreviewLoader.java similarity index 96% rename from src/main/java/com/listmore/schematic/SchematicPreviewLoader.java rename to src/main/java/com/listmore/schematic/preview/SchematicPreviewLoader.java index cda5ae7..6764d85 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewLoader.java +++ b/src/main/java/com/listmore/schematic/preview/SchematicPreviewLoader.java @@ -1,4 +1,4 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview; import java.nio.file.Path; import java.util.concurrent.CompletableFuture; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewModel.java b/src/main/java/com/listmore/schematic/preview/SchematicPreviewModel.java similarity index 99% rename from src/main/java/com/listmore/schematic/SchematicPreviewModel.java rename to src/main/java/com/listmore/schematic/preview/SchematicPreviewModel.java index 729c8ed..ce68a54 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewModel.java +++ b/src/main/java/com/listmore/schematic/preview/SchematicPreviewModel.java @@ -1,4 +1,4 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewSession.java b/src/main/java/com/listmore/schematic/preview/SchematicPreviewSession.java similarity index 97% rename from src/main/java/com/listmore/schematic/SchematicPreviewSession.java rename to src/main/java/com/listmore/schematic/preview/SchematicPreviewSession.java index 435c1e3..bd44ab2 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewSession.java +++ b/src/main/java/com/listmore/schematic/preview/SchematicPreviewSession.java @@ -1,9 +1,10 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview; import java.nio.file.Path; import java.util.concurrent.CompletableFuture; import java.util.concurrent.atomic.AtomicLong; +import com.listmore.schematic.preview.render.SchematicPreviewRenderManager; import fi.dy.masa.litematica.schematic.LitematicaSchematic; import net.minecraft.core.Vec3i; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewTransform.java b/src/main/java/com/listmore/schematic/preview/SchematicPreviewTransform.java similarity index 98% rename from src/main/java/com/listmore/schematic/SchematicPreviewTransform.java rename to src/main/java/com/listmore/schematic/preview/SchematicPreviewTransform.java index 77178b4..b7e1aff 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewTransform.java +++ b/src/main/java/com/listmore/schematic/preview/SchematicPreviewTransform.java @@ -1,4 +1,4 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview; // 固定预览方向的相机状态 public final class SchematicPreviewTransform { diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewLayout.java b/src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewLayout.java similarity index 95% rename from src/main/java/com/listmore/schematic/SchematicPreviewLayout.java rename to src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewLayout.java index bff7c09..22eaffc 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewLayout.java +++ b/src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewLayout.java @@ -1,4 +1,6 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.gui; + +import com.listmore.schematic.preview.SchematicPreviewDirection; // 原理图浏览器右侧预览区域及方向按钮的布局计算 public final class SchematicPreviewLayout { diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewOverlay.java b/src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewOverlay.java similarity index 96% rename from src/main/java/com/listmore/schematic/SchematicPreviewOverlay.java rename to src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewOverlay.java index 4896edd..7f5c7a8 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewOverlay.java +++ b/src/main/java/com/listmore/schematic/preview/gui/SchematicPreviewOverlay.java @@ -1,5 +1,7 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.gui; +import com.listmore.schematic.preview.SchematicPreviewDirection; +import com.listmore.schematic.preview.SchematicPreviewSession; import fi.dy.masa.malilib.render.RenderUtils; import fi.dy.masa.malilib.util.StringUtils; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewRenderBackend.java b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderBackend.java similarity index 66% rename from src/main/java/com/listmore/schematic/SchematicPreviewRenderBackend.java rename to src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderBackend.java index 7899711..f0cba5e 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewRenderBackend.java +++ b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderBackend.java @@ -1,5 +1,8 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.render; +import com.listmore.schematic.preview.SchematicPreviewModel; +import com.listmore.schematic.preview.SchematicPreviewTransform; +import com.listmore.schematic.preview.gui.SchematicPreviewLayout; // 原理图预览的版本专属渲染后端,公共预览逻辑只通过这个接口调用 public interface SchematicPreviewRenderBackend extends AutoCloseable { default void setSchematic(Object schematic) { diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewRenderManager.java b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderManager.java similarity index 88% rename from src/main/java/com/listmore/schematic/SchematicPreviewRenderManager.java rename to src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderManager.java index c02e6a1..0023be9 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewRenderManager.java +++ b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderManager.java @@ -1,4 +1,8 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.render; + +import com.listmore.schematic.preview.SchematicPreviewModel; +import com.listmore.schematic.preview.SchematicPreviewTransform; +import com.listmore.schematic.preview.gui.SchematicPreviewLayout; //#if MC >= 1.21.11 //$$ import fi.dy.masa.malilib.render.GuiContext; @@ -64,7 +68,7 @@ public void close() { // 如果当前版本没有对应的 SchematicPreviewRenderer 类,回退到 null(GUI 占位预览) private static SchematicPreviewRenderBackend createBackend() { try { - Class backendClass = Class.forName("com.listmore.schematic.SchematicPreviewRenderer"); + Class backendClass = Class.forName("com.listmore.schematic.preview.render.SchematicPreviewRenderer"); return backendClass.asSubclass(SchematicPreviewRenderBackend.class).getConstructor().newInstance(); } catch (ReflectiveOperationException ignored) { // 当前版本尚未提供专属后端时保留 GUI 占位预览 diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewRenderer.java b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderer.java similarity index 99% rename from src/main/java/com/listmore/schematic/SchematicPreviewRenderer.java rename to src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderer.java index 1eae4ef..9bf7894 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewRenderer.java +++ b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewRenderer.java @@ -1,6 +1,9 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.render; import com.listmore.ListMore; +import com.listmore.schematic.preview.SchematicPreviewModel; +import com.listmore.schematic.preview.SchematicPreviewTransform; +import com.listmore.schematic.preview.gui.SchematicPreviewLayout; import java.util.ArrayList; import java.util.Comparator; diff --git a/src/main/java/com/listmore/schematic/SchematicPreviewWorld.java b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewWorld.java similarity index 95% rename from src/main/java/com/listmore/schematic/SchematicPreviewWorld.java rename to src/main/java/com/listmore/schematic/preview/render/SchematicPreviewWorld.java index a27461d..12f6b1a 100644 --- a/src/main/java/com/listmore/schematic/SchematicPreviewWorld.java +++ b/src/main/java/com/listmore/schematic/preview/render/SchematicPreviewWorld.java @@ -1,5 +1,6 @@ -package com.listmore.schematic; +package com.listmore.schematic.preview.render; +import com.listmore.schematic.preview.SchematicPreviewModel; import fi.dy.masa.litematica.world.FakeLightingProvider; //#if MC >= 26.1