From 85f4486a4a9d440c5ccb1d02dfcc87baf990d1e6 Mon Sep 17 00:00:00 2001 From: Good627 <193092356+Good627@users.noreply.github.com> Date: Sun, 25 Oct 2026 14:23:15 +0300 Subject: [PATCH 1/3] feat(event): Long event missions GUI, rewards tracking, and event announcements --- gradle.properties | 2 +- .../edenmod/textures/gui/event/all_raids.png | Bin 0 -> 559 bytes .../edenmod/textures/gui/event/coinflip.png | Bin 0 -> 11258 bytes .../edenmod/textures/gui/event/diceroll.png | Bin 0 -> 9283 bytes .../textures/gui/event/frame_daily.png | Bin 0 -> 7058 bytes .../textures/gui/event/frame_master.png | Bin 0 -> 9704 bytes .../textures/gui/event/frame_repeatable.png | Bin 0 -> 6453 bytes .../textures/gui/event/frame_weekly.png | Bin 0 -> 7272 bytes .../edenmod/textures/gui/event/guild_wars.png | Bin 0 -> 6060 bytes .../assets/edenmod/textures/gui/event/nol.png | Bin 0 -> 17929 bytes .../edenmod/textures/gui/event/notg.png | Bin 0 -> 17619 bytes .../edenmod/textures/gui/event/other.png | Bin 0 -> 6056 bytes .../assets/edenmod/textures/gui/event/tcc.png | Bin 0 -> 20797 bytes .../assets/edenmod/textures/gui/event/tna.png | Bin 0 -> 14139 bytes .../edenmod/textures/gui/event/trivia.png | Bin 0 -> 7160 bytes .../assets/edenmod/textures/gui/event/wtp.png | Bin 0 -> 14705 bytes .../assets/edenmod/textures/gui/icons/nol.png | Bin 9214 -> 17929 bytes .../edenmod/textures/gui/icons/notg.png | Bin 8852 -> 17619 bytes .../assets/edenmod/textures/gui/icons/tcc.png | Bin 8662 -> 20797 bytes .../assets/edenmod/textures/gui/icons/tna.png | Bin 8749 -> 14139 bytes .../assets/edenmod/textures/gui/icons/wtp.png | Bin 8410 -> 14705 bytes src/tel/eden/mod/EdenModClient.java | 112 ++- src/tel/eden/mod/config/BridgeConfig.java | 6 + src/tel/eden/mod/gui/BridgeConfigScreen.java | 1 + src/tel/eden/mod/gui/EdenMenuScreen.java | 22 +- src/tel/eden/mod/gui/LongEventScreen.java | 720 ++++++++++++++++++ .../eden/mod/net/BridgeWebSocketClient.java | 64 +- src/tel/eden/mod/net/LongEventState.java | 107 +++ .../chat/EventAnnouncementFormattingTest.java | 35 + test/tel/eden/mod/net/LongEventStateTest.java | 75 ++ 30 files changed, 1132 insertions(+), 12 deletions(-) create mode 100644 resources/assets/edenmod/textures/gui/event/all_raids.png create mode 100644 resources/assets/edenmod/textures/gui/event/coinflip.png create mode 100644 resources/assets/edenmod/textures/gui/event/diceroll.png create mode 100644 resources/assets/edenmod/textures/gui/event/frame_daily.png create mode 100644 resources/assets/edenmod/textures/gui/event/frame_master.png create mode 100644 resources/assets/edenmod/textures/gui/event/frame_repeatable.png create mode 100644 resources/assets/edenmod/textures/gui/event/frame_weekly.png create mode 100644 resources/assets/edenmod/textures/gui/event/guild_wars.png create mode 100644 resources/assets/edenmod/textures/gui/event/nol.png create mode 100644 resources/assets/edenmod/textures/gui/event/notg.png create mode 100644 resources/assets/edenmod/textures/gui/event/other.png create mode 100644 resources/assets/edenmod/textures/gui/event/tcc.png create mode 100644 resources/assets/edenmod/textures/gui/event/tna.png create mode 100644 resources/assets/edenmod/textures/gui/event/trivia.png create mode 100644 resources/assets/edenmod/textures/gui/event/wtp.png create mode 100644 src/tel/eden/mod/gui/LongEventScreen.java create mode 100644 src/tel/eden/mod/net/LongEventState.java create mode 100644 test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java create mode 100644 test/tel/eden/mod/net/LongEventStateTest.java diff --git a/gradle.properties b/gradle.properties index 336689c..605364a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ loader_version=0.19.3 fabric_version=0.141.4+1.21.11 loom_version=1.17.8 -mod_version=1.6.3 +mod_version=1.6.4-beta2 maven_group=tel.eden archives_base_name=edenmod modmenu_version=17.0.0 diff --git a/resources/assets/edenmod/textures/gui/event/all_raids.png b/resources/assets/edenmod/textures/gui/event/all_raids.png new file mode 100644 index 0000000000000000000000000000000000000000..fecca5011fe89bbd8d234ef02ee314e41875ae30 GIT binary patch literal 559 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7T#lEVEpFk;uumf=k1NXUd)antPdt1 z7U`Osk*sJYCf1dpc+iQPwN_yMDfYk%PTZVgO&N)a!Y(;mgqXRSgbZG9nCbcMT-xLl zC&P2ijLXX&-kU3*;1tdK|HR#IkG3zp`|9Z8pL;n9TP)1`G-WQ={OtI*-Nb&X$YcTc zj^e{U&*L<69xkuE86n$Z;WWqFH#3_{?#`V5e{bAAzC-bd;G?XCLK~KBFMYVNs7h#0 zz5Rot5A$!#&wpOJz+h}N6v|V zHm!Mc^}B)KBaXtnfJPnnmvy(|D=&xr+n+d%8RXC)Yd-DPzqS7!IxAb%X#pL-?%Mjs z{WCw9OJ)}vU$mRuyE(z~$fcccGj_`LgqpogK7Z$?1jw*;T?^_~mA$>qoa>}2m@V%0 z)(C8M%vz7fH>TXkkJ_RUbvgC;Y@g=+V6~dTAs46c$rdhG0D9!k0;WiFuh8Ws;9&87 sdqexI`_yxq9ECDpnSFc`meet%$?gh&F2C;tFd;B_y85}Sb4q9e0PN-hmH+?% literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/coinflip.png b/resources/assets/edenmod/textures/gui/event/coinflip.png new file mode 100644 index 0000000000000000000000000000000000000000..9e79f71ad5b9456956c5f48d93c3cb9c7f0c9bc8 GIT binary patch literal 11258 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 Xyp%A+@$3Kl=>;grs7lws%|iYM7!GY9 literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/diceroll.png b/resources/assets/edenmod/textures/gui/event/diceroll.png new file mode 100644 index 0000000000000000000000000000000000000000..d7149f5d66e4a7116a35ad08de84c6c5e094f509 GIT binary patch literal 9283 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 literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/frame_daily.png b/resources/assets/edenmod/textures/gui/event/frame_daily.png new file mode 100644 index 0000000000000000000000000000000000000000..73af0bb79051e9d86fc25a2947c214d736efa075 GIT binary patch literal 7058 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 literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/frame_master.png b/resources/assets/edenmod/textures/gui/event/frame_master.png new file mode 100644 index 0000000000000000000000000000000000000000..11194339dc21a44e2c53dcbd289c66afada6c04f GIT binary patch literal 9704 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 literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/frame_weekly.png b/resources/assets/edenmod/textures/gui/event/frame_weekly.png new file mode 100644 index 0000000000000000000000000000000000000000..8ecdab9ee71ea4c094282fb046a2ad80c3522828 GIT binary patch literal 7272 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 m{xh)cG!m;{)31rQp8gNL`Ax~%J8OFY0000jv zNn4>%``3G`f`9`c2`VU<5QZcSfk4JP59gj?PiwFB{ob|Dx%VU_I5al|%FAzYa?jak z?|t@q*E>G%yMUMIC3=ZoqL=6;dWl}5m*^#WKB=dt$LiC4;-y*m-$(4)Yp=B%e`wt& zv<7>AZ|NmEA*6K=@9yq4tNxBVzH-iYzx&V2()UlCBoDix0TJJR2(pYyk#^u%XlWz%c@ zAx=LSdPwxpdwSN24I4Hj-}%msD?7SczSrWqYm(ScY{!OQm8??sMS>*C<~%D`5H0Dq zyN~y6V&le*n(is%WPc}@%eozN+TUIat3STud;MRz<9j!}@8+BTVQz0PNc8B2dZ7Dn z{0_2Ph>;lsi3>WH`5Z4WIs9pc2fzP`+{<2fO;z{waMqi?*PxsK>mPpI zYA~l96iLqfra{O)- z9KBFC-SXKtx3qNKEF(wRx;;shvfJA;knuRGwUHlGtF?a!N)z|L<9)ruhdr?-rb`w;ynisjV%Q5do=kZ6}ql?%}Sj_ zYq+%M4vklS*OuN=DIE!>tjC_(fnB?Hpj?@hjwo0^xc#T1rM2Lf%2P3&yT895$CLC% ztywRFV#v9kJ!A{7L;A{gY%d-iDQob66^pq`pyNwg+_w83{K03x>WAv?k^N5|`tsjz zDtDZAn){`H{+rc-tjwteJPo;oKv$csxMoxUUpz$5=z^Du;RRPzOwrt@0R0d9)CuA88-s+-6X<@N-}*~tL=dL_I20wkIbe~cEf-D@vkpkc>W3*XWrY<+J0fB zT+(4Q7HgE13@W0lqs1^`X zO(9?S$jDelmi@%lu*8Fp?8IY_?bms?OBM^BT?t19#wJTweEsWp--;6ydF<`&mGtj> z?zwfT%e_x28FpJvkdg5O#zux@G2`k&Mkrfrr!}8p4%ZkR8OF%Oq|UarMmu)zE^}wwP3`UNm0P!7VQ=1iopqD`czb_JlWz|mdBOt0B%$* zt3&(t#`~Yy7na5*qKunW<0BR4{+~W<-}B=K?0^23e{=uwpS~dX?0IU@JYJknYG7jz zX@ZlRj@u2A1-x-1uzmZ)sRetAxDyXq2sv?mwxaC1OE!gstZFqFg0Gxaa%3+k${EBERwtVHPuiWu_t2S7NPa#@Yt1%o+GL&6RZG08%ME*!9zSr)DhiP~_J<8P&8O)pWU9W*VFqJLc#F0(L&n4h#)n{gyX< z>TgmzvRm}`_n#E*(|5jem0PI{%4OCWA1}Jjr^BFPsVD$b2@8aa!N9_O4?K!WDS%28 zI19N7RlUYj%TSrM;nE;|1coIX0kB3@p6a~ zj)x!Fg=%RE9=8*ccS^Cyata^sx#rvVtzHeY!gudD^j4K%w+JHVnV&r<#@<8w!7?r8nm2jF43=5dus~8BLBc zt33L{)7sBqv8+ymS+Q3M;^5K${gIQZ3C{=lDd;5pG<}SL57RRTrI?bX8DGjZ) zcs`}TtRyeG`}$}?*(7Tpt4t-|6*|K#v?>G+cr`*x9Ksnp;O*M~{gW2{Rmf+&uvW1v zQ)NnQp;Ym)?cqm}BpgW;OQ8}6+Ip%|P5xy=f4>?SSS=`8*-N2sbc{lFG=qa%|_c?_716v*L?ShWf!9awAu)e(T^z&woEjfu32Ki=Rica#4C<-2gx9 zt$$J;pDNuSL^TMmA(Vs#jYtNFT^+p4YCUOIew`Swv;G>r&b5+`O0}FsGG=#f*@8o( z69^KeUBOZG^3r3@m-}w}$&M>lueLUA+BWUJcK7sa-2=YZYQ3qdus!d1nW3@CL|4j} zt*@3oxbu>(x5U?7f9;&kx!+=y%AX&6BeLjue(ZtS;yT@3&)`m$#wQb90~Z0b4q!0_ z*a{_=|7gV@d@nkga_N12-Ta+@{aADbkWq1bx|UMAwv9N5SbIl1Ri{sH|1Lu$R z?}eq~_G0T&*}DA7jp)I))vJ$Na_;#BglMqteyF~_Zjp7YC5~ngNy4;@R1}7+S`HHt zV>?VPed9^P0G&IBnN}K?U9oDuQmicuC3A#8S8EGi^Rjbs!OBzA>eH9;pcd?TY~Sb~ z{q1%ABW;ijlhq7$kLX6<66*RoI9MT;dDF$f6DhHYCKoQZ0wIvR~vo}}Zn?mcN-z{0>8#wcHO z=E{pQncOPN%_srQcoZX^9M!Bmg7VlQC1v#Aci#8l?yD|4&E2%^*`Z!C2v=`Hvg2bH zw5t~HcS5EiteE8sS+0bmYEi=6LaW1^tN^niV4YI?gG*n9bs+oUgf56#25f3-94d(*!;sg4S~&NV zC66AqF<*&1;%weVO-6|P8k0(?M5;McL*pJDdF2|?d(VHu zL{l>84I9F1K6XLIa@myHC8} zCBVjwsa~IC!4lhbUp2R-MJ;V>7jtuM+=0-G7A?rHyLA1hw|?e|780S)JC;ss#x`t7 zc76Aw^WXjYH+(UZFTA4~hMIF`(GSUFGVuKXiB>3=$A0vgfB5E}t5Vp@q=M+0yi`k5)P>V6AP{4w&E|F-c_W7OfU3&h!??2FY z)mrkMH*el-JzpMy#zryp&|klQ@w_GXw9aY&pyfD1ST?sTn+eN;N)mXkV;JF$Z+!i- zhkpF2Gd}g`e@7I_Yd%jspvA@>-|?i5l7F==Zb{CPLRSmoOoGsgVdp&9*$k|#3$Iv! zSIomJqpUE4vmixn=8p*S=@{`t@?lmW|@Mn1GPCjX~f`8YYrQOdS#;sHLYYx*%_{o3Fq2 zEi1@!rxf;)Qegevkiy32YC5Xf8Ha_IQc*U7-I7kao5{k; z@G>zM0@7Ef&^gJaoGmFZOEy5Sfm=Pg?W=DaIW)+4z>`;;eU>dGNlXbYIQ$?G)lkW{ zWvAy0?Ti2ZnL~Gn%NDHt#@1^GY`yhbVD$?y6 zN@5I3^h|v0?dO-?eEDlKr>{Dd$K^p-x&~(1kO_kyNAR31I_ECJQ%{ZH_U&8e?K-sY zJOEGZ!pLEZXd|F|8Q{+UjVIwew8`_MkCrB;A}{ATGUGwoE_ks8f^j56qu`Qk0|Cwj zm=>H_KrECHP6h?RRz3KM-^#u0n*XeBd;u|lv4Xq1Z!NTVUGJ#|65qJ>UOqB1!Cv?3 z^O55Trlv}ycH!k)EeJQsXT1fUE&2`(-umGM^WJ#vu}-{o>(*?sShQ^0=GAJ|D|8le zvLc0*wQSD0C%7#YJaOl}+c7pihBvIc5Cry% zX;tN7*s>3!ailMI}5*e*RgW}GuFEM)RI#9@e_TA8elPu~5$)4RhY3SMtHR(?)bmp*Xl zY2MM=g8LqL45g_m-tpGoM5R*0cW>K_{riXESb6Q`@)(|&sDA#xzA$;k6|3#uqXAj; zM$HH%{pZ=!(B6rpHlZ*zZh2kvz#O`#B0A4J6WBY1WTFb`N8p(ZL@o=rEe~XcPNpW| z4-ZY&Y9rGU>jlC9G+n?4omYJ!iu|)|n_n1%t00uBt!oi~df*_w^}WrwZ0!X&ZDA*b zV8~}Z1X2nEwMLQ*k3Dnx;9!Eb)0N6DJu`uw1tD@K$Hpl$TL*2J|1nY}4a1H<8-z=^ zY;(L2f^Zl5l?O5OpzTP?WNd6Ko+?d6GK$sk(1;it9|yU7VG<*j z46fUb0|&-2GE#<{EdbntRLX>kU$g#IZ2%UN@L9KU^I^~M>iRS7EO^T-2N%XVR#y8Q z;VeH5thEDhJfP+S;8 zGC04l-~7~m0Dt{kuV1{^X4b!2Ucm`%PkJqLt+?vowjbS((eX*VaqVm1_yIi21uM*9 zSkPkS+EyaldM09#O#$Nd)txSWeN+h7bK^?VqCPr};7rJv33Byx7$OP-6!Ljw92bIf z2-`tY)5uyTSP33Wa4-`H(wt-7f@Ph+)Y$;`uG@JOFM#q29j(5CRf%|O*3K6+;wr<) zI9a4Xr2?%blGY3?VF85#+<6NS4o?AvB49Z{B|v7*e9W~3`G?rpGdswsSxZ0m1IgO8 zu-2`E>h0Zs!~e5x&R)3LOXHO1wJI0~=5%#p!O~Ok^u8zICpBSm&9@w4H`T*pRwbuMgp1Ivvj@)ij<>G&}Sy zIt}>4fEybKe_7246Ycp36@mH;e|TBQby#o&n#u6(Gd49F^~QzP&z6;fLa zUdMALYZjc_-qN-p(`iTJI(hO5t`CjFtHkh>fUN}b35RuP3=@MxCq*H zVOZXA875%^HLC*^&4sayto}QKZO$)BIS6^|(kGJ04f7gQ#J@{++e2!c`%BC=>&>V3Pk|=_$9^~^+v=1pyGb|w`F0;DW{`j?!%ZIpG1fe z$k+$xKrAI3%O;sXe9H>Oc8XtMYGl%!Ct9-Pu$4LOug_^KIFTqK)*7V>Blj-!C0HE6 zDSBYJEb>yK><6eE96?Tausb^;I`TkJK{Pg@9e8kR@f^xLZq&Ud!1RJ+0ArzV+a%a6 zS0=*;*ZsvgFT3cIXRKVKec#tgD(+@%IF5p_90-;{oB#yBHue@L*loJ%8v)$sdD7mU)YJfXQ$;ddd>aU$6jO^H0NyGtT5%IO(%H z?X;u*@L|i5qFR00Q}H=t%+kEI9i8W$4{yOTB)gx0wKst*kH9Jx(du%9{uEr60K*4~ zt$-k5ntT?C!o*N**5+we8DR6~&0@`(HSys7!Eff_d|n>aNZ%R`s>@TvG3ufA|2Gw!J)QpNshyyqY@;7X#b| zCaNfJ-;Lbp2<$l-s8Sg*vkg|#FIAvC7q-w4jt%Cyh^A^{5RpY75$w8KOrZrMqobHA*Kqo&r=hjI4UTQY z<`%%Y*42shVow@m+ca(L>0!N$smgVKzRc?^u0U%+>DE>b6$7-S^X>4?It$Um0Rd!? zn^T0<*$!Ux5c?&R4jzORC2-<|+fi9FsZN=i+V8Lb{7C#R zd{JxdFvg4sBYeOXg2T5x-Z3{j?^{W0+l9IMser_uj`yM=hPq!Y4KW`j4IVU1h}#wGzV82jA{qt8kF>r!~v9+^}ciIvNf{9 z_;e}r5HmD}ncO1=iFw^T%#>5QYR0fMaztyWL?euVIH5Xbn)nv97F!G;Bo0C(k%X3s zj)TaG6bkjf0g`*GO8g*q5ctfb6c#{y3n5Z1u_VZe@Hty+%UMXMne z&4UPH_y-438yJDRU=gzO7lJX)wB@pdxo(S>{llf59XDR_o^x(&Jm2HBc&*ujgb~W; zCqMbg+(fDOG77qrAI}B#Q>$kSW=JraSo&cq)y=fZ>z|QJI4${RasWrCU%);-`XSmd z7iks)>7nS5xwu9Yq`8>%4iuAGsC>RaG5lo|^Y7cyXFl)igJ2sr#fLus*4Kwxf5Zw) zlIL>*$_IxBI5}t)0Kpg_Jium%TeHaKmLeM_rp!Dc@8{|LCMd*P+F-YZa8~5NRUBJ+ zwy?bW$uu*#aUJPQdD0t!jIl*BPR_5CYl?$ej8^zeRCk(4G^Ekq8DFn)NJD(53_^@? z_!Lfm=SYv>==byNV|6{dnC6zuF|4`Dm4X3vn}a|baiUPJ)sSmzSwAs+;N`8Iiyqu} zZ(nA~MH~Ey@BhgM3Y`l-8xM?T{lP(GLk*OCAmkKC1WYC{2k3m-X(US0_elzJ%K&A- z$paFw7jy!17XW^uQ5v@}IarFjI{%RFqkmV|adQP{g#mhddkJVG1_lnkBbUny->*eH zwe*fk)ArfX+_;}Jsn10uQ4XK{=a!n9yaCD_HkjZj_re$xk(6<3F>~7Z*yQ^e!*;E^ z!`uJu_ZQ?BoO!j#yB&&WRAM=NbpL)>!;{EoLWqhFR?M5wvpH8HVcA(zXsSzPW0QzE z?RBGt1CoH!l;4gMbhTQQ^5B;iz58?f>#b~(la>J*E!}qS-aS8;%e*g&L&P!`wv~oo z8~VDLo@-iCf1&B`Iv$`wGsaw+4nEeojFd4dCOzJ$nr1TI2uT2I8gtMfGEb)uGm)5> zSE?0oo4tMLnS1*gWA}`2z2RzTd%3DeWfzOwUb+zOnP;GO*S%1I4^^!~sKi7U5&Gb^ zjYw7Da0@yN5Y&7)Nd&9C1ZX5t0E7-@6(~6QXmm=tfRSeTNjUyO(?w!~lgn3`QVPh{Gv_l?q%zpcXQ6BOvR6 z2cdLYTkNT!!7r?M!{6>A5G&bMIO!o_TJw>yfeQ$g!x;fFXyvAUJ*`4ojr3WwPM!^F zTDM2o4oA7Jo`w@WCz;?Bqb6oj)O;UmD(qfy?rYz{wACK!Sj%vNS&@bq%Ylg;_`G=# zt6b;@d<4Topw9>nr;`}mwcvOzES{Jspqdzi4$IKK1yL*}PCn1oV~-z-Cq}+Z*WTFM zYr@ROlV)WG2;;xv%;opybA|JxP|G-uEb`Y0_ePg26blH05K>B5mId9M@;yRD94R%P z%T72F5k!oZ9zX_MYT%K0Pnq%Xg=8E=lOSq7aXp*ZP~3GV5`vf@#TU3yfP%#k$SN!m zfYlCyM{O?@%#q=JJe@ghc#sM18td%R5%~2{@T&>m+MKP!1P?{rp_=!w#;J^Vh z`L638W)~c7Jjb63|-I&4I7Y(^+!Bubi?f-wvk;R478XdV<5lxAf%2Ga?J zjG$C(M#>QsMB=Gqpvk~@)kw@$83jzm1teA%w9}5j%0M|TEX#ooYH$|LNA~>Ha95lL zw6q}M7Hn-HoT?xm9fR`8E+E(mz`{7O5+Q1PMzAcMfG6|9 zKoQd2xYfeAISe=6cq970-j7$k>SBECV;?isHqS-RB>@_)Ve`cgyP1Y72Y{H7aD|@d z!J#-i#UAvre!|T8>(Ild8)$@GTSSx#zjWp&t{>>3n(BHN_LH0eHk$v( zu}2$U>uit!gse!&j|P~)d;hT1mp!@|ll_waMB-FQ_d+Q>+n7|!PmfzBf0Hf)Q7 z2?d+9TOhHj+kW&Q)YGN9d}}EbOH+&%*DXKFmAo|R=oS&?@k}y zF(&d^E+eIHlLVT^bGUuKM3Xp_G;SxL@l>MZb5T(N% z3nG^>-T)F#y+ow7c)qJfhQ1m5le?(Zes_2OthLfPt_;xG*_lemBtFHaAP01!l(Z#)!@(BL! z@BR;VJiG%*5@SwB2map=ybr(i{@;S6VhqlqrJRoTnW!*@AE)smjktj}a5D4nrflSl ztzz~cFzF3V5koQn86k;?nG^(9aHWQA&Miy;NRT~3l|ckPHC^X~;;?NwGBz2Ns{Lng z_;O|Q<{qmKT*Aq(0_vrFK`qSK#Y`%OsVP(#8C}1Sk{kx0M^-toXwf2MG9DFb9P^YE z_?c#ZGWr@WB%Q!mmPe_}&>D{GVtir(pS$K7Y~J!CWL<8I&i(uM;p)Hn4Du~`yzOmo zLrAgyM)5$M=o-!W3PCBtdb*iBja1|lbhHs*Y8Z!rAke5$2MHn*0k*-cb_m`Ak*QH- zK?*u08>BP}CQ1FJ;8RVp;k;{OaJ;`|$F94`olY&(*=wYDT)lusDQ84!Gqe6l|I(yM z!vGgwd@1^TN*E_y=-3z;9>V(dYw-tv_z`^WbDzTn7p%dC?ss5fa@^=*Dv~5X28nh9 z#B?0od+$$h!+-n-1_ln9&vV%v7B60m^{-uz*REd=Nf`Shk~|Hfi5ndmF|UO}24UzU zCVW2^usOrf&=4w>s$nRKPk1&pusb?Mk%VpADPyFLno$jn%qG`7h3Qa`D+!Rv3UEOY z!2sDj!}w?!OtzsG0amURnHCM{mtc1;Lp(JOos5DP+m$nSkqDmNefz5}`q14J^T#ba zXT5*&ab|ZpN&3 z62rte!~i5Q?!W)1_{O)sZ9p2CYzCFGZzk#HZ+{zq_NRYh49F_Q*h!BzQ6sZR%tAqy z(o_Y-Tn4#p27(JrRzfUVv=A*VMFhT|<`<6G4C)w(pr7*uVtAfH6qR7x9NDagxE8{q zQgBEEc8R5pFr+;PTu{U(F!)qU6cUWVG@!mL`1CqcTwoRet5VcI6U2~`%$Y^EvzONg@Z`-C6AaMfdxF>@s zV|B|dw%P+?#{^-vzJaiDH$w}kqlL)`-t~;?{{sNr3{8ZC`$*#MJ zDwg=j?|m3=f6H5py+NJ_G0VjGNIkPhlSZqULc#SPam2&7Y>NWI&=lJ;2&TF_NKPL0 z5TfssH)1O|4gorparL#L{)iT$xQ1+o!D511&>@Z#N)r`mHGyp2WnR9J$f?QO3g3F& zE`8o+j@4J5uw7G*dwjW3HvPZ@51gLOWwtx6lQCjdNpgsf{+&db34iFJhw$MKe;Bb; zxbT8k7)IH=c?`{tb+6 zIB}b29CryolTS&Z{{H?0=bn4^cXQd?JIdv$m~-YFUc)hCRMA9}I9|DOrCI$q-uP8) z-@e^^_KH`&0-w74a=iAnuSKm^LlDOJ^xu3M|9RsLXl?7j@X#oBKKdwDt~>*;dey6p z)NpL4o@7en2vm9&N1@3@kjh9*P$$LyHSKL%hoT*sI&S>1XG;bnr*&e^Neo~m94g^v z^~ZsLWofwC2tqiRswl*9h(a-oN%9I<0-N#!u7_Z9;-3838wPb>pTjovA6L}x&!bt% zFg1V+k3YWiQrFGg5yfH5nXu|GU31Jdl9!4!85Mib1B%fxXAUgEaqz%F6YQaA9+hrS zOimg@koxz3^IJDz^X9wo_~TC)n}WQGcfaRdm_L63{93IEDo*h3IE~_obYe-Do0UGD z>SgKsO(|)EV`#FENuM`AEn4-4Nr-`!Hc2KjXtOy1%d42kUl`b?j-ah011YIdHpA%X zxJeWhvvV;qR?@k=L$x1+m8pr>{`jGPeS-E#KGECG&I$vN1mK+OyYBjmw{-byt}7M_ z?;05%2`x*wCW`hfRA`+k>OmI@^tg2kpH?&t(@Y6~&B?vW8h?IjYRZI^$;eB+hekv( zg?}|-^ywD#guJCZetHB2Z4Sc%CNoBNv!U1cyzzds3LqoX=zl4VG;uu+ZkNF=jU?u< zgaa>QBM8dyvJPYtAPge37neXqjuygYV({M z=$hf7;UT588^w`K;m>LRy=UEwpa6<6MjxSVYIWC;45<{a#}I}grpgtRN|PymgE34_ zPGDkUVg>**b0_uM0a{c?cG_z$D?b8fNVo-+OpoTMp!qCG%#ewydm+pOyHvs;BL{I{ znQ(EO1c)OE-`A*4QDe}8aXqWGGQ512jf{^W*HT>k@b(}4CS7;iwrgJ;?c#|xY}jDB zf1Y*LSzD7t_R>nFI6x2trZ%UUnk9mnXd#UFH{%FtK?WJ+7O3eYNpdpiXcbbFud(V4 z?5qJ6`6YoSL}`(TI_5A8&|nTqMsaFFMQV%^eKurFo&klaCCCG^1qGn8s8$2`LCt(` zs$8OHp=`(UT-Sbwxp3NS?1XkpolTC@TefU51|fiddEkMqD>!E#)tW^zR@B;!(?d(e zX#<--BWkDf{mrtm{y8xd5sCGNu}1()>fk|eYjchU>NhPZHeJOiRNFWQmF*up|B#l4 zHS^vK#60a-Mk}8fk@P%;lgS7)Zmyp|*fBgiMnvx=Ek=S7=8&X8TWhE=*{exF$GMR7Y^LZzT0vQ^xpftLh zk~%aRNgo=@JUmhr`sb|&nJ*CY= zrqJ`$j-Y!;?T3a0NK6Ww_<>>o4Om;6tTJabpiy!KwGItfh`=Gjq6r7WID(}82hy}Q zGX|vA?fLxN3rTgJa>~SuW5b9B5jStyvPIl+$M)*MgM)uuE|-3q%jO)F=s1ca)f~d5 zRTUfEN<&V+*BFL5>iRbo!$;`mreP+HdI_2dOx4A)NY}G}=Ggl6&BWKgOB3F(1?ZLT zg_y&2Y{LMJG&NcO5Cr^)z^%kIpBf(>N3ku3u6YI12{a1B>2S5Vb^-M$oHP!MfyzB08qA!i^_TuMH$on-+Vd|B=^D zMzS%K>B&*$uxaR=4qD}AG^cRWK7wiXZrc4!HG@vQLGy_;-%pU#B?hU0G(wnukC>18 z1vHp}R=vqZFpfBhO>BX_8*7PJ5$s!=U=#HlI&@$ZLt_<`YgHul8QBkMdYch+&gLGo zgnJfAfbQ;Ym;N={D-&C#7Vul!@uyMJtXP zN)zZqQ~jhc3@|;6e{Ph2sv=~3#E>&1X=a4<-*S2+(<3&oY3QBG!lnnoJ?n#JgH!{l zD>@H_v1#%tvzRhX$|PYFBT@=}C=u2Y>Rk($JD8lPVR*zx5J@ORV4M(0#OOe!96&{s z?8={d(@i%O=r;QM2m^Rx=!EKr1zUfT1J)* zQb#nw6m%jlM3^k1by$xfBTgt;WD3c$sFZEQkw(6if!S3Aewj9lG5wG@Cn-b5Dn%q6 zs8~QHR_DBV9jj71;L;Z-12ohDNrKBRyKMY5uUYqLDfI_pnT*?x?I^7h8A}~SA!vkQ zWTI^8-)TUICZpl+>t~H=1<@q#8+8Y%G)UD%D%w?DO*E%hk7Jn+zv1k^!<_7-I9)qOwu(dK>SsoGy9I(dVZNj;H66GtiCdgiU}&ZT&| z!{Y`s)Nmu4JBHPRK_)&>FD5-AC!wbcMjNb?hJPC&WBRV=dhn=!k5fkmHDwQpK~i;- zfT_qJLxq*4oe?lJTEX1878Wi_K`*tkkI4yAcR2)p0D&w;2(=}3)`l_+fR!uFHa17J zKbaMJ-uCKAecf)Qbq{~_tJnW@e6sXj&&__Cb`()kN-~a& zCYCIAnp_%*VIn%F@!iICQn5~*L@BdKfgaNTjbPNVp{7&zXWLX6QKFH^Ugclyo~o6f^U;GEgYK(61lc*dgj@#3){0z+Ll%u#8{O|#SFq2(3WsY(nMLvds!5+Ipn;I`P-E18#k0sk4C7v zIb>}jhbBAaKxt}xrNN1TsZvNm|3C?mqy`kUXHt~9nTn87E)RU6B42bmEPF1U z&D*(${jZP!4GP21=C+k5aci=Ib(AnS7I^~2sUla@|5jWsiFVg>?|a$|H&cl4rTXW9Wwi*v&O)N+SOkEk92&KXOU{IREngH-Z&H; zLpzcZvPi{fDR!*r{JvV=-{1cv#Y|rG46t+OO7mF!Fzm?NUS3Kmd0O}fVO(pfz^(WC z7mRjaO+gs-BvB&$QK=aI?cx-p0VyF?SS`8J8EmJX;0e z)^fT0;*A3|XywXO0;rhhY}=+rl4*Ue(cL8Go2!PK0yp&lO#_>MtdZsrh;f=Hzut`v zbz7kxFYDW;waHVXw9wQynFAxCbMqc zx`g5+cri1;#*JxH2|w~Jld~re+2~*r$ulisj~7j^y!v3zvgZG1Gy@l_Pd?cx)4?Ot zhcvBho@Tx}V-uQ4a#pDXjH%?TYFGQ07B=UoLfh$4XWh|C6xX5wYKM3cH- zT}R~@zxlA0O!fc{NB`(!i|ht9gFc~igU%>L8Mh26*r~9OiAyoVkkqRRYruI18 zl)90jnJW}bG;u~^)R};#2`t(JkIKe`a2GRX&!eqrG0Sw)FaYffT-TapFlq2~i?(`T ze_B}0w1jG=`olc2fZC%{7)F|N!Gz$9O4m#)Iof@^wRJk0I9*z1I-;kpVx0j=-YE^c z0Lf={zrd4*0s8y<&C^g!RVdA?6oCe*jGNwVtdwJPnXTIdzYHBs8XPa8bNYUbnFwZ* zjD(TjSt(c0*4}P5qcGh_rlna!0;GoPu_VqDPdve1)HXn)tvqA#SP;~d){1L_l2WG) zYOy}OVbrX;!@n9e)e@%0E0o|oilg|?M650@O_qkKcG2@P%B=n)!qm-eZd0|OG+|{K zFqS}-==~KdXczStF$1hxl{S`=)nMFq#Y8Tb<3iZvG0$ulM@b<9j)nmef`6N=UJ4&O zESuMi_zVf4=+5gPIaG}^b zJa_JVxNb(#uApQXnvUR2WHO0$yn&PnF#vquAKSZkf4VIhw%~t-1c;a)L~%r0vJ+z5 zJP2y1X+W5DEWQDYHX((;G$aZ7*( z36TjMON<$xoosYX8%21bdB zpN%b;!4o_e7nq6UrUfmVs#fK|=txAi-1zuFm@xJXXo*EuZ2e3<=Wl1$Vk zo+OGIJNMjI8VS%pJM95aJ_Z=}E1|IM30qiDaikex>&<9@G!nD*dvoKaG@w#%Kuy^} zQ~SZ|89>^HFb(cZ?@p6OkJ6k$Q<;})Ac{?hxvnaj+R&={jwaL5BjcYCYB)WvK9S@@ z%3`t26exc6tKTaZ3i%%prqQx2-6&>h&L^0%b3>`UlSs2;nyv*?hp4$}cXzkg*}dV# zEdd&BWfl~?I1FXgr+PpcK*}1F4xm|LLi?sCU>!M}qJvV5An9KN_Nb?Z&3>!ON@Pf4 z!Jzb@Og?~tQTI;Nql5L<%ep@4gy5m`n_hoS2_;54+k8LGOQeGmJG!ot(hMY(#k-#C zM$D+OBIWp{DZ!%r08P5F3!*S>B5C>%6IwUz_Wlg_$n=R$kFfu-9MGLvTD)W#~^qq5#MzR|a!DKBvBTPFrH@k-004XG7v zEpI3e%TGv|iR_FcLMc^7xYRTY9F*q}kTEd?C4)@C2{qLcVI&82A|Gz56~v2L0ua%< z+qrXR=m;@J-N8IB%iK&6PPW}Zr|2QsP72MU(s0V(6Ig^KLABzWNE=lMA2_g2$8n8m z7EIKF@{^9|*;y~=WNp`Wgk?z$D^3!YkiV7YYqe$3E)6VEiB>bXz?t;#&x;q-!N8H@`yA|CYz;T;5N&XKO-za+r*vf zMb7|c@$~f@;6u4G_Q>SqBrGdKeU_D@mFcIS%VbTfHR`8JqLlJ!4tL-=1Ri0i)hZYs z8B)U|18ivI&`5i0{_>%*(MzS0@079nq66#pIEe47RBMlgK~%0*eNir##pJ{kpPDKQ zl_-%Uic^0kf`L(3I+xAPVE>PxXLSinNFl&%f(@|2`Y~*HcyEbuzJt1g;myu{@HI8b5f{)E%hG5iDn1GFivbi z+cYZhM49rcL<>mc9i+J-VgN1D*01C+$T&g}3T;^omFna}=dD@))B36RZr!@|TbUs6 zN|ivwdP*pfDKh5G5i)k7Pz6d=cz!`{O(vWBnB&@~Yn>#5$fTV~NF33k{)qPUX?GE$ z-+3IzvRs~^&400F%SO@L`^EB?zI4qN&vo9>-rlCEXJRZP+7htt`=>DtnMh6IKa%m& zt`K+7_wO8-I3aQElY#*nEoNKutuD7L5ypY6n{8%C(V712ERCmgX>vu9ClH$8+63*g zslW)epn4za_;u^nigoMmR%_O*p(K4;g^|)2fTxeRg`e$ybo<;~KHD=fIU#AsGh<&E zvmy014yzwHObRr*k(d+)vn;z=s%kFPmQtxY5Jzf0^^o>F&!TN~D9%L&pUDA02>M;I z)c3xnyZd1(oVntPE99n4SK>vl0t}6$EoSY+9+FZW)E1)_UiCer8^DcJADil&dQ}c7 z-?T2DynvW?bfdirwv(a0ZrwW7+dFO0o4rO&$Q|H4J?YRItgo-z#G1oc4j6fBTNH(A z+Enz&2;kue;`%{G5?I0(THD3+C+*U7jSqkHk9G))|8=QUnhb(SDcV)dY>5u8RKlbw zk5y&A7GJ++%|)M}@3!4}XTz@i-ys3e-JLRkp0m4_4E?CBrQ=ozqgkrGzFvxVaJ?ygjbGE zXwxUNLv4yhG;Uyh7qYY=XsQ}acHejr>83Lz5Au1>zyZGnK>C7q?(C=Q80LHLdq4Qk z|M#2M-#$4qacL0xr*ejlM9CnEbX7*lp-B4oe&Q2vjLnGtdKFMTpk&@lZ3F{MN@OzD(vsh6F251e3_uqByWjqSrwHeFtm~5` z>h4}?3T1Et>7-x)dXAlaohDIU(eW-PsFe%0U6fK#K2W5aj#4>Q9j7v+NrAiMB7baO%ARn<{~(+uAj-fK44o2ni-Qx3$J2l?tln z-e$UeY1&DZqIx7~sO)dSf=l(GLwB-Ot5#y?&RqnIQyVt));n39SUOo4ph4PJY9M2~ zdvh7@Y^D>+45vkxbqH5I*Pd3>MAVs^CPFAnSX7JgXp$&nh4<1*`UM{6h7Bnw)fVolKh8p$@bTpzOrr4%6ED+O}Gbm?ULyCjRigLJjEm4DK(jBc$51IF4AgQhtDnUQMmj3xrM@2Iyr>tz5ZM zuq8`;Uq*LK1wPr#Trt|GB`u`TjMvk+$`pp0T7Ac%4ZT^V7EETH_M2&?)wi$xg=p2T z6pt|MS0}<)#x8d_leDsr#X$`QNUMjVC?bp93d5jQD%T#QBR2lBFs0{_P8tRvTD5AG z?Ag58ax*P`rCRwe%k!)-ie(tZI*h1CPiW%iv5YmjPc=W3Q5+}jbJ}et__xBX;S(g4 zN$38e*X-_2Uu$vXJDwNiGC6Jw%P9MX&Yz+5uSWXWWFVEIFdzf0hdMip!+3$wNyPvr zC9`D<&N}O?^6>cNM}~$bAF{2CGdeV`BZA9RG zm7A_i>%V>(W2!rKLGyOb=ggX*WPVJ`-^BN|*>yDSVn(k4Vi{6PDKipkU?CDkxrsQE zKN}dRluXX>g`)vZE(Rd#?d_FYw{EpxxAt{USIf2cj1EoQE`-YoUo9*yVk!Cf*tkD7 zHuAv8=+NIF(Z;!hByKbh3E?hSscE6YCz$*`;h(Uw7XdT0YeBvbb7#B^Vj| znWrX#Xvg<&{{BFJ|4eK3U$xQl#(H5&)o~&Ze2O9olo_NIPEkhF#m-;`63CdCf@zu9 z22+?w71>VCO;q$W=lB_&r?0P%L;zkWbW-0bl|?;gV5A4UzNOx;96Zr=m+jtr@6F7c z)A{9&_Vy1PIP^@AsK8N)q6CgXl#;II8hd-WKkqTST-+Z^X?z7UcGKpcQ-^| zpFUw>+!s9q)QR=z9=2`^sjGF=KSyuaU|>?mt7eS#_4S$lyn}lWyjeqiX>@#Wv9Quk zA|`WZ_WVsDqSQ>n55p=Lo74$=ptZI0v*)c|{X-KKPQ}m*X7XPs3^41&nmFm{r=LD^ zWMJQi!mxaHnhIoD$Ff`*%P5TFL7k{aE!W*6BmUqemtFP{eP?seW@~-#`sXE*_oB1` zPBiKID+QvKFJJx`fKN6)TidhNdSiZ#TdCwjGEkep*VEHup5OZ3^(SnTr{hg8Nq{CI zk$=}+cUkKS1=hc3kFhJdcka~uQ=d{-Uwt*F&Rx{B;huZ$;TL-st2I{|ticOz)i={i z3~&sp?{jb%)vfy%^n|}eFVRc%61_w((M$9a(G&Rp0ZE7LbBVzx(EtDd07*qoM6N<$ Eg3cJ;BLDyZ literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/notg.png b/resources/assets/edenmod/textures/gui/event/notg.png new file mode 100644 index 0000000000000000000000000000000000000000..27893ef2ee92f7c1e0226e0c303b5fe27825be8c GIT binary patch literal 17619 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 literal 0 HcmV?d00001 diff --git a/resources/assets/edenmod/textures/gui/event/other.png b/resources/assets/edenmod/textures/gui/event/other.png new file mode 100644 index 0000000000000000000000000000000000000000..40f1502e022b85c944845b3644450d4024d21433 GIT binary patch literal 6056 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

UJBGoI{Py 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 z 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 Eg3cJ;BLDyZ literal 9214 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 literal 8852 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 W3|Ch#yR>@%0000{nb3NkJP76pRQl&y?g)m z8$bVd?ha!8U|Q5B4zvnAPyXO}l;=4O#yNTJclh_?l|IYe z^Xb!PD`PkI(MKOuPe1*%I&)_KN{)TW05`fGJ9WxCb>>X1hztnu2tBUfd-`mNzx~et z@OSSYme~&nT0fGP)x(V_i0Zl~-_sOF0U2XRE5-lL@`|duCJ+v*tSZ7k+`pAll;#DM zMfHUC^zU{W(Z`=(8$bQizj!A3@gF}C96HoCr|sw7C{ym2wXYZe;#w&(|Ms8#$T2Sn z-*xfo=KbqiL&~a3S4CB?EOe9~co#-V^5>_2?T@}R%LpH~r|e(<+z)(PGYCIc8uKm> z1oky0SpkAqzUNUR3MlY2)wLnd(-V~{#LTB|IdGZ z<`e55`^VpZpI3W7Jj}A6^*!Afr@5((sd2*R+6}$fX(|vBLS*BAAFOL?kJFsetei*>Tq6j) zpZNJ-`NaRSADLj^Fn~M7zxs1O@V>#g_`}WKxG1YyW=u+Z zR2kJ@?#3T)M&9=-rRH{qDb8%Al=47?DDWr>0zTDvKL`Q_hytI#z*zX5FhEV4{V{2+ zsS(QW-41~{iejoNOl|5Q&|2$&vck|f%}7&Ordg?rsxoy=V7NNTbG6iMd5t*uiJ$(Z zkMBDscwMg18@Zmke~q{L<@Nsi(!4ZPU8|z3{5T5yI1KzG%l)nX*jE~oThm5At;?FK zgNx1XVmJN~t<_wT6(v*%h>vTyDZMjHs=78G`<0*kTMwN% zbEXCp&^}q%oqe?`qnP+vQShk`e2@C0l=7nF&Cd%tmA9!of4LYQ&JqFG0w??a!5 z5b=S}x*AkanvXvXlYGJmxK>@)wACN+Ykdvl(5IF8Hlz$?MY+cgU^XIUh}w;a%DSd3 zFI8O|A1|A4`qWoM+k=WCUqM2!G2v;g^0G8gNo7_2I1&9fr->TC2Dwzm02s;%RC0Wk*yU-5#J3JPAAS4Q;#yHLEN-KN!r)fW|ea8UUjm^VG7PLIq zpv7)XX}j#U$7R?kGls#S8)yZTA!MJrUdPcVGto zZkYvtclsSamz82Y509ZXfdETdvnrWu`BYXRjgpjK58fW7jC1B^$Uw5ipPs~Jl?MO9T(RaZg? z27ZWIv3MB(hsI-h|F!Kgi|({2De?vN>onQh;Gehp35#?mCct#~OfV`Vj9T+w@HuIk zvt%*GtBonWye$9yumASvUVcECJNOc2<@M>ZzKTd^ytZx z{^`@FtAF@|-}xtpm)f_l%(v@iBh)zAaxy(WeP9Os{L)&FKL6D#Y>Z(!;K!XlCaT5w zR~OoJ&(WpH$sHvHGeK6uh0EFXgp|Pb2T9J71coG|e^4vCT)$LxQP?o7+8wf~s zWT{21*r$U_UH+^Wu54EAM(o9*_t--2{TK8Sf*&|_im7pzf9Rh!;&6E| z&JfX4*!+uEw(06-pO)vEOqAy@Z&Q+&)P!N^X?x-scPFhh1@ICAcnUbd@*NgGta&gK zenwJA=)=$psN0HYp%c@}T$5JjTeQ$=@b7UA=XM@iYV-RUe`rM1X+_kCd%rH=L%;{)pyU4Yu5$xwyf`9*E*Zv_$BHmq8S$jM)Y6!Qu6g0t_6@{9R2# zzSg+pb1A1BuPp&Ukzq-IVAF6kq9>obL_5QZ?mRL__uPI9K|_E!%d)DqR%(=03ibq; z51-j-L@c?=qN;08{{RvF0TNB=Ca--V0g%dt?{%f$(~Lu}HZ@K^!m8}zInn*ndY{&J zMtt(&5r8QWnM2f2mSIM4i63|`pxce!n67LNXrnjc5HNJVAd1SW0m~pYkh_wNLSXqD z{V~6HbCB@+z&6H|^rl&QD`)Q_5#Z~*XyYZ8|3*OZzN77MEJ!k z*Jzwq)M@y1U~!QN1Vhm+W+09v5{r3Q`OZVYX-<&~$S1sFLc!3p;2%o}mMoqo-xKi; z<{FO23{o{49f>YR9s0tB9<45K(ZQufib4}RaA;Iiba`XQc*0VrMeSy+vZAURk-u0b z>K-EcG^@TdXTG%=;DM)E6soE=Z>x<__z%`R6Q-&d5(Y9ihln4$gg!lY@g@4)`5jVT zNL7*0L&wH+;@)Gs;`mOq1G0rEhOds(UsSj*kin@07J_TO_T+andV;fqpa#GwP!$?@ z1in?IyqGSp59#pA(oC*_xQA=oV_NLQY?mO532AD9@98|zC%^zJ_uqe04e@=!0CusO zwLh_I1!Ca~1{Kn}u;6yBZ*I_&FZHR>oF`A!l!YOC2oK!}D}1*^g{{EG*dTG2<^?7R z04kZ94M*4#d%c2Le;XOw0)=TR{2B8>s zF61>@d*6n?tv~R9`IcsYM;|5q;nQcTU;OXB|2{v^?@lGBTYpqA0ozRpq9GQu zzLSyB9Ri%rnY?vH+E-MWiV#S0FfkTHF))NF<)?&I><;?k8d~O<_4oHKjvD$tc@>Pw znpEI%Od&4|GUT(GC@P5*@->ZN287YNu`}jtAZrcxFyD^fj(?vzb*larHv&)cJp_LJ zKpgm;x;C}Naad0SxZxZ;Qj#H@3)G8~Zjd+tHZT$>3Os)o@!fKIoxf~28P}|8qU~W$ zFK&$J<;^i0ZO%Bn-m&CsD@707zDl~z`ToE#b(z!Qr51xgSQ06eppdg2u569?{&8)j zsSn0^x*wpJn=Sz+OX&iMmF}PTX``Re&LCxjk5k3UibKFf2|XW@f*vMAc~Vn*(I@R` zs*3BUb4@-5hGl8!i|02PTp9rpgy_Z}YeRP&>e9O(JbYcU;JR=L@44$J8+cE?uu1KP zN5_w^(y=24`2Jkr2=;_hLU5=8q>95pUFgI}4WqSmu=FdBey~aOap)Qgv#C*#=x6=2$>u&n)@3@EVyW=Pam1Y;G zBMKfZ%%Bx*58O8`Y?8Q&$)<5L%@UL9lxTOI8Y84;J3z__D9J&nsMTuQaPTxdJWEMkpC=H!#u;HW(5;34JYm2-wRAco#TjRB%+ip8Xw;4DM0^}e~Yc}r>?x6GNnF*}% zhwC0cI?u#@;qo@UaHYrg#L8lezWc;cHtvAnHNt@3?fZ)U^r_2q{OBSrbz{jGW{o9j zaSt9=rDR|gq=-%DebA-WraT2FBf06@m+kqC{du*9g#)~|s-Y}yV*M|IBmrf4v z;lh;xeewLdMEY#~AczXE2TTUnt`);Bk>5d8aZV$uR&Z|+_lh`{fRypen?nv_`JVRD zytwK6f75T^5&IoT9lK~`IJ-u|zT!@yRu8p&vlc!FfWA&9F9`XmC$G?@wIL^Iy69jd z^k{7-qd$A*8Z*(-LYs;A=g+Rw)0YN>d=iN57p@KI5B}msI(DE--B!rSCXV>H&SJa4 zrDwBY<=UpEBd~-;d>9T_3ywS*d>S_j?#je!X=G>LFZdB{~ZgA z5NJ(Tw+8$=0f|)IALrg?FMaBxzxnuO@bAsc3)nXd0MQP^uZj(A^b%64;t(rBzzF@u zVPNa?Zv2|a6n@*?D^$@Yed@_;tk>~55YfwX0sZv{4$$ofJ51cWkIWHr5aF*QF%&Z8 z-dj3!WVyu>14SSBFY;0S6EivqQSLw=5Fhmk$O1y1AtVDN8M1}(Z zNZ`@VC}npMM294UK`XJ1l6=w>g#Mbl<(pX{bkiBYEkLUXCOwT;h;`YO2v-@ zeDHfPDX@Ng4#Yol3UR+c17S13UHpuPoC6gZ(@e{i*o?)9*QxB|(#*EnXGUGh)&yJ0q3aNm=|dutefryI34hnOWWZl zU|;L&BO&93D?1W;eU(yjubkkl96?~wz`j7hq2izYw0V!1f$Oqnb ztjf(-0^f@cF1Dcp6i(sZ8=M+?imQX+9)h?T`Us#n)Fy|@Yl+=5mpQz9ISAM02-Lzz zoC=QjAz7rVX%nZK-8~0BDb5JSThWYP$Mh&@y8#3`GCLuB~SYgD^m4*J615bu50kswWM^%uool&6or_m z-9tzi3n!lgL;PL-?K*_arjaY#K?E)#WCYyJqOPcyqZF)Qf^%J=l_G$HIq%RAEp!{= zWmriB3E;An;VHnK1z5y+h{l+}^HC*w`v3ma7uHXDbJ+V=>@E1M!~leDnrF|REq~;D zzWr(x_y)Nip+*i}L_5R8ihU>QZ3VEkxDhzQYKA^Dg$vfW1qQ)F){u+6x%X;YM#e;) ziS}V}HL~q9#K|eh7=~@4P)iUo%IAa)>;&!}W(?O80`&vri)(XQ7fa#V;WG+i^Il{=ta{@B{tt0zj^g0Lx||!(d_0 z)YtSgVDvY;gza6AoUQ3BQo!injkDrsC^b#r^Gv%DDj<0PRaWMk%mkBuf3_40*}hKs z&UW{B#kD8VQ$ZDQQ;CS;(q}&(p<68J35ej11a-LaLs_zT2U8-z0~b;BzRhE+MS5_# znuz{7j?w0>_}7np@{3>CZ+!yygAvHfZOp0nzx5a5(EG82Z)~f-n&{cksrSvZ5V?M!W&GgliXzlMO2#h8)VpfbB_B*30NJxNd87i-@z04ijjK6Oe(JI^jvN`Jnt=`bwk zBgawnlsw#rP#(I9X z8HDo$_~q==O_{*iCK6jH>HO7A0}mq2i$9Ko>gS$)zW;ga_rJ*i*IRepbysxm+_~(> zzUS@#$oKU}^Sm(H)1J$$nL@Qw-7UR-WYf)z>&JQioH1-c8QcC_;`X9K%#6`DsT+JX z;YL&vqaUGlGZDAIb*^p?Kzsp`&~AR>e$YEFT-f?^+mU`>sDXVW0cO{2x6L2Bb!qA2 zoksLPrxBUDHd?xZ>{-@A$8uzI0V65&uoXSlZs6C=(ARK1q7;ix)W{9&$RyZg;}o2Z zj&3Exgf6UYaSb9q)2S!Ko|IBSmQ|m+dad_}`)Jw+YrimnI&|nz!}GEq)~fy?BK5Aa zs#~DvLaU*UF3+>|z3XsVL-3WPsRV>vWRO2%`mnQ}0L_GdcDWI=Wn+ah+`oN+1JAU)bbDueNio7#tZoU-Q4{jg>BAz#T zPZ$KhR@ZWBpv$p^JL81QPqsIkW%UDy?tIyP6RBzhkS z7~GVpfhJP&C$x=~MiDcgU{CGdWo+gy|GXz~1MdJ0A7`%t=0chHIFrB-?uqdTC({{B za_MM9?Pfr$%MqT$l3bz=~q+(>QN%~_(=)Yt*(-}{|p&) zP}%#!*DFb04+Cf-<_bXC^(?DUd4O$(i-Vx3RK_nw+Q zti1-FgM9a{>)pWD!;6eH3U|HG5|_OZOA358@(01MQK%^lH8mSP&9wuX>jWHBvL1?Q zG(44Mb$?J~xBcGlUD`PX5b+d|oMV8@JxBeec`JnD54RDznIOxq zY90H3LbPc@i2Lr|XM09Yf1X*kbB zZg78)eK|?WU-qwe=0^WHH2n71N8NE;yVa5Wn-eH#ej|;2{~2Fg_}EVX*emapSz!$#z{$8 zCOrqS4cAjSXciJj+AHhogU>#B?X#`L&arMgI2=dbTkzbZ=wYSQN?p@!s8vD9F_1Uh2_kP~URP!mYkmt3=v(o>APBhcR^_ zW6V)MsS9wr8XE$}nE34_QpkNect{#WPs+i7WtCau@U>rZb z@}GKI{c_;@ZJy0z42~?HDrtbgA`}m+*jU2DAlag>w>_;*fQee31W3k7VH%AvK6s$h z1h-@18hFSgDJG&91dL;ez~S$(5u8MTKGwBIs|P}Aw>1-a*4l^2EGk32e$M*ZS?E~W zhe)@TLzV#`DeBVD)hh+P?b})`Rgz>{eRMs%z||o*LeAy}fXU#S*m#uJS9NV+U8eVR>4RwFRDFpLrEs;1j(uim{#>6p^B57JNf#m(@7cBh- z@~ot8OH;RvuAaD#yoRd|m7=u`$^CD{K7YlLM^Pw2so911VdTuL4eE$L9>bnN!b;83 z1Xhkjj}7(+#P;!3*R_}Bl~+{;qi9sGpV8)a$}eiWbi zYNfzyF#_4fx$mCU?>E}~ub$S+zUT3jE)b#F3|K$Hh{M-xO`beBT)HXj3L|uM7z)?LzB+eUI+>v*2JsYg+V`nQdt+kDTf0og({I6Q8r-$*+G

UJBGoI{Py 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 diff --git a/resources/assets/edenmod/textures/gui/icons/tna.png b/resources/assets/edenmod/textures/gui/icons/tna.png index c1fcc84ef27ec59ddcae390853a62e3e3eafb064..d748b7a2a8b3b3b3470a5c48f5451e5fddf9e090 100644 GIT binary patch literal 14139 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 z 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 diff --git a/src/tel/eden/mod/EdenModClient.java b/src/tel/eden/mod/EdenModClient.java index 281351d..1dbe8d5 100644 --- a/src/tel/eden/mod/EdenModClient.java +++ b/src/tel/eden/mod/EdenModClient.java @@ -43,6 +43,7 @@ import tel.eden.mod.gui.BridgeConfigScreen; import tel.eden.mod.gui.CommandAliasScreen; import tel.eden.mod.gui.CommandKeybindScreen; +import tel.eden.mod.gui.LongEventScreen; import tel.eden.mod.gui.PartyCreateScreen; import tel.eden.mod.gui.PartyListScreen; import tel.eden.mod.gui.PartyManageScreen; @@ -51,6 +52,7 @@ import tel.eden.mod.item.ItemStringDetector; import tel.eden.mod.net.AllyActivityEntry; import tel.eden.mod.net.BridgeWebSocketClient; +import tel.eden.mod.net.LongEventState; import tel.eden.mod.net.PartyInfo; import tel.eden.mod.net.GiveawayCandidate; import tel.eden.mod.net.MailEntry; @@ -168,6 +170,8 @@ public final class EdenModClient implements ClientModInitializer { private final java.util.concurrent.atomic.AtomicInteger partyCommandGeneration = new java.util.concurrent.atomic.AtomicInteger(); private final java.util.concurrent.atomic.AtomicLong allyViewRequestId = new java.util.concurrent.atomic.AtomicLong(); private final java.util.concurrent.atomic.AtomicLong allyViewPendingId = new java.util.concurrent.atomic.AtomicLong(); + private final java.util.concurrent.atomic.AtomicLong eventRewardsRequestId = new java.util.concurrent.atomic.AtomicLong(); + private final java.util.concurrent.atomic.AtomicLong eventRewardsPendingId = new java.util.concurrent.atomic.AtomicLong(); // Deterministic per-occurrence index so rapid identical bank events stay distinct. // Short window: only the current burst counts, so stale earlier deposits can't // make different clients assign divergent seqs (which duplicated Discord posts). @@ -270,6 +274,8 @@ public boolean onWynncraft() { private volatile int giveawayStorageAspects; private volatile String giveawayError; private final java.util.concurrent.atomic.AtomicInteger giveawayGeneration = new java.util.concurrent.atomic.AtomicInteger(); + private volatile LongEventState knownLongEventState; + private final java.util.concurrent.atomic.AtomicInteger longEventGeneration = new java.util.concurrent.atomic.AtomicInteger(); // GitHub update check: run once per game session; the prompt offers a one-click // download (applied on game close) and a link to the release page. private final UpdateChecker updateChecker = new UpdateChecker(); @@ -506,6 +512,16 @@ public int giveawayGeneration() { return giveawayGeneration.get(); } + /** Latest long-event mission state from the backend, or {@code null} before first reply. */ + public LongEventState knownLongEventState() { + return knownLongEventState; + } + + /** Bumped on every long-event state snapshot; 0 means none has arrived yet. */ + public int longEventGeneration() { + return longEventGeneration.get(); + } + /** The guild reward helper (rank lookups + gifting). */ public GuildRewards guildRewards() { return guildRewards; @@ -706,6 +722,7 @@ public void release() { tel.eden.mod.war.radiance.RadianceTracker.onJoin(); tel.eden.mod.war.eco.TerritoryGuideController.reset(); guildAllyManager.requestCancel(); + eventRewardsPendingId.set(0); // Connect if applicable; the backend reports link/membership standing via // authOk (handleAuthStatus), which drives any "please link" prompt. evaluateGating(client); @@ -742,7 +759,7 @@ public void release() { }).then(ClientCommandManager.literal("download").executes(ctx -> { updateDownload(ctx.getSource()); return 1; - }))).then(buildGiftCommand()).then(buildDeductCommand()).then(buildAllyCommand()).then(ClientCommandManager.literal("dump").then(ClientCommandManager.argument("member", StringArgumentType.word()).suggests(this::suggestMembers).executes(ctx -> dumpEmeralds(ctx.getSource(), StringArgumentType.getString(ctx, "member"))))).then(ClientCommandManager.literal("wars").executes(ctx -> { + }))).then(buildGiftCommand()).then(buildDeductCommand()).then(buildAllyCommand()).then(buildEventCommand()).then(ClientCommandManager.literal("dump").then(ClientCommandManager.argument("member", StringArgumentType.word()).suggests(this::suggestMembers).executes(ctx -> dumpEmeralds(ctx.getSource(), StringArgumentType.getString(ctx, "member"))))).then(ClientCommandManager.literal("wars").executes(ctx -> { requestWarCounts(ctx.getSource(), 7); return 1; }).then(ClientCommandManager.argument("days", com.mojang.brigadier.arguments.IntegerArgumentType.integer(1, 365)).executes(ctx -> { @@ -1250,6 +1267,18 @@ public void onPillMessage(String label, String content, String colorHex, boolean } } Integer finalColorRgb = colorRgb; + if ("EVENT".equals(label)) { + display(() -> { + String self = playerName(); + boolean isOwn = isOwnEventAnnouncement(content, self); + if (!isOwn && !config.eventAnnouncements) { + return null; + } + String finalContent = isOwn ? formatOwnEventAnnouncement(content, self) : content; + return DiscordChatFormatter.pill(label, finalContent, finalColorRgb, bold); + }); + return; + } display(() -> DiscordChatFormatter.pill(label, content, finalColorRgb, bold)); } @@ -1298,6 +1327,29 @@ public void onAllyActivity(java.util.List entries) { display(() -> DiscordChatFormatter.allyActivity(entries, canManage)); } + @Override + public void onLongEventState(LongEventState state, boolean hasSnapshot) { + if (state.error() != null && !state.error().isEmpty()) { + display(() -> DiscordChatFormatter.systemLine(state.error(), ChatFormatting.RED)); + } + if (hasSnapshot || knownLongEventState == null) { + knownLongEventState = state; + longEventGeneration.incrementAndGet(); + } + } + + @Override + public void onLongEventRewards(int pendingLe, String error) { + if (eventRewardsPendingId.getAndSet(0) == 0) { + return; + } + if (error != null && !error.isEmpty()) { + display(() -> Component.literal("Could not fetch event rewards").withStyle(ChatFormatting.RED)); + return; + } + display(() -> DiscordChatFormatter.systemLine("Pending event rewards: " + pendingLe + " LE", ChatFormatting.GOLD)); + } + @Override public void onAuthStatus(boolean linked, boolean member, String guildRank, String discordRank) { handleAuthStatus(linked, member, guildRank, discordRank); @@ -1625,6 +1677,39 @@ private void requestAllyView(FabricClientCommandSource source) { }, 5, TimeUnit.SECONDS); } + private LiteralArgumentBuilder buildEventCommand() { + return ClientCommandManager.literal("event").executes(ctx -> openLongEventGui(ctx.getSource())).then(ClientCommandManager.literal("rewards").executes(ctx -> { + requestEventRewards(ctx.getSource()); + return 1; + })); + } + + private int openLongEventGui(FabricClientCommandSource source) { + BridgeWebSocketClient current = socket; + if (current != null) { + current.sendLongEventStateRequest(); + } + Minecraft mc = Minecraft.getInstance(); + mc.execute(() -> mc.setScreen(new LongEventScreen(mc.screen, this))); + return 1; + } + + private void requestEventRewards(FabricClientCommandSource source) { + BridgeWebSocketClient current = socket; + if (current == null || !current.isConnected()) { + source.sendFeedback(Component.literal("Could not fetch event rewards").withStyle(ChatFormatting.RED)); + return; + } + long id = eventRewardsRequestId.incrementAndGet(); + eventRewardsPendingId.set(id); + current.sendLongEventRewardsRequest(); + partyCommandExecutor.schedule(() -> { + if (eventRewardsPendingId.compareAndSet(id, 0)) { + display(() -> Component.literal("Could not fetch event rewards").withStyle(ChatFormatting.RED)); + } + }, 5, TimeUnit.SECONDS); + } + private CompletableFuture suggestMembers(CommandContext context, SuggestionsBuilder builder) { String remaining = builder.getRemaining().toLowerCase(Locale.ROOT); for (String name : guildRewards.memberNames()) { @@ -1744,6 +1829,24 @@ private static boolean isOwnGameResult(String content) { return name != null && content.contains(name); } + public static boolean isOwnEventAnnouncement(String content, String self) { + if (content == null || self == null || self.isBlank()) { + return false; + } + String pattern = "^\\S+\\s+" + java.util.regex.Pattern.quote(self) + "\\s+(completed|unlocked)\\b"; + return java.util.regex.Pattern.compile(pattern, java.util.regex.Pattern.CASE_INSENSITIVE).matcher(content).find(); + } + + public static String formatOwnEventAnnouncement(String content, String self) { + if (content == null || self == null || self.isBlank()) { + return content; + } + String regexCompleted = "(?i)(\\A\\S+\\s+)" + java.util.regex.Pattern.quote(self) + "\\s+completed\\b"; + String replaced = content.replaceFirst(regexCompleted, "$1You've completed"); + String regexUnlocked = "(?i)(\\A\\S+\\s+)" + java.util.regex.Pattern.quote(self) + "\\s+unlocked\\b"; + return replaced.replaceFirst(regexUnlocked, "$1You've unlocked"); + } + private int openOverviewGui(FabricClientCommandSource source) { Minecraft mc = Minecraft.getInstance(); mc.execute(this::openMenuGui); @@ -2442,7 +2545,7 @@ private int handleReplyCommand(String messageId) { private record HelpEntry(String command, String description) { } - private static final List HELP_ENTRIES = List.of(new HelpEntry("/eden config", "open the config screen"), new HelpEntry("/eden online", "who's connected to the bridge"), new HelpEntry("/eden mail ", "leave a member a message for their next login"), new HelpEntry("/eden cf", "flip a coin"), new HelpEntry("/eden diceroll", "roll a die"), new HelpEntry("/eden wars [days]", "guild war counts (same as Discord)"), new HelpEntry("/eden emojis", "open the chat emote picker"), new HelpEntry("/eden party", "list open parties (click to join)"), new HelpEntry("/eden party create [note]", "open a raid party"), new HelpEntry("/eden party join ", "join a party"), new HelpEntry("/eden party leave [id]", "leave your party"), new HelpEntry("/eden party disband", "disband your hosted party"), new HelpEntry("/eden anni [note]", "open an Annihilation party (2-10)"), new HelpEntry("/eden command alias", "open the command alias editor"), new HelpEntry("/eden command keybind", "open the command keybind editor"), new HelpEntry("/eden update", "check for a pending update"), new HelpEntry("/eden update download", "download the update now (applies on exit)"), new HelpEntry("/eden aspects pending", "members' pending aspects β€” Chiefs only"), new HelpEntry("/eden gift ", "gift guild rewards β€” Chiefs only"), new HelpEntry("/eden dump ", "gift all guild-bank emeralds to a member β€” Chiefs only"), new HelpEntry("/eden deduct ", "deduct a payout from pending rewards β€” Chiefs only"), new HelpEntry("/eden ally view", "view guild ally activity (most inactive to active)"), new HelpEntry("/eden ally add ", "add a guild ally β€” Strategist+ only"), new HelpEntry("/eden ally remove ", "remove a guild ally β€” Strategist+ only"), new HelpEntry("/eden rewards", "check your pending aspects/emeralds and opt-out status"), new HelpEntry("/eden aspects optout [true|false]", "opt out of or into receiving aspects"), new HelpEntry("/eden emeralds optout [true|false]", "opt out of or into receiving emeralds"), new HelpEntry("/eden help", "this help screen")); + private static final List HELP_ENTRIES = List.of(new HelpEntry("/eden config", "open the config screen"), new HelpEntry("/eden online", "who's connected to the bridge"), new HelpEntry("/eden mail ", "leave a member a message for their next login"), new HelpEntry("/eden cf", "flip a coin"), new HelpEntry("/eden diceroll", "roll a die"), new HelpEntry("/eden wars [days]", "guild war counts (same as Discord)"), new HelpEntry("/eden emojis", "open the chat emote picker"), new HelpEntry("/eden event", "open the event missions screen"), new HelpEntry("/eden event rewards", "check your pending event LE"), new HelpEntry("/eden party", "list open parties (click to join)"), new HelpEntry("/eden party create [note]", "open a raid party"), new HelpEntry("/eden party join ", "join a party"), new HelpEntry("/eden party leave [id]", "leave your party"), new HelpEntry("/eden party disband", "disband your hosted party"), new HelpEntry("/eden anni [note]", "open an Annihilation party (2-10)"), new HelpEntry("/eden command alias", "open the command alias editor"), new HelpEntry("/eden command keybind", "open the command keybind editor"), new HelpEntry("/eden update", "check for a pending update"), new HelpEntry("/eden update download", "download the update now (applies on exit)"), new HelpEntry("/eden aspects pending", "members' pending aspects β€” Chiefs only"), new HelpEntry("/eden gift ", "gift guild rewards β€” Chiefs only"), new HelpEntry("/eden dump ", "gift all guild-bank emeralds to a member β€” Chiefs only"), new HelpEntry("/eden deduct ", "deduct a payout from pending rewards β€” Chiefs only"), new HelpEntry("/eden ally view", "view guild ally activity (most inactive to active)"), new HelpEntry("/eden ally add ", "add a guild ally β€” Strategist+ only"), new HelpEntry("/eden ally remove ", "remove a guild ally β€” Strategist+ only"), new HelpEntry("/eden rewards", "check your pending aspects/emeralds and opt-out status"), new HelpEntry("/eden aspects optout [true|false]", "opt out of or into receiving aspects"), new HelpEntry("/eden emeralds optout [true|false]", "opt out of or into receiving emeralds"), new HelpEntry("/eden help", "this help screen")); private static final class TrackedCommandKeybind { private final String input; @@ -2637,6 +2740,9 @@ private synchronized void disconnect() { tel.eden.mod.war.eco.TerritoryGuideController.reset(); guildAllyManager.requestCancel(); territoryDefendedTracker.clear(); + eventRewardsPendingId.set(0); + knownLongEventState = null; + longEventGeneration.set(0); // Before the socket goes: an outstanding deduct must not outlive the session that // made it, or it resurfaces at the next connect naming a player from another // server β€” or, after an account switch, another guild. @@ -2986,7 +3092,7 @@ private void display(java.util.function.Supplier builder, boolean via client.execute(() -> { if (client.player != null) { Component component = builder.get(); - if (!viaChatTab || !WynntilsChatBridge.sendToTab(component)) { + if (component != null && (!viaChatTab || !WynntilsChatBridge.sendToTab(component))) { client.player.displayClientMessage(component, false); } } diff --git a/src/tel/eden/mod/config/BridgeConfig.java b/src/tel/eden/mod/config/BridgeConfig.java index f4c9d23..ee9d618 100644 --- a/src/tel/eden/mod/config/BridgeConfig.java +++ b/src/tel/eden/mod/config/BridgeConfig.java @@ -65,6 +65,12 @@ private static Path resolveConfigPath() { */ public boolean partyAnnounce = true; + /** + * Whether other members' event announcements (Weekly, Master) are displayed in chat. + * When false, only your own event completions are shown. On by default. + */ + public boolean eventAnnouncements = true; + public enum GameDisplayMode { ALL("Shown (All)"), NONE("Hidden (All)"), REACTIONS("Show Only Reactions"); diff --git a/src/tel/eden/mod/gui/BridgeConfigScreen.java b/src/tel/eden/mod/gui/BridgeConfigScreen.java index 7eff181..a38251e 100644 --- a/src/tel/eden/mod/gui/BridgeConfigScreen.java +++ b/src/tel/eden/mod/gui/BridgeConfigScreen.java @@ -118,6 +118,7 @@ protected void init() { addToggleRow(Category.GENERAL, "My login/logout messages", () -> config.announceSelfPresence, v -> config.announceSelfPresence = v, "On", "Off", true); addToggleRow(Category.GENERAL, "Mail sound", () -> config.mailSound, v -> config.mailSound = v, "On", "Off", true); addToggleRow(Category.GENERAL, "Party feed", () -> config.partyAnnounce, v -> config.partyAnnounce = v, "On", "Off", true); + addToggleRow(Category.GENERAL, "Event announcements", () -> config.eventAnnouncements, v -> config.eventAnnouncements = v, "On", "Off", true); addToggleRow(Category.GENERAL, "Auto /stream on join", () -> config.autoStream, v -> config.autoStream = v, "On", "Off", false); addToggleRow(Category.GENERAL, "Click shouts to reply", () -> config.shoutsClickable, v -> config.shoutsClickable = v, "On", "Off", true); addToggleRow(Category.GENERAL, "Click-to-congratulate", () -> config.clickToCongratulate, v -> config.clickToCongratulate = v, "On", "Off", false); diff --git a/src/tel/eden/mod/gui/EdenMenuScreen.java b/src/tel/eden/mod/gui/EdenMenuScreen.java index 4da206e..857c391 100644 --- a/src/tel/eden/mod/gui/EdenMenuScreen.java +++ b/src/tel/eden/mod/gui/EdenMenuScreen.java @@ -17,7 +17,7 @@ public class EdenMenuScreen extends Screen { private static final int BASE_CONTENT_WIDTH = 200; private static final int BUTTON_HEIGHT = 20; private static final int BUTTON_SPACING = 24; - private static final int BUTTON_COUNT = 7; + private static final int BUTTON_COUNT = 8; private static final int LOGO_WIDTH = 128; private static final int LOGO_GAP = 20; private static final int CONTENT_MARGIN = 12; @@ -55,9 +55,17 @@ protected void init() { this.minecraft.setScreen(BridgeConfigScreen.create(this, EdenModClient.instance())); }).bounds(metrics.buttonX, metrics.startY, metrics.buttonWidth, metrics.buttonHeight).build()); + this.addRenderableWidget(Button.builder(Component.literal("Event"), button -> { + EdenModClient mod = EdenModClient.instance(); + if (mod != null && mod.socket() != null && mod.socket().isConnected()) { + mod.socket().sendLongEventStateRequest(); + } + this.minecraft.setScreen(new LongEventScreen(this, mod)); + }).bounds(metrics.buttonX, metrics.startY + metrics.buttonPitch, metrics.buttonWidth, metrics.buttonHeight).build()); + this.addRenderableWidget(Button.builder(Component.literal("Create Party"), button -> { this.minecraft.setScreen(new PartyCreateScreen(this, EdenModClient.instance())); - }).bounds(metrics.buttonX, metrics.startY + metrics.buttonPitch, metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 2), metrics.buttonWidth, metrics.buttonHeight).build()); this.addRenderableWidget(Button.builder(Component.literal("Manage Party"), button -> { String ign = EdenModClient.instance().playerName(); @@ -73,23 +81,23 @@ protected void init() { } else { this.minecraft.player.displayClientMessage(Component.literal("You are not hosting a party!").withStyle(net.minecraft.ChatFormatting.RED), false); } - }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 2), metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 3), metrics.buttonWidth, metrics.buttonHeight).build()); this.addRenderableWidget(Button.builder(Component.literal("Party List"), button -> { this.minecraft.setScreen(new PartyListScreen(this, EdenModClient.instance())); - }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 3), metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 4), metrics.buttonWidth, metrics.buttonHeight).build()); this.addRenderableWidget(Button.builder(Component.literal("Payouts"), button -> { this.minecraft.setScreen(new PayoutScreen(this, EdenModClient.instance())); - }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 4), metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 5), metrics.buttonWidth, metrics.buttonHeight).build()); this.addRenderableWidget(Button.builder(Component.literal("Command Aliases"), button -> { this.minecraft.setScreen(new CommandAliasScreen(this, EdenModClient.instance())); - }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 5), metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 6), metrics.buttonWidth, metrics.buttonHeight).build()); this.addRenderableWidget(Button.builder(Component.literal("Command Keybinds"), button -> { this.minecraft.setScreen(new CommandKeybindScreen(this, EdenModClient.instance())); - }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 6), metrics.buttonWidth, metrics.buttonHeight).build()); + }).bounds(metrics.buttonX, metrics.startY + (metrics.buttonPitch * 7), metrics.buttonWidth, metrics.buttonHeight).build()); } @Override diff --git a/src/tel/eden/mod/gui/LongEventScreen.java b/src/tel/eden/mod/gui/LongEventScreen.java new file mode 100644 index 0000000..6398718 --- /dev/null +++ b/src/tel/eden/mod/gui/LongEventScreen.java @@ -0,0 +1,720 @@ +package tel.eden.mod.gui; + +import com.mojang.blaze3d.platform.NativeImage; +import java.io.InputStream; +import java.net.URI; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Locale; +import java.util.Map; +import net.minecraft.ChatFormatting; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; +import net.minecraft.client.gui.components.Button; +import net.minecraft.client.gui.screens.ConfirmLinkScreen; +import net.minecraft.client.gui.screens.Screen; +import net.minecraft.client.input.MouseButtonEvent; +import net.minecraft.client.renderer.RenderPipelines; +import net.minecraft.client.renderer.texture.DynamicTexture; +import net.minecraft.client.resources.sounds.SimpleSoundInstance; +import net.minecraft.network.chat.Component; +import net.minecraft.resources.Identifier; +import net.minecraft.sounds.SoundEvent; +import net.minecraft.util.FormattedCharSequence; +import net.minecraft.util.Util; +import tel.eden.mod.EdenModClient; +import tel.eden.mod.chat.ImagePreviewManager; +import tel.eden.mod.raid.RaidGambitSafety; +import tel.eden.mod.net.LongEventState; + +/** Screen displaying Daily, Weekly, Repeatable, and Master long-event missions. */ +public final class LongEventScreen extends EdenReferenceScreen { + private static final int BASE_PANEL_WIDTH = 480; + private static final int BASE_PANEL_HEIGHT = 350; + private static final String[] SLOT_ORDER = {"daily", "special", "repeatable", "repeatable2"}; + private static final String[] SLOT_LABELS = {"Daily", "Special", "Repeatable", "Repeatable 2"}; + private static final int[] CARD_BASE_X = {12, 128, 244, 360}; + private static final int CARD_BASE_W = 108; + private static final int CARD_BASE_Y = 48; + private static final int CARD_BASE_H = 146; + + private static final SoundEvent CLICK_SOUND = SoundEvent.createVariableRangeEvent(Identifier.parse("minecraft:ui.button.click")); + private static final Map TEXTURE_CACHE = new HashMap<>(); + + private record LoadedTexture(Identifier id, int width, int height) { + private static final LoadedTexture EMPTY = new LoadedTexture(null, 0, 0); + } + + private record ClickBox(int x, int y, int w, int h) { + boolean contains(double mx, double my) { + return mx >= x && mx < x + w && my >= y && my < y + h; + } + } + + private final Screen parent; + private final EdenModClient mod; + private EdenPanelLayout layout; + private int seenGeneration = -1; + private LongEventState state; + private final Map requestedResetAtMs = new HashMap<>(); + private long lastStateRequestMs = 0L; + + public LongEventScreen(Screen parent, EdenModClient mod) { + super(Component.literal("Event")); + this.parent = parent; + this.mod = mod; + } + + @Override + protected void init() { + super.init(); + updateReferenceSpace(); + layout = EdenPanelLayout.centered(virtualWidth, virtualHeight, BASE_PANEL_WIDTH, BASE_PANEL_HEIGHT); + + this.addRenderableWidget(Button.builder(Component.literal("Back"), b -> onClose()).bounds(layout.x(160), layout.y(322), layout.w(160), layout.h(20)).build()); + + preloadTextures(); + + if (mod.socket() != null && mod.socket().isConnected()) { + lastStateRequestMs = System.currentTimeMillis(); + mod.socket().sendLongEventStateRequest(); + } + + refreshSnapshot(); + } + + private void refreshSnapshot() { + seenGeneration = mod.longEventGeneration(); + state = mod.knownLongEventState(); + } + + @Override + public void tick() { + super.tick(); + if (seenGeneration != mod.longEventGeneration()) { + refreshSnapshot(); + } + long now = System.currentTimeMillis(); + if (state == null && mod.socket() != null && mod.socket().isConnected()) { + if (now - lastStateRequestMs > 3000L) { + lastStateRequestMs = now; + mod.socket().sendLongEventStateRequest(); + } + } + if (state != null && state.active() && mod.socket() != null) { + for (LongEventState.Slot slot : state.slots()) { + long resetAt = slot.resetAtMs(); + if (resetAt > 0L && now >= resetAt) { + Long prev = requestedResetAtMs.get(slot.slot()); + if (prev == null || prev != resetAt) { + requestedResetAtMs.put(slot.slot(), resetAt); + mod.socket().sendLongEventStateRequest(); + break; + } + } + } + } + } + + private ClickBox rerollBox(int slotIndex) { + if (layout == null || slotIndex < 0 || slotIndex >= CARD_BASE_X.length) { + return null; + } + int cardX = layout.x(CARD_BASE_X[slotIndex]); + int cardY = layout.y(CARD_BASE_Y); + int cardW = layout.w(CARD_BASE_W); + int rerollSize = layout.w(14); + int rx = cardX + cardW - rerollSize - layout.w(4); + int ry = cardY + layout.h(4); + return new ClickBox(rx, ry, rerollSize, rerollSize); + } + + private ClickBox imageLinkBox(int slotIndex) { + if (layout == null || slotIndex < 0 || slotIndex >= CARD_BASE_X.length) { + return null; + } + int cardX = layout.x(CARD_BASE_X[slotIndex]); + int cardY = layout.y(CARD_BASE_Y); + int cardW = layout.w(CARD_BASE_W); + int cardH = layout.h(CARD_BASE_H); + int cardCenterX = cardX + cardW / 2; + int lw = this.font.width("[Image]"); + int lx = cardCenterX - lw / 2; + int ly = cardY + cardH - layout.h(12); + return new ClickBox(lx - 2, ly - 1, lw + 4, 10); + } + + @Override + public void render(GuiGraphics g, int mouseX, int mouseY, float delta) { + int scaledMouseX = scaledMouseX(mouseX); + int scaledMouseY = scaledMouseY(mouseY); + long nowMs = System.currentTimeMillis(); + + LongEventState.Slot hoveredRerollSlot = null; + String hoveredRerollSlotName = null; + String hoveredImageUrl = null; + LongEventState.Slot hoveredNoteSlot = null; + + pushReferencePose(g); + layout.drawBackground(g); + layout.drawPanel(g); + super.render(g, scaledMouseX, scaledMouseY, delta); + + // Header + g.drawCenteredString(this.font, "Event", layout.centerX(), layout.y(10), 0xFFFFFFFF); + if (state != null && state.active()) { + String pendingText = "Pending: " + state.pendingLe() + " LE"; + g.drawString(this.font, pendingText, layout.x(12), layout.y(10), 0xFFFFD24A); + if (state.endsAtMs() > 0L) { + long rem = state.endsAtMs() - nowMs; + String endsText = rem > 0L ? "Ends in " + LongEventState.formatCountdown(rem, true) : "Ended"; + g.drawString(this.font, endsText, layout.x(BASE_PANEL_WIDTH - 12) - this.font.width(endsText), layout.y(10), 0xFFCCCCCC); + } + } + + if (seenGeneration == 0 || state == null) { + g.drawCenteredString(this.font, "Loading…", layout.centerX(), layout.y(155), 0xFFAAAAAA); + } else if (!state.active()) { + g.drawCenteredString(this.font, "No event is running", layout.centerX(), layout.y(155), 0xFFAAAAAA); + } else { + // Four mission cards: Daily, Special, Repeatable, Repeatable 2 + for (int i = 0; i < SLOT_ORDER.length; i++) { + String slotKey = SLOT_ORDER[i]; + String slotLabel = SLOT_LABELS[i]; + boolean isLockedRep2 = "repeatable2".equals(slotKey) && (state == null || !state.repeatSlot2Active()); + LongEventState.Slot slot = isLockedRep2 ? null : state.findSlot(slotKey); + + int cardX = layout.x(CARD_BASE_X[i]); + int cardY = layout.y(CARD_BASE_Y); + int cardW = layout.w(CARD_BASE_W); + int cardH = layout.h(CARD_BASE_H); + int cardCenterX = cardX + cardW / 2; + + // Slot title + live countdown above card + g.drawCenteredString(this.font, slotLabel, cardCenterX, layout.y(25), isLockedRep2 ? 0xFF888888 : 0xFFFFD24A); + String countdown = isLockedRep2 ? "Locked" : LongEventState.slotCountdownText(slotKey, slot != null ? slot.resetAtMs() : 0L, nowMs); + drawFittedCenteredString(g, countdown, cardCenterX, layout.y(36), cardW - 4, isLockedRep2 ? 0xFF666666 : 0xFFCCCCCC); + + // Card panel + if (isLockedRep2) { + g.fill(cardX, cardY, cardX + cardW, cardY + cardH, 0x33161616); + drawOutline(g, cardX, cardY, cardW, cardH, 0xFF333333); + g.drawCenteredString(this.font, "Locked Slot", cardCenterX, cardY + layout.h(62), 0xFF666666); + g.drawCenteredString(this.font, "Inactive", cardCenterX, cardY + layout.h(74), 0xFF444444); + continue; + } + + boolean completed = slot != null && slot.completed(); + int borderColor = completed ? 0xFF3A8A3A : 0xFF4A4A4A; + g.fill(cardX, cardY, cardX + cardW, cardY + cardH, 0x66161616); + drawOutline(g, cardX, cardY, cardW, cardH, borderColor); + + // Frame + centred tag icon + int frameSize = layout.w(42); + int frameX = cardX + (cardW - frameSize) / 2; + int frameY = cardY + layout.h(4); + LoadedTexture tagIcon = iconForTag(slot != null ? slot.tag() : "Other"); + if (tagIcon != null) { + int iconSize = layout.w(26); + drawTexture(g, tagIcon, frameX + (frameSize - iconSize) / 2, frameY + (frameSize - iconSize) / 2, iconSize, iconSize); + } + LoadedTexture frameTex = frameForSlot(slotKey); + if (frameTex != null) { + drawTexture(g, frameTex, frameX, frameY, frameSize, frameSize); + } + + if (slot == null || slot.missionId() == 0) { + g.drawCenteredString(this.font, "No mission", cardCenterX, cardY + layout.h(72), 0xFF888888); + continue; + } + + // Reroll icon button in top-right corner + ClickBox rBox = rerollBox(i); + int rerollSize = rBox.w(); + int rerollX = rBox.x(); + int rerollY = rBox.y(); + boolean canReroll = slot.canReroll(); + boolean canBuyReroll = slot.canBuyReroll(); + boolean rHover = rBox.contains(scaledMouseX, scaledMouseY); + if (rHover) { + hoveredRerollSlot = slot; + hoveredRerollSlotName = slotKey; + } + boolean shiftHeld = RaidGambitSafety.isShiftKeyDown(); + int rBg; + int rBorder; + int rFg; + if (canReroll) { + rBg = rHover ? 0xFF484848 : 0xFF303030; + rBorder = rHover ? 0xFFFFD24A : 0xFF999999; + rFg = rHover ? 0xFFFFD24A : 0xFFFFFFFF; + } else if (canBuyReroll && shiftHeld && rHover) { + rBg = 0xFF203838; + rBorder = 0xFF55FFFF; + rFg = 0xFF55FFFF; + } else { + rBg = 0xFF1C1C1C; + rBorder = 0xFF404040; + rFg = 0xFF666666; + } + g.fill(rerollX, rerollY, rerollX + rerollSize, rerollY + rerollSize, rBg); + drawOutline(g, rerollX, rerollY, rerollSize, rerollSize, rBorder); + g.drawCenteredString(this.font, "⟳", rerollX + rerollSize / 2, rerollY + (rerollSize - 8) / 2, rFg); + + boolean isOther = "Other".equalsIgnoreCase(slot.tag()); + String displayTitle = slot.title(); + if (isOther && slot.missionId() > 0 && !displayTitle.contains("#" + slot.missionId())) { + displayTitle = displayTitle + " #" + slot.missionId(); + } + int innerW = cardW - layout.w(10); + List titleLines = this.font.split(Component.literal(displayTitle), Math.max(20, innerW)); + int titleY = cardY + layout.h(48); + int maxTitleLines = Math.min(2, titleLines.size()); + for (int lineIdx = 0; lineIdx < maxTitleLines; lineIdx++) { + FormattedCharSequence seq = titleLines.get(lineIdx); + g.drawString(this.font, seq, cardCenterX - this.font.width(seq) / 2, titleY + lineIdx * 9, 0xFFFFFFFF); + } + + // Progress & +N LE row + int statY = cardY + layout.h(69); + int padX = cardX + layout.w(6); + int rightX = cardX + cardW - layout.w(6); + String progStr = slot.progress() + "/" + slot.target(); + String rewardStr = "+" + slot.rewardLe() + " LE"; + g.drawString(this.font, progStr, padX, statY, 0xFFDDDDDD); + if (completed) { + g.drawCenteredString(this.font, "Completed", cardCenterX, statY, 0xFF55FF55); + } + g.drawString(this.font, rewardStr, rightX - this.font.width(rewardStr), statY, 0xFFFFD24A); + + // Progress bar + int barY = cardY + layout.h(80); + int barW = cardW - layout.w(12); + int barH = Math.max(3, layout.h(5)); + float ratio = completed ? 1.0f : Math.clamp(slot.progress() / (float) Math.max(1, slot.target()), 0.0f, 1.0f); + drawProgressBar(g, padX, barY, barW, barH, ratio, completed); + + // Note + optional [Image] hover/click + boolean hasNoteOrImage = !slot.note().isEmpty() || !slot.imageUrl().isEmpty(); + if (hasNoteOrImage) { + int noteTop = cardY + layout.h(89); + boolean hasImage = !slot.imageUrl().isEmpty(); + int maxNoteLines = hasImage ? 3 : 4; + if (!slot.note().isEmpty()) { + List noteLines = wrapWords(slot.note(), Math.max(20, innerW)); + boolean isTruncated = noteLines.size() > maxNoteLines; + int visibleLines = Math.min(maxNoteLines, noteLines.size()); + + for (int nIdx = 0; nIdx < visibleLines; nIdx++) { + int lineY = noteTop + nIdx * 9; + String lineText = noteLines.get(nIdx); + if (isTruncated && nIdx == visibleLines - 1) { + int dotW = this.font.width("..."); + while (!lineText.isEmpty() && this.font.width(lineText) + dotW + 2 > innerW) { + lineText = lineText.substring(0, lineText.length() - 1).trim(); + } + g.drawString(this.font, lineText, padX, lineY, 0xFFBBBBBB); + int dotX = padX + this.font.width(lineText) + 2; + g.drawString(this.font, "...", dotX, lineY, 0xFFFFD24A); + } else { + g.drawString(this.font, lineText, padX, lineY, 0xFFBBBBBB); + } + } + + if (isTruncated) { + int noteH = visibleLines * 9; + if (scaledMouseX >= padX && scaledMouseX <= padX + innerW && scaledMouseY >= noteTop && scaledMouseY <= noteTop + noteH) { + hoveredNoteSlot = slot; + } + } + } + if (hasImage) { + Component imgLabel = Component.literal("[Image]").withStyle(ChatFormatting.AQUA, ChatFormatting.UNDERLINE); + ClickBox imgBox = imageLinkBox(i); + if (imgBox.contains(scaledMouseX, scaledMouseY)) { + hoveredImageUrl = slot.imageUrl(); + } + int lx = cardCenterX - this.font.width(imgLabel) / 2; + int ly = cardY + cardH - layout.h(12); + g.drawString(this.font, imgLabel, lx, ly, 0xFF55FFFF); + } + } + } + + // Master section (up to 3 tracks: Raids, Guild Wars, Missions) + List masters = state.masters(); + if (!masters.isEmpty()) { + g.drawString(this.font, "Event Objectives", layout.x(12), layout.y(200), 0xFFFFD24A); + LoadedTexture masterFrame = getTexture("assets/edenmod/textures/gui/event/frame_master.png"); + for (int idx = 0; idx < Math.min(3, masters.size()); idx++) { + LongEventState.Master master = masters.get(idx); + int rowX = layout.x(12); + int rowY = layout.y(212 + idx * 35); + int rowW = layout.w(456); + int rowH = layout.h(32); + + boolean mDone = master.completed(); + g.fill(rowX, rowY, rowX + rowW, rowY + rowH, 0x66161616); + drawOutline(g, rowX, rowY, rowW, rowH, mDone ? 0xFF3A8A3A : 0xFF4A4A4A); + + int fSize = layout.w(26); + int fx = rowX + layout.w(3); + int fy = rowY + (rowH - fSize) / 2; + LoadedTexture mIcon = iconForMaster(master.kind()); + if (mIcon != null) { + int iSize = layout.w(18); + drawTexture(g, mIcon, fx + (fSize - iSize) / 2, fy + (fSize - iSize) / 2, iSize, iSize); + } + if (masterFrame != null) { + drawTexture(g, masterFrame, fx, fy, fSize, fSize); + } + + int textLeft = rowX + layout.w(34); + int topY = rowY + layout.h(4); + String displayTitle = switch (master.kind().toLowerCase(Locale.ROOT)) { + case "raids" -> "All Raids"; + case "missions" -> "Mission Completions"; + case "wars", "guild_wars" -> "Guild Wars"; + default -> master.title().replace(" Master", ""); + }; + String tierText = "Tier " + master.tier() + "/" + master.tierCount(); + g.drawString(this.font, displayTitle, textLeft, topY, 0xFFFFFFFF); + int afterTitle = textLeft + this.font.width(displayTitle) + 6; + g.drawString(this.font, tierText, afterTitle, topY, 0xFF55FFFF); + + String earnedText = "Earned: " + master.earnedLe() + " LE"; + g.drawString(this.font, earnedText, rowX + rowW - layout.w(6) - this.font.width(earnedText), topY, 0xFFFFD24A); + + int barY = rowY + layout.h(18); + int barW = layout.w(230); + int barH = Math.max(3, layout.h(5)); + float ratio = mDone ? 1.0f : Math.clamp(master.progress() / (float) Math.max(1, master.target()), 0.0f, 1.0f); + drawProgressBar(g, textLeft, barY, barW, barH, ratio, mDone); + + int statusX = textLeft + barW + layout.w(8); + int statusY = rowY + layout.h(16); + if (mDone) { + g.drawString(this.font, "All tiers complete", statusX, statusY, 0xFF55FF55); + } else { + String mProg = master.progress() + "/" + master.target(); + g.drawString(this.font, mProg, statusX, statusY, 0xFFDDDDDD); + g.drawString(this.font, "+" + master.rewardLe() + " LE", statusX + this.font.width(mProg) + 8, statusY, 0xFFFFD24A); + } + } + } + } + + popReferencePose(g); + + // Render hover tooltips / image previews in native screen space + if (hoveredRerollSlotName != null) { + g.setComponentTooltipForNextFrame(this.font, buildRerollTooltip(hoveredRerollSlotName, hoveredRerollSlot, nowMs), mouseX, mouseY); + } else if (hoveredImageUrl != null) { + if (ImagePreviewManager.isPreviewable(hoveredImageUrl)) { + int imgW = ImagePreviewManager.getWidth(hoveredImageUrl); + int imgH = ImagePreviewManager.getHeight(hoveredImageUrl); + int boxW = imgW > 0 ? imgW : 100; + int boxH = imgH > 0 ? imgH : 16; + int rx = (this.width - boxW) / 2; + int ry = (this.height - boxH) / 2; + g.fill(rx - 2, ry - 2, rx + boxW + 2, ry + boxH + 2, 0xCC000000); + ImagePreviewManager.renderPreview(g, hoveredImageUrl, rx, ry); + } else { + g.setComponentTooltipForNextFrame(this.font, List.of(Component.literal("Click to open image").withStyle(ChatFormatting.GRAY)), mouseX, mouseY); + } + } else if (hoveredNoteSlot != null) { + g.setComponentTooltipForNextFrame(this.font, buildNoteTooltip(hoveredNoteSlot), mouseX, mouseY); + } + } + + private List buildNoteTooltip(LongEventState.Slot slot) { + List lines = new ArrayList<>(); + lines.add(Component.literal("Mission Instructions").withStyle(ChatFormatting.GOLD, ChatFormatting.BOLD)); + lines.add(Component.empty()); + for (String wrappedLine : wrapWords(slot.note(), 220)) { + lines.add(Component.literal(wrappedLine).withStyle(ChatFormatting.WHITE)); + } + if (!slot.imageUrl().isEmpty()) { + lines.add(Component.empty()); + lines.add(Component.literal("Image attached (click [Image] below to open)").withStyle(ChatFormatting.DARK_AQUA, ChatFormatting.ITALIC)); + } + return lines; + } + + private List wrapWords(String text, int maxWidth) { + List lines = new ArrayList<>(); + if (text == null || text.isBlank() || maxWidth <= 0) { + return lines; + } + String[] words = text.trim().split("\\s+"); + StringBuilder current = new StringBuilder(); + for (String word : words) { + if (current.length() == 0) { + if (this.font.width(word) > maxWidth) { + for (char ch : word.toCharArray()) { + if (this.font.width(current.toString() + ch) > maxWidth && current.length() > 0) { + lines.add(current.toString()); + current.setLength(0); + } + current.append(ch); + } + } else { + current.append(word); + } + } else { + String candidate = current + " " + word; + if (this.font.width(candidate) <= maxWidth) { + current.append(" ").append(word); + } else { + lines.add(current.toString()); + current.setLength(0); + if (this.font.width(word) > maxWidth) { + for (char ch : word.toCharArray()) { + if (this.font.width(current.toString() + ch) > maxWidth && current.length() > 0) { + lines.add(current.toString()); + current.setLength(0); + } + current.append(ch); + } + } else { + current.append(word); + } + } + } + } + if (current.length() > 0) { + lines.add(current.toString()); + } + return lines; + } + + private List buildRerollTooltip(String slotKey, LongEventState.Slot slot, long nowMs) { + List lines = new ArrayList<>(); + if (slot != null && slot.canReroll()) { + lines.add(Component.literal("Reroll this mission").withStyle(ChatFormatting.GOLD)); + lines.add(Component.literal(LongEventState.rerollRuleText(slotKey)).withStyle(ChatFormatting.GRAY)); + lines.add(Component.literal("The rerolled mission's type can't roll in this slot for the next 2 rolls").withStyle(ChatFormatting.GRAY)); + } else { + lines.add(Component.literal("Reroll on cooldown").withStyle(ChatFormatting.RED)); + lines.add(Component.literal(LongEventState.rerollRuleText(slotKey)).withStyle(ChatFormatting.GRAY)); + lines.add(Component.literal("The rerolled mission's type can't roll in this slot for the next 2 rolls").withStyle(ChatFormatting.GRAY)); + if (slot != null && slot.rerollAtMs() > 0L) { + long rem = Math.max(0L, slot.rerollAtMs() - nowMs); + boolean useDays = rem >= 86_400_000L; + lines.add(Component.literal("Available in " + LongEventState.formatCountdown(rem, useDays)).withStyle(ChatFormatting.RED)); + } + } + + if (slot != null && !slot.completed()) { + int cost = state != null ? state.rerollCost() : 0; + int pts = state != null ? state.triviaPoints() : 0; + if (cost > 0) { + lines.add(Component.empty()); + if (slot.canBuyReroll()) { + lines.add(Component.literal("Shift-Click to buy extra reroll").withStyle(ChatFormatting.AQUA)); + lines.add(Component.literal("Cost: " + cost + " Trivia Points (You have " + pts + ")").withStyle(ChatFormatting.DARK_AQUA)); + } else { + lines.add(Component.literal("Shift-Click to buy extra reroll").withStyle(ChatFormatting.DARK_GRAY)); + lines.add(Component.literal("Requires " + cost + " Trivia Points (You have " + pts + ")").withStyle(ChatFormatting.RED)); + } + } + } + return lines; + } + + private void drawFittedCenteredString(GuiGraphics g, String text, int centerX, int y, int maxWidth, int color) { + int textW = this.font.width(text); + if (textW <= maxWidth || textW <= 0) { + g.drawCenteredString(this.font, text, centerX, y, color); + return; + } + float s = maxWidth / (float) textW; + g.pose().pushMatrix(); + g.pose().translate(centerX, y); + g.pose().scale(s, s); + g.drawString(this.font, text, -textW / 2, 0, color); + g.pose().popMatrix(); + } + + private static void drawOutline(GuiGraphics g, int x, int y, int w, int h, int color) { + g.fill(x, y, x + w, y + 1, color); + g.fill(x, y + h - 1, x + w, y + h, color); + g.fill(x, y, x + 1, y + h, color); + g.fill(x + w - 1, y, x + w, y + h, color); + } + + private static void drawProgressBar(GuiGraphics g, int x, int y, int w, int h, float ratio, boolean completed) { + g.fill(x, y, x + w, y + h, 0xFF141414); + int fillW = Math.round((w - 2) * Math.clamp(ratio, 0.0f, 1.0f)); + if (fillW > 0) { + g.fill(x + 1, y + 1, x + 1 + fillW, y + h - 1, completed ? 0xFF55DD55 : 0xFFFFB833); + } + drawOutline(g, x, y, w, h, 0xFF3A3A3A); + } + + private static void drawTexture(GuiGraphics g, LoadedTexture tex, int x, int y, int w, int h) { + if (tex == null || tex.id() == null) { + return; + } + g.pose().pushMatrix(); + g.pose().translate(x, y); + g.pose().scale(w / (float) tex.width(), h / (float) tex.height()); + g.blit(RenderPipelines.GUI_TEXTURED, tex.id(), 0, 0, 0.0f, 0.0f, tex.width(), tex.height(), tex.width(), tex.height()); + g.pose().popMatrix(); + } + + private static LoadedTexture frameForSlot(String slotKey) { + String file = switch (slotKey.toLowerCase(Locale.ROOT)) { + case "daily" -> "frame_daily.png"; + case "special", "weekly" -> "frame_weekly.png"; + default -> "frame_repeatable.png"; + }; + return getTexture("assets/edenmod/textures/gui/event/" + file); + } + + private static LoadedTexture iconForTag(String tag) { + if (tag == null) { + return getTexture("assets/edenmod/textures/gui/event/other.png"); + } + return switch (tag.trim().toUpperCase(Locale.ROOT)) { + case "NOTG" -> getTexture("assets/edenmod/textures/gui/icons/notg.png"); + case "NOL" -> getTexture("assets/edenmod/textures/gui/icons/nol.png"); + case "TCC" -> getTexture("assets/edenmod/textures/gui/icons/tcc.png"); + case "TNA" -> getTexture("assets/edenmod/textures/gui/icons/tna.png"); + case "WTP" -> getTexture("assets/edenmod/textures/gui/icons/wtp.png"); + case "ALL RAIDS" -> getTexture("assets/edenmod/textures/gui/event/all_raids.png"); + case "GUILD WARS" -> getTexture("assets/edenmod/textures/gui/event/guild_wars.png"); + case "TRIVIA" -> getTexture("assets/edenmod/textures/gui/event/trivia.png"); + case "DICEROLL" -> getTexture("assets/edenmod/textures/gui/event/diceroll.png"); + case "COINFLIP" -> getTexture("assets/edenmod/textures/gui/event/coinflip.png"); + default -> getTexture("assets/edenmod/textures/gui/event/other.png"); + }; + } + + private static LoadedTexture iconForMaster(String kind) { + if ("raids".equalsIgnoreCase(kind)) { + return getTexture("assets/edenmod/textures/gui/event/all_raids.png"); + } + if ("wars".equalsIgnoreCase(kind) || "guild_wars".equalsIgnoreCase(kind)) { + return getTexture("assets/edenmod/textures/gui/event/guild_wars.png"); + } + return getTexture("assets/edenmod/icon.png"); + } + + private static final String[] PRELOAD_TEXTURES = {"assets/edenmod/textures/gui/event/frame_daily.png", "assets/edenmod/textures/gui/event/frame_weekly.png", "assets/edenmod/textures/gui/event/frame_repeatable.png", "assets/edenmod/textures/gui/event/frame_master.png", "assets/edenmod/textures/gui/event/all_raids.png", "assets/edenmod/textures/gui/event/guild_wars.png", "assets/edenmod/textures/gui/event/trivia.png", "assets/edenmod/textures/gui/event/diceroll.png", "assets/edenmod/textures/gui/event/coinflip.png", "assets/edenmod/textures/gui/event/other.png", "assets/edenmod/textures/gui/icons/notg.png", "assets/edenmod/textures/gui/icons/nol.png", "assets/edenmod/textures/gui/icons/tcc.png", "assets/edenmod/textures/gui/icons/tna.png", "assets/edenmod/textures/gui/icons/wtp.png", "assets/edenmod/icon.png"}; + + public static void preloadTextures() { + for (String path : PRELOAD_TEXTURES) { + getTexture(path); + } + } + + private static LoadedTexture getTexture(String resourcePath) { + LoadedTexture cached = TEXTURE_CACHE.get(resourcePath); + if (cached != null) { + if (cached == LoadedTexture.EMPTY) { + return null; + } + var tm = Minecraft.getInstance().getTextureManager(); + var tex = tm.getTexture(cached.id()); + if (tex != null && tex.getTexture() != null) { + return cached; + } + TEXTURE_CACHE.remove(resourcePath); + } + try (InputStream stream = LongEventScreen.class.getClassLoader().getResourceAsStream(resourcePath)) { + if (stream != null) { + NativeImage img = NativeImage.read(stream); + int w = img.getWidth(); + int h = img.getHeight(); + String slug = resourcePath.replace("assets/edenmod/", "").replace('/', '_').replace('.', '_'); + Identifier loc = Identifier.parse("edenmod:event_tex/" + slug); + Minecraft.getInstance().getTextureManager().register(loc, new DynamicTexture(() -> slug, img)); + LoadedTexture loaded = new LoadedTexture(loc, w, h); + TEXTURE_CACHE.put(resourcePath, loaded); + return loaded; + } + } catch (Exception ignored) { + } + TEXTURE_CACHE.put(resourcePath, LoadedTexture.EMPTY); + return null; + } + + @Override + public boolean mouseClicked(MouseButtonEvent event, boolean bl) { + MouseButtonEvent scaled = rescale(event); + if (scaled.button() == 0 && state != null && state.active()) { + double mx = scaled.x(); + double my = scaled.y(); + for (int i = 0; i < SLOT_ORDER.length; i++) { + String slotKey = SLOT_ORDER[i]; + if ("repeatable2".equals(slotKey) && (state == null || !state.repeatSlot2Active())) { + continue; + } + LongEventState.Slot slot = state.findSlot(slotKey); + if (slot == null || slot.missionId() == 0) { + continue; + } + ClickBox rBox = rerollBox(i); + if (rBox != null && rBox.contains(mx, my)) { + if (mod.socket() != null) { + boolean shift = RaidGambitSafety.isShiftKeyDown(); + if (slot.canReroll()) { + this.minecraft.getSoundManager().play(SimpleSoundInstance.forUI(CLICK_SOUND, 1.0f)); + mod.socket().sendLongEventReroll(slotKey, false); + return true; + } else if (shift && slot.canBuyReroll()) { + this.minecraft.getSoundManager().play(SimpleSoundInstance.forUI(CLICK_SOUND, 1.0f)); + mod.socket().sendLongEventReroll(slotKey, true); + return true; + } + } + return true; + } + if (!slot.imageUrl().isEmpty()) { + ClickBox imgBox = imageLinkBox(i); + if (imgBox != null && imgBox.contains(mx, my)) { + openUrlSafely(slot.imageUrl()); + return true; + } + } + } + } + return super.mouseClicked(scaled, bl); + } + + private void openUrlSafely(String url) { + if (url == null || url.isBlank()) { + return; + } + try { + URI uri = URI.create(url.trim()); + String scheme = uri.getScheme(); + if (scheme != null && (scheme.equalsIgnoreCase("https") || scheme.equalsIgnoreCase("http"))) { + ConfirmLinkScreen.confirmLinkNow(this, url.trim(), false); + } + } catch (Exception ignored) { + } + } + + @Override + public boolean mouseReleased(MouseButtonEvent event) { + return super.mouseReleased(rescale(event)); + } + + @Override + public boolean mouseDragged(MouseButtonEvent event, double d, double e) { + return super.mouseDragged(rescale(event), d / uiScale, e / uiScale); + } + + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double d, double e) { + return super.mouseScrolled(mouseX / uiScale, mouseY / uiScale, d, e); + } + + @Override + public void onClose() { + this.minecraft.setScreen(parent); + } +} diff --git a/src/tel/eden/mod/net/BridgeWebSocketClient.java b/src/tel/eden/mod/net/BridgeWebSocketClient.java index 18ea67c..519ae23 100644 --- a/src/tel/eden/mod/net/BridgeWebSocketClient.java +++ b/src/tel/eden/mod/net/BridgeWebSocketClient.java @@ -39,7 +39,7 @@ public final class BridgeWebSocketClient { * it (the last one, "guildLogSync", was retired once the server-side code * that checked for it was removed). */ - private static final java.util.Set SUPPORTED_FEATURES = java.util.Set.of("mail"); + private static final java.util.Set SUPPORTED_FEATURES = java.util.Set.of("mail", "longEvent"); /** Callbacks for inbound bridge events (delivered off the game thread). */ public interface MessageSink { @@ -190,6 +190,14 @@ default void onTccGolemDefeated(String sender, String golemId) { default void onTccExitReached(String sender, String path, double x, double z) { } + /** Long-event mission state snapshot (or error notice). */ + default void onLongEventState(LongEventState state, boolean hasSnapshot) { + } + + /** Response to a {@code longEventRewardsRequest}. */ + default void onLongEventRewards(int pendingLe, String error) { + } + /** * The Mojang session was verified ({@code authOk}); {@code linked} and * {@code member} report this player's backend standing. Both true means full @@ -967,6 +975,36 @@ public void sendAllyActivityRequest() { enqueueSend(current, obj.toString()); } + /** Ask the backend for this player's current long-event mission state. */ + public void sendLongEventStateRequest() { + sendType("longEventStateRequest"); + } + + /** Ask the backend to reroll a long-event mission slot ({@code "daily"}, {@code "weekly"}, or {@code "repeatable"}). */ + public void sendLongEventReroll(String slot) { + sendLongEventReroll(slot, false); + } + + /** Ask the backend to reroll a long-event mission slot, optionally purchasing with trivia points. */ + public void sendLongEventReroll(String slot, boolean buy) { + WebSocket current = socket; + if (current == null || slot == null || slot.isEmpty()) { + return; + } + JsonObject obj = new JsonObject(); + obj.addProperty("type", "longEventReroll"); + obj.addProperty("slot", slot); + if (buy) { + obj.addProperty("buy", true); + } + enqueueSend(current, obj.toString()); + } + + /** Ask the backend for this player's pending event LE. */ + public void sendLongEventRewardsRequest() { + sendType("longEventRewardsRequest"); + } + /** * Tell the server whether this client is active in a game world ({@code true}) * or dormant (in queue, hub, or AFK with no recent guild activity β€” {@code false}). @@ -1367,6 +1405,8 @@ private void handlePayload(String payload) { case "tccMapPos" -> sink.onTccMapPos(get(obj, "sender"), get(obj, "senderUuid"), getDouble(obj, "x", 0.0), getDouble(obj, "y", 0.0), getDouble(obj, "z", 0.0), getFloat(obj, "yaw", 0.0f), getBool(obj, "isWings")); case "tccGolemDefeated" -> sink.onTccGolemDefeated(get(obj, "sender"), get(obj, "golemId")); case "tccExitReached" -> sink.onTccExitReached(get(obj, "sender"), get(obj, "path"), getDouble(obj, "x", 0.0), getDouble(obj, "z", 0.0)); + case "longEventState" -> sink.onLongEventState(parseLongEventState(obj), obj.has("active") || obj.has("slots")); + case "longEventRewards" -> sink.onLongEventRewards(getInt(obj, "pendingLe", 0), get(obj, "error")); case "authChallenge" -> handleAuthChallenge(get(obj, "serverId")); case "authOk" -> { authenticated = true; @@ -1629,6 +1669,28 @@ private static java.util.List parseGiveawayCandidates(JsonObj return out; } + static LongEventState parseLongEventState(JsonObject obj) { + java.util.List slots = new java.util.ArrayList<>(); + if (obj.has("slots") && obj.get("slots").isJsonArray()) { + for (var element : obj.get("slots").getAsJsonArray()) { + if (element.isJsonObject()) { + JsonObject s = element.getAsJsonObject(); + slots.add(new LongEventState.Slot(get(s, "slot"), getLong(s, "resetAtMs", 0L), getInt(s, "missionId", 0), get(s, "tag"), get(s, "title"), getInt(s, "progress", 0), getInt(s, "target", 0), getInt(s, "rewardLe", 0), getBool(s, "completed"), getBool(s, "canReroll"), getBool(s, "canBuyReroll"), getLong(s, "rerollAtMs", 0L), get(s, "note"), get(s, "imageUrl"))); + } + } + } + java.util.List masters = new java.util.ArrayList<>(); + if (obj.has("masters") && obj.get("masters").isJsonArray()) { + for (var element : obj.get("masters").getAsJsonArray()) { + if (element.isJsonObject()) { + JsonObject m = element.getAsJsonObject(); + masters.add(new LongEventState.Master(get(m, "kind"), get(m, "title"), getInt(m, "tier", 1), getInt(m, "tierCount", 1), getInt(m, "progress", 0), getInt(m, "target", 0), getInt(m, "rewardLe", 0), getInt(m, "earnedLe", 0), getBool(m, "completed"))); + } + } + } + return new LongEventState(getBool(obj, "active"), getLong(obj, "endsAtMs", 0L), getInt(obj, "pendingLe", 0), getInt(obj, "rerollCost", 0), getInt(obj, "triviaPoints", 0), getBool(obj, "repeatSlot2Active"), get(obj, "error"), slots, masters); + } + private static java.util.List getStringArray(JsonObject obj, String key) { java.util.List out = new java.util.ArrayList<>(); if (obj.has(key) && obj.get(key).isJsonArray()) { diff --git a/src/tel/eden/mod/net/LongEventState.java b/src/tel/eden/mod/net/LongEventState.java new file mode 100644 index 0000000..cb3a546 --- /dev/null +++ b/src/tel/eden/mod/net/LongEventState.java @@ -0,0 +1,107 @@ +package tel.eden.mod.net; + +import java.util.List; +import java.util.Locale; + +/** + * Snapshot of the active long-event mission state for this player, received in a + * {@code longEventState} message from the bridge backend. + */ +public record LongEventState(boolean active, long endsAtMs, int pendingLe, int rerollCost, int triviaPoints, boolean repeatSlot2Active, String error, List slots, List masters) { + public LongEventState(boolean active, long endsAtMs, int pendingLe, int rerollCost, int triviaPoints, String error, List slots, List masters) { + this(active, endsAtMs, pendingLe, rerollCost, triviaPoints, false, error, slots, masters); + } + public LongEventState(boolean active, long endsAtMs, int pendingLe, String error, List slots, List masters) { + this(active, endsAtMs, pendingLe, 0, 0, false, error, slots, masters); + } + public LongEventState { + error = error == null ? "" : error; + slots = slots == null ? List.of() : List.copyOf(slots); + masters = masters == null ? List.of() : List.copyOf(masters); + } + + /** One mission slot ({@code "daily"}, {@code "weekly"}, or {@code "repeatable"}). */ + public record Slot(String slot, long resetAtMs, int missionId, String tag, String title, int progress, int target, int rewardLe, boolean completed, boolean canReroll, boolean canBuyReroll, long rerollAtMs, String note, String imageUrl) { + public Slot(String slot, long resetAtMs, int missionId, String tag, String title, int progress, int target, int rewardLe, boolean completed, boolean canReroll, long rerollAtMs, String note, String imageUrl) { + this(slot, resetAtMs, missionId, tag, title, progress, target, rewardLe, completed, canReroll, false, rerollAtMs, note, imageUrl); + } + public Slot { + slot = slot == null ? "" : slot; + tag = tag == null ? "" : tag; + title = title == null ? "" : title; + note = note == null ? "" : note; + imageUrl = imageUrl == null ? "" : imageUrl; + } + } + + /** One master mission track ({@code "raids"} or {@code "missions"}). */ + public record Master(String kind, String title, int tier, int tierCount, int progress, int target, int rewardLe, int earnedLe, boolean completed) { + public Master { + kind = kind == null ? "" : kind; + title = title == null ? "" : title; + } + } + + /** Find a slot by its identifier ({@code "daily"}, {@code "special"}, {@code "repeatable"}, {@code "repeatable2"}). */ + public Slot findSlot(String slotName) { + for (Slot s : slots) { + if (s.slot().equalsIgnoreCase(slotName)) { + return s; + } + } + if ("special".equalsIgnoreCase(slotName)) { + for (Slot s : slots) { + if ("weekly".equalsIgnoreCase(s.slot())) { + return s; + } + } + } else if ("weekly".equalsIgnoreCase(slotName)) { + for (Slot s : slots) { + if ("special".equalsIgnoreCase(s.slot())) { + return s; + } + } + } + return null; + } + + /** + * Format a remaining millisecond duration as {@code HH:MM:SS} or {@code Xd HH:MM:SS}. + * Non-positive durations clamp to zero. + */ + public static String formatCountdown(long remainingMs, boolean includeDays) { + long totalSeconds = Math.max(0L, remainingMs / 1000L); + if (includeDays) { + long days = totalSeconds / 86_400L; + long hours = (totalSeconds % 86_400L) / 3_600L; + long minutes = (totalSeconds % 3_600L) / 60L; + long seconds = totalSeconds % 60L; + return String.format(Locale.ROOT, "%dd %02d:%02d:%02d", days, hours, minutes, seconds); + } + long hours = totalSeconds / 3_600L; + long minutes = (totalSeconds % 3_600L) / 60L; + long seconds = totalSeconds % 60L; + return String.format(Locale.ROOT, "%02d:%02d:%02d", hours, minutes, seconds); + } + + /** Live subtitle text shown above a slot card. */ + public static String slotCountdownText(String slotName, long resetAtMs, long nowMs) { + if ("repeatable".equalsIgnoreCase(slotName) || "repeatable2".equalsIgnoreCase(slotName)) { + return "Complete to unlock the next mission"; + } + boolean specialOrWeekly = "special".equalsIgnoreCase(slotName) || "weekly".equalsIgnoreCase(slotName); + long remaining = resetAtMs > 0L ? Math.max(0L, resetAtMs - nowMs) : 0L; + return "Resets in " + formatCountdown(remaining, specialOrWeekly); + } + + /** Cooldown rule line shown in the reroll tooltip for the given slot. */ + public static String rerollRuleText(String slotName) { + if ("daily".equalsIgnoreCase(slotName)) { + return "Daily: once per day"; + } + if ("special".equalsIgnoreCase(slotName) || "weekly".equalsIgnoreCase(slotName)) { + return "Special: once every 3 days"; + } + return "Repeatable: every 3 hours"; + } +} diff --git a/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java b/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java new file mode 100644 index 0000000..621d373 --- /dev/null +++ b/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java @@ -0,0 +1,35 @@ +package tel.eden.mod.chat; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; +import tel.eden.mod.EdenModClient; + +class EventAnnouncementFormattingTest { + + @Test + void testOwnEventAnnouncementDetection() { + String self = "Good627"; + assertTrue(EdenModClient.isOwnEventAnnouncement("πŸ” Good627 completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); + assertTrue(EdenModClient.isOwnEventAnnouncement("⭐ good627 completed Daily Mission (NOL 1) β€” +8 LE!", self)); + assertTrue(EdenModClient.isOwnEventAnnouncement("🎯 Good627 completed Weekly Mission (WTP 2) β€” +16 LE!", self)); + assertTrue(EdenModClient.isOwnEventAnnouncement("πŸ† Good627 unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); + + assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ” SomeoneElse completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); + assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ† SomeoneElse unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); + assertFalse(EdenModClient.isOwnEventAnnouncement("Some random chat mentioning Good627 completed", self)); + assertFalse(EdenModClient.isOwnEventAnnouncement(null, self)); + assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ” Good627 completed Repeatable", null)); + } + + @Test + void testOwnEventAnnouncementFormatting() { + String self = "Good627"; + assertEquals("πŸ” You've completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ” Good627 completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); + assertEquals("⭐ You've completed Daily Mission (NOL 1) β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("⭐ good627 completed Daily Mission (NOL 1) β€” +8 LE!", self)); + assertEquals("🎯 You've completed Weekly Mission (WTP 2) β€” +16 LE!", EdenModClient.formatOwnEventAnnouncement("🎯 Good627 completed Weekly Mission (WTP 2) β€” +16 LE!", self)); + assertEquals("πŸ† You've unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ† Good627 unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); + } +} diff --git a/test/tel/eden/mod/net/LongEventStateTest.java b/test/tel/eden/mod/net/LongEventStateTest.java new file mode 100644 index 0000000..58b4038 --- /dev/null +++ b/test/tel/eden/mod/net/LongEventStateTest.java @@ -0,0 +1,75 @@ +package tel.eden.mod.net; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.util.List; +import org.junit.jupiter.api.Test; + +class LongEventStateTest { + @Test + void formatCountdownFormatsCorrectly() { + // Non-positive clamps to 00:00:00 + assertEquals("00:00:00", LongEventState.formatCountdown(-500L, false)); + assertEquals("0d 00:00:00", LongEventState.formatCountdown(0L, true)); + + // 1 hour, 2 minutes, 3 seconds = 3723 seconds = 3,723,000 ms + long ms = (3600 + 120 + 3) * 1000L; + assertEquals("01:02:03", LongEventState.formatCountdown(ms, false)); + + // 2 days, 3 hours, 4 minutes, 5 seconds + long daysMs = (2 * 86400 + 3 * 3600 + 4 * 60 + 5) * 1000L; + assertEquals("2d 03:04:05", LongEventState.formatCountdown(daysMs, true)); + } + + @Test + void slotCountdownTextMatchesSlotRules() { + assertEquals("Complete to unlock the next mission", LongEventState.slotCountdownText("repeatable", 12345L, 0L)); + assertEquals("Complete to unlock the next mission", LongEventState.slotCountdownText("repeatable2", 12345L, 0L)); + + long now = 1000000L; + long resetAt = now + 3600 * 1000L; + assertEquals("Resets in 01:00:00", LongEventState.slotCountdownText("daily", resetAt, now)); + + long specialReset = now + 86400 * 1000L * 2 + 1800 * 1000L; + assertEquals("Resets in 2d 00:30:00", LongEventState.slotCountdownText("special", specialReset, now)); + assertEquals("Resets in 2d 00:30:00", LongEventState.slotCountdownText("weekly", specialReset, now)); + } + + @Test + void slotLookupAndRerollRules() { + assertEquals("Daily: once per day", LongEventState.rerollRuleText("daily")); + assertEquals("Special: once every 3 days", LongEventState.rerollRuleText("special")); + assertEquals("Special: once every 3 days", LongEventState.rerollRuleText("weekly")); + assertEquals("Repeatable: every 3 hours", LongEventState.rerollRuleText("repeatable")); + assertEquals("Repeatable: every 3 hours", LongEventState.rerollRuleText("repeatable2")); + + LongEventState.Slot daily = new LongEventState.Slot("daily", 100L, 1, "WTP", "WTP 1", 0, 3, 10, false, true, 0L, "", ""); + LongEventState.Slot special = new LongEventState.Slot("special", 200L, 2, "NOTG", "NOTG 1", 0, 3, 15, false, true, 0L, "", ""); + LongEventState state = new LongEventState(true, 1000L, 0, 0, 0, true, "", List.of(daily, special), List.of()); + + assertTrue(state.repeatSlot2Active()); + assertNotNull(state.findSlot("daily")); + assertEquals("WTP", state.findSlot("daily").tag()); + assertNotNull(state.findSlot("special")); + assertEquals("NOTG", state.findSlot("special").tag()); + assertNotNull(state.findSlot("weekly")); // fallback alias + assertEquals("NOTG", state.findSlot("weekly").tag()); + assertNull(state.findSlot("repeatable")); + } + + @Test + void slotPurchasedRerollState() { + LongEventState.Slot daily = new LongEventState.Slot("daily", 100L, 1, "WTP", "WTP 1", 0, 3, 10, false, false, true, 5000L, "", ""); + LongEventState state = new LongEventState(true, 1000L, 0, 5, 8, "", List.of(daily), List.of()); + + assertEquals(5, state.rerollCost()); + assertEquals(8, state.triviaPoints()); + assertFalse(daily.canReroll()); + assertTrue(daily.canBuyReroll()); + assertEquals(5000L, daily.rerollAtMs()); + } +} From c865f3d7335497e99616ba7ee4949aa4c5346839 Mon Sep 17 00:00:00 2001 From: burgerfan41 <87437687+burgerfan41@users.noreply.github.com> Date: Sun, 25 Oct 2026 16:08:55 +0400 Subject: [PATCH 2/3] Use the bot's self flag for own event wins and show event errors on screen - Your own completions come flagged "self" from the bot, so they're recognised even when the bot's stored name lags an IGN change. The "You've completed" rewording no longer needs the name to match. - The bot's error fallback (no slots, an error) no longer replaces the last good state, so one failed request doesn't blank the Event screen. - A refused reroll or failed request shows in red in place of the screen title for 5 seconds; chat isn't visible while the screen is open. - Reroll tooltips say "Points", matching the bot. --- src/tel/eden/mod/EdenModClient.java | 49 ++++++++++--------- src/tel/eden/mod/gui/LongEventScreen.java | 12 +++-- .../eden/mod/net/BridgeWebSocketClient.java | 12 +++-- src/tel/eden/mod/net/LongEventState.java | 8 +++ .../chat/EventAnnouncementFormattingTest.java | 32 +++++------- test/tel/eden/mod/net/LongEventStateTest.java | 16 ++++++ 6 files changed, 78 insertions(+), 51 deletions(-) diff --git a/src/tel/eden/mod/EdenModClient.java b/src/tel/eden/mod/EdenModClient.java index 1dbe8d5..489f600 100644 --- a/src/tel/eden/mod/EdenModClient.java +++ b/src/tel/eden/mod/EdenModClient.java @@ -275,6 +275,9 @@ public boolean onWynncraft() { private volatile String giveawayError; private final java.util.concurrent.atomic.AtomicInteger giveawayGeneration = new java.util.concurrent.atomic.AtomicInteger(); private volatile LongEventState knownLongEventState; + // Last long-event error (a refused reroll, a failed request), shown briefly on the Event screen. + private volatile String longEventError = ""; + private volatile long longEventErrorAtMs; private final java.util.concurrent.atomic.AtomicInteger longEventGeneration = new java.util.concurrent.atomic.AtomicInteger(); // GitHub update check: run once per game session; the prompt offers a one-click // download (applied on game close) and a link to the release page. @@ -517,6 +520,11 @@ public LongEventState knownLongEventState() { return knownLongEventState; } + /** The last long-event error if it arrived in the past 5 seconds, else {@code ""}. */ + public String recentLongEventError() { + return System.currentTimeMillis() - longEventErrorAtMs < 5_000L ? longEventError : ""; + } + /** Bumped on every long-event state snapshot; 0 means none has arrived yet. */ public int longEventGeneration() { return longEventGeneration.get(); @@ -1245,7 +1253,7 @@ public void onConnectionRejected(String code) { } @Override - public void onPillMessage(String label, String content, String colorHex, boolean bold) { + public void onPillMessage(String label, String content, String colorHex, boolean bold, boolean own) { if (GAMES_PILL_LABEL.equals(label) && config.gameDisplayMode != BridgeConfig.GameDisplayMode.ALL) { // React Only still shows your own coinflip/diceroll result; every // other "eden"-labelled message (streaks, gambit resets, reward @@ -1268,15 +1276,12 @@ public void onPillMessage(String label, String content, String colorHex, boolean } Integer finalColorRgb = colorRgb; if ("EVENT".equals(label)) { - display(() -> { - String self = playerName(); - boolean isOwn = isOwnEventAnnouncement(content, self); - if (!isOwn && !config.eventAnnouncements) { - return null; - } - String finalContent = isOwn ? formatOwnEventAnnouncement(content, self) : content; - return DiscordChatFormatter.pill(label, finalContent, finalColorRgb, bold); - }); + // The bot flags your own completions (own), so this never depends on name matching. + if (!own && !config.eventAnnouncements) { + return; + } + String finalContent = own ? formatOwnEventAnnouncement(content) : content; + display(() -> DiscordChatFormatter.pill(label, finalContent, finalColorRgb, bold)); return; } display(() -> DiscordChatFormatter.pill(label, content, finalColorRgb, bold)); @@ -1330,6 +1335,8 @@ public void onAllyActivity(java.util.List entries) { @Override public void onLongEventState(LongEventState state, boolean hasSnapshot) { if (state.error() != null && !state.error().isEmpty()) { + longEventError = state.error(); + longEventErrorAtMs = System.currentTimeMillis(); display(() -> DiscordChatFormatter.systemLine(state.error(), ChatFormatting.RED)); } if (hasSnapshot || knownLongEventState == null) { @@ -1829,22 +1836,14 @@ private static boolean isOwnGameResult(String content) { return name != null && content.contains(name); } - public static boolean isOwnEventAnnouncement(String content, String self) { - if (content == null || self == null || self.isBlank()) { - return false; - } - String pattern = "^\\S+\\s+" + java.util.regex.Pattern.quote(self) + "\\s+(completed|unlocked)\\b"; - return java.util.regex.Pattern.compile(pattern, java.util.regex.Pattern.CASE_INSENSITIVE).matcher(content).find(); - } + private static final java.util.regex.Pattern OWN_EVENT_LINE = java.util.regex.Pattern.compile("\\A(\\S+\\s+)\\S+\\s+(completed|unlocked)\\b"); - public static String formatOwnEventAnnouncement(String content, String self) { - if (content == null || self == null || self.isBlank()) { - return content; + /** Reword your own event line: "⭐ Name completed …" becomes "⭐ You've completed …". */ + public static String formatOwnEventAnnouncement(String content) { + if (content == null) { + return null; } - String regexCompleted = "(?i)(\\A\\S+\\s+)" + java.util.regex.Pattern.quote(self) + "\\s+completed\\b"; - String replaced = content.replaceFirst(regexCompleted, "$1You've completed"); - String regexUnlocked = "(?i)(\\A\\S+\\s+)" + java.util.regex.Pattern.quote(self) + "\\s+unlocked\\b"; - return replaced.replaceFirst(regexUnlocked, "$1You've unlocked"); + return OWN_EVENT_LINE.matcher(content).replaceFirst("$1You've $2"); } private int openOverviewGui(FabricClientCommandSource source) { @@ -2743,6 +2742,8 @@ private synchronized void disconnect() { eventRewardsPendingId.set(0); knownLongEventState = null; longEventGeneration.set(0); + longEventError = ""; + longEventErrorAtMs = 0L; // Before the socket goes: an outstanding deduct must not outlive the session that // made it, or it resurfaces at the next connect naming a player from another // server β€” or, after an account switch, another guild. diff --git a/src/tel/eden/mod/gui/LongEventScreen.java b/src/tel/eden/mod/gui/LongEventScreen.java index 6398718..89d5ed4 100644 --- a/src/tel/eden/mod/gui/LongEventScreen.java +++ b/src/tel/eden/mod/gui/LongEventScreen.java @@ -162,7 +162,13 @@ public void render(GuiGraphics g, int mouseX, int mouseY, float delta) { super.render(g, scaledMouseX, scaledMouseY, delta); // Header - g.drawCenteredString(this.font, "Event", layout.centerX(), layout.y(10), 0xFFFFFFFF); + // A refused reroll or failed request replaces the title for a few seconds; chat is hidden here. + String recentError = mod.recentLongEventError(); + if (recentError.isEmpty()) { + g.drawCenteredString(this.font, "Event", layout.centerX(), layout.y(10), 0xFFFFFFFF); + } else { + drawFittedCenteredString(g, recentError, layout.centerX(), layout.y(10), layout.w(250), 0xFFFF5555); + } if (state != null && state.active()) { String pendingText = "Pending: " + state.pendingLe() + " LE"; g.drawString(this.font, pendingText, layout.x(12), layout.y(10), 0xFFFFD24A); @@ -513,10 +519,10 @@ private List buildRerollTooltip(String slotKey, LongEventState.Slot s lines.add(Component.empty()); if (slot.canBuyReroll()) { lines.add(Component.literal("Shift-Click to buy extra reroll").withStyle(ChatFormatting.AQUA)); - lines.add(Component.literal("Cost: " + cost + " Trivia Points (You have " + pts + ")").withStyle(ChatFormatting.DARK_AQUA)); + lines.add(Component.literal("Cost: " + cost + " Points (You have " + pts + ")").withStyle(ChatFormatting.DARK_AQUA)); } else { lines.add(Component.literal("Shift-Click to buy extra reroll").withStyle(ChatFormatting.DARK_GRAY)); - lines.add(Component.literal("Requires " + cost + " Trivia Points (You have " + pts + ")").withStyle(ChatFormatting.RED)); + lines.add(Component.literal("Requires " + cost + " Points (You have " + pts + ")").withStyle(ChatFormatting.RED)); } } } diff --git a/src/tel/eden/mod/net/BridgeWebSocketClient.java b/src/tel/eden/mod/net/BridgeWebSocketClient.java index 519ae23..7d89840 100644 --- a/src/tel/eden/mod/net/BridgeWebSocketClient.java +++ b/src/tel/eden/mod/net/BridgeWebSocketClient.java @@ -132,9 +132,10 @@ default void onRewardOptOutReply(String rewardKind, boolean blocked, String erro * announcements): a pill labelled {@code label}, then {@code content}. * {@code colorHex} is an optional {@code "RRGGBB"} override; empty means the * default gold. {@code bold} makes a message that needs to stand out further - * than color alone (e.g. the storage-nearly-full warning). + * than color alone (e.g. the storage-nearly-full warning). {@code own} is the + * bot's {@code self} flag: the line is about this player (their own event win). */ - void onPillMessage(String label, String content, String colorHex, boolean bold); + void onPillMessage(String label, String content, String colorHex, boolean bold, boolean own); /** * Offline mail the bot held for this player ({@code mailDelivery}), sent when the @@ -1394,7 +1395,7 @@ private void handlePayload(String payload) { case "partyListReply" -> sink.onPartyList(parsePartyList(obj), get(obj, "color")); case "partyFeedback" -> sink.onPartyFeedback(get(obj, "message"), get(obj, "color")); case "gameFeedback" -> sink.onGameFeedback(get(obj, "message"), get(obj, "color")); - case "pillMessage" -> sink.onPillMessage(get(obj, "label"), get(obj, "content"), get(obj, "color"), getBool(obj, "bold")); + case "pillMessage" -> sink.onPillMessage(get(obj, "label"), get(obj, "content"), get(obj, "color"), getBool(obj, "bold"), getBool(obj, "self")); case "mailDelivery" -> sink.onMailDelivery(parseMail(obj)); case "warCountsReply" -> sink.onWarCounts(getInt(obj, "days", 7), parseWarCounts(obj), get(obj, "requester"), get(obj, "color")); case "allyActivityReply" -> sink.onAllyActivity(parseAllyActivity(obj)); @@ -1405,7 +1406,10 @@ private void handlePayload(String payload) { case "tccMapPos" -> sink.onTccMapPos(get(obj, "sender"), get(obj, "senderUuid"), getDouble(obj, "x", 0.0), getDouble(obj, "y", 0.0), getDouble(obj, "z", 0.0), getFloat(obj, "yaw", 0.0f), getBool(obj, "isWings")); case "tccGolemDefeated" -> sink.onTccGolemDefeated(get(obj, "sender"), get(obj, "golemId")); case "tccExitReached" -> sink.onTccExitReached(get(obj, "sender"), get(obj, "path"), getDouble(obj, "x", 0.0), getDouble(obj, "z", 0.0)); - case "longEventState" -> sink.onLongEventState(parseLongEventState(obj), obj.has("active") || obj.has("slots")); + case "longEventState" -> { + LongEventState state = parseLongEventState(obj); + sink.onLongEventState(state, state.isSnapshot()); + } case "longEventRewards" -> sink.onLongEventRewards(getInt(obj, "pendingLe", 0), get(obj, "error")); case "authChallenge" -> handleAuthChallenge(get(obj, "serverId")); case "authOk" -> { diff --git a/src/tel/eden/mod/net/LongEventState.java b/src/tel/eden/mod/net/LongEventState.java index cb3a546..a481547 100644 --- a/src/tel/eden/mod/net/LongEventState.java +++ b/src/tel/eden/mod/net/LongEventState.java @@ -42,6 +42,14 @@ public record Master(String kind, String title, int tier, int tierCount, int pro } } + /** + * Whether this reply carries the player's real state. The bot's error fallback + * ({@code active=false}, no slots, an error) doesn't, so it must not replace a good snapshot. + */ + public boolean isSnapshot() { + return error.isEmpty() || !slots.isEmpty(); + } + /** Find a slot by its identifier ({@code "daily"}, {@code "special"}, {@code "repeatable"}, {@code "repeatable2"}). */ public Slot findSlot(String slotName) { for (Slot s : slots) { diff --git a/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java b/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java index 621d373..9b1a76c 100644 --- a/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java +++ b/test/tel/eden/mod/chat/EventAnnouncementFormattingTest.java @@ -1,8 +1,7 @@ package tel.eden.mod.chat; import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertFalse; -import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertNull; import org.junit.jupiter.api.Test; import tel.eden.mod.EdenModClient; @@ -10,26 +9,19 @@ class EventAnnouncementFormattingTest { @Test - void testOwnEventAnnouncementDetection() { - String self = "Good627"; - assertTrue(EdenModClient.isOwnEventAnnouncement("πŸ” Good627 completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); - assertTrue(EdenModClient.isOwnEventAnnouncement("⭐ good627 completed Daily Mission (NOL 1) β€” +8 LE!", self)); - assertTrue(EdenModClient.isOwnEventAnnouncement("🎯 Good627 completed Weekly Mission (WTP 2) β€” +16 LE!", self)); - assertTrue(EdenModClient.isOwnEventAnnouncement("πŸ† Good627 unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); - - assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ” SomeoneElse completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); - assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ† SomeoneElse unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); - assertFalse(EdenModClient.isOwnEventAnnouncement("Some random chat mentioning Good627 completed", self)); - assertFalse(EdenModClient.isOwnEventAnnouncement(null, self)); - assertFalse(EdenModClient.isOwnEventAnnouncement("πŸ” Good627 completed Repeatable", null)); + void testOwnEventAnnouncementFormatting() { + assertEquals("πŸ” You've completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ” Good627 completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!")); + assertEquals("⭐ You've completed Daily Mission (NOL 1) β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("⭐ good627 completed Daily Mission (NOL 1) β€” +8 LE!")); + assertEquals("🎯 You've completed Special Mission (WTP 2) β€” +16 LE!", EdenModClient.formatOwnEventAnnouncement("🎯 Good627 completed Special Mission (WTP 2) β€” +16 LE!")); + assertEquals("πŸ† You've unlocked All Raids Objective Tier 1 (10 raids)β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ† Good627 unlocked All Raids Objective Tier 1 (10 raids)β€” +8 LE!")); } @Test - void testOwnEventAnnouncementFormatting() { - String self = "Good627"; - assertEquals("πŸ” You've completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ” Good627 completed Repeatable Mission (Complete any single raid 3 times) β€” +3 LE!", self)); - assertEquals("⭐ You've completed Daily Mission (NOL 1) β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("⭐ good627 completed Daily Mission (NOL 1) β€” +8 LE!", self)); - assertEquals("🎯 You've completed Weekly Mission (WTP 2) β€” +16 LE!", EdenModClient.formatOwnEventAnnouncement("🎯 Good627 completed Weekly Mission (WTP 2) β€” +16 LE!", self)); - assertEquals("πŸ† You've unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", EdenModClient.formatOwnEventAnnouncement("πŸ† Good627 unlocked All Raids Master Tier 1 (10 raids) β€” +8 LE!", self)); + void ownLineIsRewordedEvenWhenTheStoredNameIsStale() { + // The bot's name can lag an IGN change; the self flag still marks the line, and the + // rewording doesn't need the name to match. + assertEquals("🎯 You've completed Special Mission (WTP 2) β€” +16 LE!", EdenModClient.formatOwnEventAnnouncement("🎯 OldName completed Special Mission (WTP 2) β€” +16 LE!")); + assertEquals("not an event line", EdenModClient.formatOwnEventAnnouncement("not an event line")); + assertNull(EdenModClient.formatOwnEventAnnouncement(null)); } } diff --git a/test/tel/eden/mod/net/LongEventStateTest.java b/test/tel/eden/mod/net/LongEventStateTest.java index 58b4038..7cb7f3d 100644 --- a/test/tel/eden/mod/net/LongEventStateTest.java +++ b/test/tel/eden/mod/net/LongEventStateTest.java @@ -61,6 +61,22 @@ void slotLookupAndRerollRules() { assertNull(state.findSlot("repeatable")); } + @Test + void errorFallbackIsNotASnapshot() { + LongEventState.Slot daily = new LongEventState.Slot("daily", 100L, 1, "WTP", "WTP 1", 0, 3, 10, false, true, 0L, "", ""); + // The bot's fallback after an internal error: inactive, no slots, an error. + assertFalse(new LongEventState(false, 0L, 0, "Something went wrong - try again.", List.of(), List.of()).isSnapshot()); + // A refused reroll still carries the real slots, and a quiet "no event" reply has no error. + assertTrue(new LongEventState(true, 1000L, 0, "Daily reroll already used today.", List.of(daily), List.of()).isSnapshot()); + assertTrue(new LongEventState(false, 0L, 0, "", List.of(), List.of()).isSnapshot()); + } + + @Test + void parsedFallbackKeepsTheLastGoodState() { + com.google.gson.JsonObject fallback = com.google.gson.JsonParser.parseString("{\"type\":\"longEventState\",\"active\":false,\"endsAtMs\":0,\"pendingLe\":0,\"error\":\"Something went wrong - try again.\",\"slots\":[],\"masters\":[]}").getAsJsonObject(); + assertFalse(BridgeWebSocketClient.parseLongEventState(fallback).isSnapshot()); + } + @Test void slotPurchasedRerollState() { LongEventState.Slot daily = new LongEventState.Slot("daily", 100L, 1, "WTP", "WTP 1", 0, 3, 10, false, false, true, 5000L, "", ""); From 115d7c19a0d012a0b246e4189de7cffe0a2acd3a Mon Sep 17 00:00:00 2001 From: Good627 <193092356+Good627@users.noreply.github.com> Date: Sun, 25 Oct 2026 16:17:08 +0300 Subject: [PATCH 3/3] fix(event): prevent collision of completed text, progress count, and reward in mission cards --- src/tel/eden/mod/gui/LongEventScreen.java | 25 +++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/src/tel/eden/mod/gui/LongEventScreen.java b/src/tel/eden/mod/gui/LongEventScreen.java index 89d5ed4..7e8b968 100644 --- a/src/tel/eden/mod/gui/LongEventScreen.java +++ b/src/tel/eden/mod/gui/LongEventScreen.java @@ -286,13 +286,16 @@ public void render(GuiGraphics g, int mouseX, int mouseY, float delta) { int statY = cardY + layout.h(69); int padX = cardX + layout.w(6); int rightX = cardX + cardW - layout.w(6); - String progStr = slot.progress() + "/" + slot.target(); String rewardStr = "+" + slot.rewardLe() + " LE"; - g.drawString(this.font, progStr, padX, statY, 0xFFDDDDDD); + int rewardW = this.font.width(rewardStr); + int maxLeftW = Math.max(10, rightX - padX - rewardW - 4); if (completed) { - g.drawCenteredString(this.font, "Completed", cardCenterX, statY, 0xFF55FF55); + drawFittedString(g, "Completed", padX, statY, maxLeftW, 0xFF55FF55); + } else { + String progStr = slot.progress() + "/" + slot.target(); + drawFittedString(g, progStr, padX, statY, maxLeftW, 0xFFDDDDDD); } - g.drawString(this.font, rewardStr, rightX - this.font.width(rewardStr), statY, 0xFFFFD24A); + g.drawString(this.font, rewardStr, rightX - rewardW, statY, 0xFFFFD24A); // Progress bar int barY = cardY + layout.h(80); @@ -529,6 +532,20 @@ private List buildRerollTooltip(String slotKey, LongEventState.Slot s return lines; } + private void drawFittedString(GuiGraphics g, String text, int x, int y, int maxWidth, int color) { + int textW = this.font.width(text); + if (textW <= maxWidth || textW <= 0) { + g.drawString(this.font, text, x, y, color); + return; + } + float s = maxWidth / (float) textW; + g.pose().pushMatrix(); + g.pose().translate(x, y); + g.pose().scale(s, s); + g.drawString(this.font, text, 0, 0, color); + g.pose().popMatrix(); + } + private void drawFittedCenteredString(GuiGraphics g, String text, int centerX, int y, int maxWidth, int color) { int textW = this.font.width(text); if (textW <= maxWidth || textW <= 0) {