From 6e2807b291b844e25d8cbcd8f0b8d1bdadc66fbd Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Mon, 19 Aug 2024 21:59:57 +0800 Subject: [PATCH 01/25] Update JVMActivity.java --- .../main/java/com/tungsten/fcl/activity/JVMActivity.java | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/activity/JVMActivity.java b/FCL/src/main/java/com/tungsten/fcl/activity/JVMActivity.java index c62c997c..fd30d4ba 100644 --- a/FCL/src/main/java/com/tungsten/fcl/activity/JVMActivity.java +++ b/FCL/src/main/java/com/tungsten/fcl/activity/JVMActivity.java @@ -14,12 +14,11 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import com.tungsten.fcl.R; -import com.tungsten.fcl.control.MenuCallback; -import com.tungsten.fcl.control.MenuType; import com.tungsten.fcl.control.GameMenu; import com.tungsten.fcl.control.JarExecutorMenu; +import com.tungsten.fcl.control.MenuCallback; +import com.tungsten.fcl.control.MenuType; import com.tungsten.fcl.setting.GameOption; -import com.tungsten.fcl.setting.MenuSetting; import com.tungsten.fclauncher.bridge.FCLBridge; import com.tungsten.fclauncher.keycodes.FCLKeycodes; import com.tungsten.fclcore.util.Logging; @@ -116,9 +115,6 @@ public class JVMActivity extends FCLActivity implements TextureView.SurfaceTextu @Override public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surfaceTexture) { - if (textureView != null && textureView.getSurfaceTexture() != null) { - textureView.post(() -> onSurfaceTextureSizeChanged(textureView.getSurfaceTexture(), textureView.getWidth(), textureView.getHeight())); - } if (output == 1) { menu.onGraphicOutput(); output++; From 717af24098cb1a7312a8ded5014ba09ce4c599d4 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Tue, 20 Aug 2024 10:45:31 +0800 Subject: [PATCH 02/25] fix manually install modpack --- .../tungsten/fcl/game/ManuallyCreatedModpackInstallTask.java | 4 +++- FCL/src/main/java/com/tungsten/fcl/game/ModpackHelper.java | 5 +++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/game/ManuallyCreatedModpackInstallTask.java b/FCL/src/main/java/com/tungsten/fcl/game/ManuallyCreatedModpackInstallTask.java index 1ded36c9..fc5a4d15 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/ManuallyCreatedModpackInstallTask.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/ManuallyCreatedModpackInstallTask.java @@ -17,6 +17,8 @@ */ package com.tungsten.fcl.game; +import android.os.Environment; + import com.tungsten.fcl.setting.Profile; import com.tungsten.fclcore.task.Task; import com.tungsten.fclcore.util.io.CompressingUtils; @@ -48,7 +50,7 @@ public class ManuallyCreatedModpackInstallTask extends Task { subdirectory = ModpackHelper.findMinecraftDirectoryInManuallyCreatedModpack(zipFile.toString(), fs); } - Path dest = Paths.get("externalgames").resolve(name); + Path dest = Paths.get(Environment.getExternalStorageDirectory().getAbsolutePath() + "/FCL").resolve(name); setResult(dest); diff --git a/FCL/src/main/java/com/tungsten/fcl/game/ModpackHelper.java b/FCL/src/main/java/com/tungsten/fcl/game/ModpackHelper.java index 7d50a235..83d8799d 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/ModpackHelper.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/ModpackHelper.java @@ -21,12 +21,13 @@ import static com.tungsten.fclcore.util.Lang.mapOf; import static com.tungsten.fclcore.util.Lang.toIterable; import static com.tungsten.fclcore.util.Pair.pair; +import android.os.Environment; + import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.tungsten.fcl.setting.Profile; import com.tungsten.fcl.setting.Profiles; import com.tungsten.fcl.setting.VersionSetting; -import com.tungsten.fclcore.game.GameDirectoryType; import com.tungsten.fclcore.mod.MismatchedModpackTypeException; import com.tungsten.fclcore.mod.Modpack; import com.tungsten.fclcore.mod.ModpackCompletionException; @@ -181,7 +182,7 @@ public final class ModpackHelper { } public static boolean isExternalGameNameConflicts(String name) { - return Files.exists(Paths.get("externalgames").resolve(name)); + return Files.exists(Paths.get(Environment.getExternalStorageDirectory().getAbsolutePath() + "/FCL").resolve(name)); } public static Task getInstallManuallyCreatedModpackTask(Profile profile, File zipFile, String name, Charset charset) { From 429667ac2923a2544c824dfa72595d982181d5d8 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Tue, 20 Aug 2024 14:36:49 +0800 Subject: [PATCH 03/25] #523 --- .../res/drawable/ic_launcher_background.xml | 4 ++++ .../res/mipmap-anydpi-v26/ic_launcher.xml | 2 +- .../mipmap-anydpi-v26/ic_launcher_round.xml | 2 +- FCL/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 3511 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.png | Bin 7971 -> 0 bytes .../mipmap-hdpi/ic_launcher_foreground.webp | Bin 0 -> 7988 bytes FCL/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 1960 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.png | Bin 4174 -> 0 bytes .../mipmap-mdpi/ic_launcher_foreground.webp | Bin 0 -> 4512 bytes FCL/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 5625 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.png | Bin 12311 -> 0 bytes .../mipmap-xhdpi/ic_launcher_foreground.webp | Bin 0 -> 11776 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 10468 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.png | Bin 22091 -> 0 bytes .../mipmap-xxhdpi/ic_launcher_foreground.webp | Bin 0 -> 20356 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 15923 -> 0 bytes .../mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 33629 -> 0 bytes .../ic_launcher_foreground.webp | Bin 0 -> 30626 bytes FCL/src/main/res/values-v31/themes.xml | 22 ++++++++++++++++++ 19 files changed, 28 insertions(+), 2 deletions(-) create mode 100644 FCL/src/main/res/drawable/ic_launcher_background.xml delete mode 100644 FCL/src/main/res/mipmap-hdpi/ic_launcher.png delete mode 100644 FCL/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 FCL/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp delete mode 100644 FCL/src/main/res/mipmap-mdpi/ic_launcher.png delete mode 100644 FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp delete mode 100644 FCL/src/main/res/mipmap-xhdpi/ic_launcher.png delete mode 100644 FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp delete mode 100644 FCL/src/main/res/mipmap-xxhdpi/ic_launcher.png delete mode 100644 FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp delete mode 100644 FCL/src/main/res/mipmap-xxxhdpi/ic_launcher.png delete mode 100644 FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp create mode 100644 FCL/src/main/res/values-v31/themes.xml diff --git a/FCL/src/main/res/drawable/ic_launcher_background.xml b/FCL/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 00000000..424ccb10 --- /dev/null +++ b/FCL/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index c5c9e8f5..c4a603d4 100644 --- a/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher.xml +++ b/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index c5c9e8f5..c4a603d4 100644 --- a/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml +++ b/FCL/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,5 +1,5 @@ - + \ No newline at end of file diff --git a/FCL/src/main/res/mipmap-hdpi/ic_launcher.png b/FCL/src/main/res/mipmap-hdpi/ic_launcher.png deleted file mode 100644 index e7232767142532c79d3be62837131198d5304811..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3511 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 F{2%UGLm>bF diff --git a/FCL/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/FCL/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..c4b6364d8a6ff84d82c644cf0d6d6fd86f9a6cbf GIT binary patch literal 7988 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 diff --git a/FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.png deleted file mode 100644 index 3a2d56296becf4dd9d069d3b622f08c298946044..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4174 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 diff --git a/FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/FCL/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..4a0ce27d7da955f7a57fc69a0c4ed39a5c88bca9 GIT binary patch literal 4512 zcmV;R5nt|7Nk&GP5dZ*JMM6+kP&iDB5dZ)$Yrq;1O)zRB$ec{L%pQy@7-bG3Q^Mt9#(Rad`Uu!(Hj$qFDm38eB@_}7Av*!=(s*hrGCWd8rS zJA@ii-2Xfjp@vSeiEP`+{!snu3rHxyzZ^;i0hyxz699jAQUOpaa5DiA$=ttNBC(hO zd1pEcW5<2Ve9HAm7TT7<8_{h!Z^NreUfX&Z91-0e=hB)+Q(aPBGZ6d{y^)y)y9G)e z;QtC+*tQ*#Bt75%M`lEpt5H2|&f2zZn@8R~v~3*q?vZWV-fi3Np0cY_k@5fET9I=) z*EijMXxlceZQHii=UiKdb=kIU+t-!e%ge~g z-xw$)`6;7LjJ02*tUcFG{*^tM{7E?c!@fye)j53Knz#Sz4`(SP|1a(5ABB(k@9!Uv ze>{7Xzqjrlk38|0o6VeU@_Hu+FYf-=Evp-Uxf^G%I#WC6HW#DGG^F`2RbrbEs4}Cj zdgn`D`VxPt-ZeHgyG_J8xswO-aM$J4;}>4?gW34nzs=A5-yhEXd0OC~fAwU@1^|Bh zcN9zK#$RargT#}JFT2K?Tpc2LRcVs6vA=l9%6~;`J`aO#t|7YEAusUbKf4W{e>f34 z;P`HySd&l-f$zyo)p1RnsqfM2`DFl0(9el0M$18FKRKmXrGw9%3p z8Hv#AtuJuupR9yh_i;ocb{lo4xCE)%?h8P7z-Q7oGd7n_Ui5MDwM4E2o&pT`7w8U@ z1*QYK=gP_#E235mk?^>+OSkWB3Y1aNj(BlW#|!r#SQ2LJU@7bGKidCpGJxHVnEnpO zi}ONq7jn=K2^V`)1>l2U^uM-0W`>P(Tc7!6WPM)_&^^Bj$u>gC7JLH41MDf4E1a1t zf|Kqx_tGO5`&&jF>om(V?Tx4v}#w<3+0d2{R%x zNficu{_XO2R*vg*&NuVhBJtZwuF7|j-xJd#q-avdfp5&7-;IhuSE>Czq> zSS4?l8F2fY4O2`qz~cUa^-gaC^A5QyPk@X7A!{B^Chi5xhdX)__5z~;KfdsrX}>jn zZ_{`>X{8a`(PUB?^T@`LKkRTyn0_*C zS^x?;9z3QnV2!HUHJ~|i;x&tL=K#06piR^$P@N!aBkP-Au4>N zy>Tm=(i~ckD#D7ELJ#=H&BmF3KCb&p`0r~GwI|KbX|4l6Y!75{j2gh*fA-7u&*VPT zc|BQ|*aE4msd}k$uzGFSfuy `1B!QopezJ>IE9+f*Id%xY&j2yQ=$FzO)2I#8oE z``G!ui?2Wa-cLWg4Wro`Sf3V<1n_Fec1xn?3jEHoJpg|DhxRO$#x`E>`aM2P+Z}v~ z9?K$vJ?x_!zci+#e~u%c^z500TT&c)pVJ?N4d|_G))}Kt-*DnJfh5MY zlWrG42RP7~H8=1R;Gf=N`_YD8@-tv(S8x%NHF;KzDy>FY1I!r-%|HM%Q*b!+X{TG} z^o&%Rz5n^m@*{WK(8y@@Czn~5Q&JmvBL&qV)qtD-Y@;5OYIpq}_@^uI-1Dk>@!2#5 z(Mo_wb2NZTVgL}#3`@aS{A|CLop;EO5P;bXh`GmP!;q6e$25GJbsvE~11lb56~yeF;d{@3vAzc{au3I#xF)oHI{ zr~m~w3oyVdE9{HKO0GS;_dDDBFHOZ`t@5^oYO!nOJ*(dxdKZv&aqHm^Ob;HJso(O# z&;54%Q$G5;=;mF!B$eAk`mk@vJlm@EI1NNfb&%?i!B8=6r8cFG!3c4xPL28$H|)ic zZO#63Z{g3IrN4yEdO*NPfETt}Ymk5dIt~Hdpti@umaS{k3t@Htl}9i9&U74^(IYd1 z=ML$)`NK+=;bwg9!1 z_1^Vn#8OMWW!T)HW06i07dKK9aLA8T$)eX~fiB!M1SOfn}; zz{Zc)ak@kg+IaIvWUk@i=8?4f=T?c(*`eaEO>13xc(d!pMf1ax{LUS}z0!4rGn242 z>$L(<05BvmJXn!i-bGbAwdpIP<*o-V{+_H{I9lFRpLwdKV`KrmH)^z3vABl*pC7o3 zlU&`5)D#7^i7Jie)GGW~B5DHGET_KogA1>F^MS9t|H85FrB7eaX!wY zbCu54t+5MnqRP2V21mly5T_+hTCAZ3SOAwptb!Qnu%ugyUX|8`=kjyUWD5t?{+{F} zgwT_}bn%n@MTna0q?KvebqW>BNX`Nn6>%D1GBh z_;j_{x%$NJm3RF4;ECV-ZJ3{*^`}L6V$~d?eg^fELu3DuaJGdJVl4^)2v@I)BvtT( zAsI}PUh-YJN=fG+?Y&Y-spd)QS)~l~=i%&a2S5Gp_q_GtKijtVFJAQ5UvVoKd^TXI z6}J_ScBDjLz@kB{8wG+!b{}bf_fq@I|M0v2PA+bpo4@@TS-^F3f48dpKcdzgV`@j3 z`*SEZl2k<_#WFyU3VvRdrAg9DNpF?*7f~}UL$$NW)M~A&o+V|nuolKH$K1IMi_@(> zda1rUHBO5JEz)sAk^!_fln4_s1S~Dc^3cc$z}Zc)V=?+qaNiT$`Uu_B)7@L2{$v&Z z6r(I|XnIdr-j%{MxB)7w%FZvm?b2t{Tl!eu4^ax=Cz7|hRj@Hy^$jBd)x^t-n;O?u!rbodjiZ|p;I?#`;iJCz2_<#XdVJTZCA15scE4uHd=7C`bw zofg|kWiBNZumFY?T0@D7Nkx`7kq@N>0FcHoG)~Z@Q~c~Awn^K7!R&4eS!wEtGx1z$fr`@nq{4ksMv}st!x-U)Sg%JXn8Ahy= zme9YA9lLSQ?uo|`HX$!1z*WJ8!~qG~?78Jw*|}k5=Z$z;zdCf3Ly|SO9}YE%r4g7`;H>d*~gH`{iG? zXZL=6$1~&0Cm#c)0HwY)=OJygtVTL7I0aEsHq;?Z&R_t{2w*v>YJmX9BYY%=kB!sG zR%a-G>69}TQ>f$|vK+8z8m*uK46DxDT1TH?j~q&~7FSV}5QT^e83QOc-a=j-IBPrV z#B5!pv2+l#D8K+1(J-#j9wdMU+BO56Ea|&V7&Qu{D7MlGs!gcmz~Kc;LB|6Yz^t7f zq6~=xNI-B>DIlR$L?{^|C~7CQy9*&~*QQMngAwAiXaEo<(6$jpqZpQkVgsFk0ssNs zRy+%x!mwh9y*u1`u2>Iqd}5HFaawh_P5(RbM-m874+(M>MwUXB3?&1Ccgka!NTrs` z3blxYR@IOc#Yv0PhCwujFKF2S%#0ekjkt+$EW~wbD=dHlRii2V{Ut6r5qu{111&vP za6!*bLXrSS0$>z^Sty2*DTJ6dm1?z_G)+55P?VutfxAz!v4#{;?=gM_!g7Cd^4!}x zxd6`xGSNiKx&)Z?mlj}i5XEq5N761EypSjn+5=;l9@WhGtwjY(mnXo^$VYli6tAw z=Ttp_cs#{vAOKKcI5-CoGz9@e$q+G7nAB`hv$_``2q6^#6J;~&1D{Gw1(2$(WFk`D zZQ8WBSz5zYh=!$2YwUsB6J!zqv3tyEf)Qyw)jiHgcc{@zss=!+M5?sPBY=EHD2hli zluRLj1S~NW3?OJxQlSCH90pRk6XDJbc~w?>*d$#Z+%mXF8DX!yW0$`NAQh2ml=rKoCG#QkI}rD1erwO`03RRj5!hM+buzVh;fTMNv#m z)U06?)uz@hE}_WHQz8d*i?G2>tvNB|!@HU~vG2xPcHOpESd>ztk!XMhs0WMkr?-whP-mY$9AyTQ8`N01S$OAV5ewb2u*>PM9MmiP*I>jQGxKr5uy|YN4sh&A%S1vn1HvUz*^uRKvx8c1Iw$>bE8c% zLUTx^y3~?ZmoP~HIh}Fo3?v8!sC7=&dPP7dT8MxG6hJivRR}Z)fM}ouevD%g9JT|x zC{P2&njS`z4eUAE$u!yQvLP_d004=OKr%x^-{2NPd4oVh34#EjWmyqaXs}U3@ojJ} zYzF~d)@yDXU=?f?p=`D`7(OPq-<i=HQV_%m8i! zx-*alm;lTkhAej+>ONa~^61LP+Aq0}|Hh|DEuZSCPKgxV1bL&NAfw<-aZU%G19Wd7 zD=-%fs~X*TsArD!^x)y%(*c zT2XN#qPEpKs#ZnOT36ru{U<~zcyB4#B9QNS-sdDI=bZoKeZT)3CnpJyXEBRe%wiU^ zn8hq+F^kn610Wy>E#M$1&(EJ`=0VG^ukZGk@InKK$~+bmoC%%;k9rFB-Wdntr*ZU5 z4W;VRQcajZI6$~UxJf83UDhX<-!tQYaltrIm*wi28A?^9WdNa&fM0+86^|Z0vY-@< z4?hy&d$ybXWTst0R&sOZVi595#V=W7U0U2D({RjePj{fcTq-w+jHj3iDcYa1o#VK5uk=)5uk=)5uk=)5uk=)5uk=) z5uk=qX9c)-?;d{s`DYa0x`7Knox!!+mnv-YJfKbqz(~J-{W^}HD8QcmyYR1X{(%kq z=VQ&Tx3TxYDs~|1`ns^H$eyC^u3i(Ox@#J_Vt#m!sSD{NC))ENQp-@lKp z-8)0)XbYXe4((zZVZ*|)SUYDFwq%dN=Ea#PzIvg;er8;{bP4(S`Lz78!fWNhy#CPP zEtt3PEli(15_j&DRM@7ns51gE%$hL+4muqi?6rsp^v0*thG5Nm!?EW5kyuAUe1Cjj zg?$)KpFWM`lvK3ukc{p*p11Aa!xc$EQW*??an}LCy z(-7CN5dwpPk(ZZ8gqPsEBLnd1+z`z9doV8jkYC{(s*74Hz%NAn#fz*Gx$>L!3$wB? z{oUzUzH})*{$MHQzBdyS$B)O@H{T?T#HO5eShM;IL`F72TwE-6?D&di#Z4?*wj8g$ zHUe$hv`2dS%bd9Ec$dy?!?M{Ok+W(7mwd~gM|Dwa1z=z#6%%>p=PVZg_~RuCDPN*T zuNUAK5P-md5Tquhp zCF4VM><5pJd+(Q@Ig}s&S)f)6z`#gn9(*YOAf`;7h@=j!5Y{l1Jh?5#Pnd+%)Gkn~ zbujt_qDkXs*t}^APMtc10t!DY%yjFP2Jb*W^r6{twy21!f*8y*;Of<%aI2&Q4<0-b z#EkFGp2z8L&sA9eM^NhpxP19Cx_9e_pa4Jeb|WUg^EP(w+=;@IMJOsdh4mY9;OgcD z7Z*>Ac`Fk?{BR!sSh)(b-k*!F_w1p1{se{%9fIJXK)muoU)uj2OrAU$85v_Sa^xEr zG-wdkty_n?cPsV~cYeN$RckjRFaKzT*D8xzF97pmiPRd-&W;EP@qVMBI5{9}4gET52$7ZMvoDYt=CDuqI1jRb`e zYi2IR{a>C`Th9`;N&r^*oW1@Nrk*&2^aHz*F?lXtv5Ulu5-+q-XkkSn==C}@2nj&% z7kc2p!GkzY376p<&4hF3e&Cj;PoKfCL1~!%P8;mZc>|k2dmWp;_z?fuvH|Z+ornnP zAzm{Y@kvlKEYl@oj-)j{jTnrt*6+Y)m(F4Pwad8wuwqWA3Z8obSn|7di|TPA@tadc z*m?2GJ@o+L;SJHVM;gWNwOnOW7K;~W zBPcise!iY)-_je|)8a94SU5(#6p!ACK^W=ofjK_D_$aUeJ_?S(yUG3WM%Kp|xNkQm z9zTf9MJJH|{df4`+E2J!&Ff3gwE!h0cktooYq5Jz9*z~BMBd3lczVPk6YyLT#^y zf1sXbi#x^*48?@OVd$CQfi@v7h?i?HSm%H-I(Kvqh(N2w^D%Dk4y-6Rg3YH+AotWs z>>+13dioU3eES_&HQl;ZwJ!O&7U24gVkGw*hE`qrWAw}{e6e#E{zc?3K9-N+2lwFh zueOqB&c(|9nqvyIwCVN(LU=v4DR(ZMt4uglHsH9 zUhkJMG9n5owmJk`D-kABAzGnBfVDkb#cJ3I4)b}BuL5)BL@B`1JNAcvZuA=nF*a1(0~D%GQf(gj^KUg)DW zVu-V>mn^~COP6Bm z(q-6wpbiRfv*b294j9c5?--K=rU@f1W@rLQ1Ya3;3?3O=ZUerD9jKhV6lBXR#Ww|x=|C%^7ccT ztuqpgAxP@o69XcmF|c_n4CvJZfAb8%EO$SA92|-@jhkRC&90AJ;xNZL0aJMK7{P0d zZag14wiBB3961Cvh(X}{Q_-7dzyPYihLZppix*?p(IXYkzcP5P1t__52QB*#g|tx& zw9)Mz3&5V+kT=`%te_WI!H#bdLd&xul05Jh3GpsJ0rPatF+MpR{j#!=PH}t0u3SvX z-HLbj?7*lac^LFnF5Vn59@#Ww^j7N8U#mkuO70zmdN^3AAdhQ~;JNQ2 zCF^~}&7TGL>Eq!)a}u_nDXMV(mBDi@fEl^D+aOSCAodG|Rl_LoiF`g!02xor%>X8V z8SFU=O*S@ml(3@^{lY*@TKW+-=Iz6-V@Gk|#0l)DeqvA2No+lwkL6qcg;rU!;q~%M z9Pw=h2E3#(5kG*ymgyR*l4!k3AcfS)6Sf^v;X7?2yfQ|i@yqErPYv0F|8cG8_fRVY z*njW{yc@NFlV3AP)eaB{Y{1S_z~e*7w}PRJ0PHafO>(&wl7`LTLSf68*cEMh4@K6} z&yYv;`kuY}@cFv+nDoI1$fWokKWhq%L}UxT0ZBqFN4g32=x1k-6dQYJX?6+uBFLon zkQuz7ZWs;;^$SfRnsJ}Rl|SdoqE-lS;^Y|wN2MSnwk!Ojy28O24XNConkx~kiEN!f z@;D5!8NkAjjlv$*R53ZkbbxzYD*WR*BOh zokMW5Bm_2T5C4d^2#)RozsMA*^kQt(ZohzX%)CP1`IEAjU@#@o{tMK|3s3IWbv{E-AmK|r%ka1Drtn}1XIhP8m!(HmA$1#HzW z6rXLN;+x19kthP098xMP_0jD)0azo)8oH!chGX2KY>Zm8kR$(9Lj2sBaC)%^#IzsF zA5D3bbV-C(LIVPM8ZPt*1Y(YO5#<3Pg(D`sl~{q)N5qUp}AQG}` zO>%VZ*sbmhaPw9Pf+9P>D<}r8#z<)FT{%KjT4xfZ6MP%DMgWDTpr}sJIvKeOZ$gn2 ze6b8xp-mx+Y6)#rTWaW1(5l~S7`EJMz^#czqvK$kD^uxz&?)+ZrTBE!|!TFuB@P0c3 zPMx|y~Y#TvZQum4l;n5Zmjg#ZkVsf={@YXYH=#dso>hLWpwTyAi1HwnP5`>X9d zVejZyDgay0wiT8NLA`@Q1+kT!3m+`3u;ZBGI}0@;4on0l086$8WgyftS4zGt7l^sn z*f?A%O2-&7cqr!}<uwlSlyO=|nEo<|3g6w)Vc9 z0DAWZPslIb$BJf<+QywDm?hOG36>E{BGUFkDrZ@YS5Y2tPzAw8!V|2g|z*Q=`$;w>mNa_5rD(0xlh3$sn=WVKa&C z!vr$T3{$=kLqSQqRm(Q`V%6$u6K_VX6Tl31{bkdpP24@8j&A;sN%x^8%Lyg{Ofx_z zP(ChQ85o&*r9Yh14Jg67a8-{vzO&F{ZDq%a!MvX31-051$w{f$xG{(QyjX>EsSawb z0A}32eH$xQtU|M9iO@OvKw?del*R#pO_Sjfnh1$ZWlFB40x(Z!7t-{qKx()gIS)6@ z5|hWvC_k_oUv6!Hz19icyZ7MkC8|!h`~Ohu1u%mNk)6E+-rnA@QE1>B)|_k7{F|o2 z!7B_la;jtmCa+dlJ3%e?;F>CP?Qa%>#e1FB4TA=Z#QyyUt5xGy26aXNGj80tfoapG z!O7VbI%gyN!&@UFAq@kDjX_*|bFK_!mm1V^H?Fbbl5lB)RVg(XHf%Uf7FO-kt*W5T z319}hZ9O9+1A2oa^e%pA7@dT;#5Sf9l0p&_K}a)#C0th*FJxwB;{5sZ6^`>~qs|Jz zz`_UnGRBZ0Lt&@YQQ2y`u*SuE@_b)kKkn;H?5^oQJJkFy)M)|CUKISOlnHSOlnHSOlnHSOlnH zSOlnHSOlnHSOlnHlo6ohnF_FR;qNZwO;zV(jnUy?e~^7bgE7j2p&LVPWCP(9lpP#vM6t z)dgU-Xwf3}CuORFf`Tk|v5N+{&&DY~czp+P^DEpz_`}Y|)`T6T6vo{$RD_5@kJT^AA72}AE{gK#sP5=%{XD)lyW2~{9QZI!7&r7-$}@5Grx;U}C1o2YCnr01cXxxEo124+i;H7@ z1bgp{1I7j8q?DUy?)gtMHVCV4S)5~o)@Lvd7#DvD@fNd~#Vlqqi&@NKb;JG(VObyR T3<{R<00000NkvXXu0mjf8NiLf diff --git a/FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png deleted file mode 100644 index c3a88e5258a3750a303e58943bf36c2f3c76ab02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12311 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

1= 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 H!h`-FFaK_G diff --git a/FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/FCL/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..37677444a26f09a771537f2afc15fa4a7d33afd1 GIT binary patch literal 11776 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 diff --git a/FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 7f4ff9cea079bc78d18d8032efb451183a0fbfbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22091 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 diff --git a/FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/FCL/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..16efdef07a613ed8c2d2282018eeb3bd9ffef882 GIT binary patch literal 20356 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 literal 0 HcmV?d00001 diff --git a/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher.png deleted file mode 100644 index e0cccf246fa6272a971508c104fec3f26de8b579..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15923 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 diff --git a/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png deleted file mode 100644 index 61417a9dbdfb259ac815452c87c04c0beda70aef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33629 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 diff --git a/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/FCL/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..09f20640c702c3f482d083a8cf0e85b33087b95d GIT binary patch literal 30626 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 literal 0 HcmV?d00001 diff --git a/FCL/src/main/res/values-v31/themes.xml b/FCL/src/main/res/values-v31/themes.xml new file mode 100644 index 00000000..a5683bcb --- /dev/null +++ b/FCL/src/main/res/values-v31/themes.xml @@ -0,0 +1,22 @@ + + + + + \ No newline at end of file From d507998e7921e208115828797c64a95f3f7d04e8 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Tue, 20 Aug 2024 20:33:44 +0800 Subject: [PATCH 04/25] Manually select java for jar executor #282 --- .../java/com/tungsten/fcl/game/JarExecutorHelper.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java index 1955a11b..9c7ce8c8 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/JarExecutorHelper.java @@ -11,6 +11,8 @@ import android.util.Log; import com.tungsten.fcl.activity.JVMActivity; import com.tungsten.fcl.control.MenuType; +import com.tungsten.fcl.setting.Profile; +import com.tungsten.fcl.setting.Profiles; import com.tungsten.fcl.util.AndroidUtils; import com.tungsten.fcl.util.RequestCodes; import com.tungsten.fclauncher.FCLConfig; @@ -59,6 +61,13 @@ public class JarExecutorHelper { private static void launchJarExecutor(Context context, File file) { int version = getJavaVersion(file); int javaVersion = getNearestJavaVersion(version); + Profile profile = Profiles.getSelectedProfile(); + if (profile != null) { + String java = profile.getGlobal().getJava(); + if (!java.equals(JavaVersion.JAVA_AUTO.getVersionName())) { + javaVersion = JavaVersion.getJavaFromVersionName(java).getVersion(); + } + } exec(context, file, javaVersion, null); } From e6100ac032aa1f9ff18bbe3a68ec0aea6b08edd8 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 00:09:57 +0000 Subject: [PATCH 05/25] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20Forge=20=E5=AE=98?= =?UTF-8?q?=E6=96=B9=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download/MojangDownloadProvider.java | 6 +++--- .../download/forge/ForgeVersionList.java | 18 +++++++++++++----- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java index a163b17d..64751188 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java @@ -19,7 +19,7 @@ package com.tungsten.fclcore.download; import com.tungsten.fclcore.download.fabric.FabricAPIVersionList; import com.tungsten.fclcore.download.fabric.FabricVersionList; -import com.tungsten.fclcore.download.forge.ForgeBMCLVersionList; +import com.tungsten.fclcore.download.forge.ForgeVersionList; import com.tungsten.fclcore.download.game.GameVersionList; import com.tungsten.fclcore.download.liteloader.LiteLoaderVersionList; import com.tungsten.fclcore.download.neoforge.NeoForgeOfficialVersionList; @@ -34,7 +34,7 @@ public class MojangDownloadProvider implements DownloadProvider { private final GameVersionList game; private final FabricVersionList fabric; private final FabricAPIVersionList fabricApi; - private final ForgeBMCLVersionList forge; + private final ForgeVersionList forge; private final NeoForgeOfficialVersionList neoforge; private final LiteLoaderVersionList liteLoader; private final OptiFineBMCLVersionList optifine; @@ -47,7 +47,7 @@ public class MojangDownloadProvider implements DownloadProvider { this.game = new GameVersionList(this); this.fabric = new FabricVersionList(this); this.fabricApi = new FabricAPIVersionList(this); - this.forge = new ForgeBMCLVersionList(apiRoot); + this.forge = new ForgeVersionList(this); this.neoforge = new NeoForgeOfficialVersionList(this); this.liteLoader = new LiteLoaderVersionList(this); this.optifine = new OptiFineBMCLVersionList(apiRoot); diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java index 238f42d1..ecc9bd5e 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java @@ -39,9 +39,17 @@ public final class ForgeVersionList extends VersionList { return false; } + private static String toLookupVersion(String gameVersion) { + return "1.7.10-pre4".equals(gameVersion) ? "1.7.10_pre4" : gameVersion; + } + + private static String fromLookupVersion(String lookupVersion) { + return "1.7.10_pre4".equals(lookupVersion) ? "1.7.10-pre4" : lookupVersion; + } + @Override public CompletableFuture refreshAsync() { - return HttpRequest.GET(downloadProvider.injectURL(FORGE_LIST)).getJsonAsync(ForgeVersionRoot.class) + return HttpRequest.GET(FORGE_LIST).getJsonAsync(ForgeVersionRoot.class) .thenAcceptAsync(root -> { lock.writeLock().lock(); @@ -51,7 +59,7 @@ public final class ForgeVersionList extends VersionList { versions.clear(); for (Map.Entry entry : root.getGameVersions().entrySet()) { - String gameVersion = VersionNumber.normalize(entry.getKey()); + String gameVersion = fromLookupVersion(VersionNumber.normalize(entry.getKey())); for (int v : entry.getValue()) { ForgeVersion version = root.getNumber().get(v); if (version == null) @@ -68,7 +76,7 @@ public final class ForgeVersionList extends VersionList { if (jar == null) continue; versions.put(gameVersion, new ForgeRemoteVersion( - version.getGameVersion(), version.getVersion(), null, Collections.singletonList(jar) + toLookupVersion(version.getGameVersion()), version.getVersion(), null, Collections.singletonList(jar) )); } } @@ -78,5 +86,5 @@ public final class ForgeVersionList extends VersionList { }); } - public static final String FORGE_LIST = "https://files.minecraftforge.net/maven/net/minecraftforge/forge/json"; -} + public static final String FORGE_LIST = "https://zkitefly.github.io/forge-maven-metadata/list.json"; +} \ No newline at end of file From 9732f15cae41831f032ffb053880c6b5a9c5845a Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 00:22:32 +0000 Subject: [PATCH 06/25] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=20OptiFine=20=E5=AE=98?= =?UTF-8?q?=E6=96=B9=E6=BA=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FCL/src/main/res/values-zh/strings.xml | 2 +- FCL/src/main/res/values/strings.xml | 2 +- .../download/MojangDownloadProvider.java | 6 +- .../optifine/OptiFine302VersionList.java | 94 +++++++++++++++++++ .../optifine/OptiFineBMCLVersionList.java | 60 +++++++----- .../download/optifine/OptiFineVersion.java | 86 ----------------- 6 files changed, 137 insertions(+), 113 deletions(-) create mode 100644 FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFine302VersionList.java delete mode 100644 FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineVersion.java diff --git a/FCL/src/main/res/values-zh/strings.xml b/FCL/src/main/res/values-zh/strings.xml index b11011b1..c5d8bddc 100644 --- a/FCL/src/main/res/values-zh/strings.xml +++ b/FCL/src/main/res/values-zh/strings.xml @@ -270,7 +270,7 @@ 我的世界中文论坛 (https://www.mcbbs.net/) BMCLAPI (bangbang93, https://bmclapi2.bangbang93.com/) - 官方 (OptiFine 自动安装使用 BMCLAPI 下载源) + 官方 (OptiFine 自动安装使用 OF-302 下载源) 尽量使用官方源 选择加载速度快的下载源 尽量使用镜像源 diff --git a/FCL/src/main/res/values/strings.xml b/FCL/src/main/res/values/strings.xml index 57a7d74b..b1b989a2 100644 --- a/FCL/src/main/res/values/strings.xml +++ b/FCL/src/main/res/values/strings.xml @@ -292,7 +292,7 @@ MCBBS (https://www.mcbbs.net/) BMCLAPI (bangbang93, https://bmclapi2.bangbang93.com/) - Mojang (OptiFine is provided by BMCLAPI) + Mojang (OptiFine is provided by OF-302) From Official Sources From Fastest Available From Mirror diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java index 64751188..61a9b189 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/MojangDownloadProvider.java @@ -23,7 +23,7 @@ import com.tungsten.fclcore.download.forge.ForgeVersionList; import com.tungsten.fclcore.download.game.GameVersionList; import com.tungsten.fclcore.download.liteloader.LiteLoaderVersionList; import com.tungsten.fclcore.download.neoforge.NeoForgeOfficialVersionList; -import com.tungsten.fclcore.download.optifine.OptiFineBMCLVersionList; +import com.tungsten.fclcore.download.optifine.OptiFine302VersionList; import com.tungsten.fclcore.download.quilt.QuiltAPIVersionList; import com.tungsten.fclcore.download.quilt.QuiltVersionList; @@ -37,7 +37,7 @@ public class MojangDownloadProvider implements DownloadProvider { private final ForgeVersionList forge; private final NeoForgeOfficialVersionList neoforge; private final LiteLoaderVersionList liteLoader; - private final OptiFineBMCLVersionList optifine; + private final OptiFine302VersionList optifine; private final QuiltVersionList quilt; private final QuiltAPIVersionList quiltApi; @@ -50,7 +50,7 @@ public class MojangDownloadProvider implements DownloadProvider { this.forge = new ForgeVersionList(this); this.neoforge = new NeoForgeOfficialVersionList(this); this.liteLoader = new LiteLoaderVersionList(this); - this.optifine = new OptiFineBMCLVersionList(apiRoot); + this.optifine = new OptiFine302VersionList("https://zkitefly.github.io/optifine-download-list/index.json"); this.quilt = new QuiltVersionList(this); this.quiltApi = new QuiltAPIVersionList(this); } diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFine302VersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFine302VersionList.java new file mode 100644 index 00000000..7ddfbf5a --- /dev/null +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFine302VersionList.java @@ -0,0 +1,94 @@ +/* + * Hello Minecraft! Launcher + * Copyright (C) 2020 huangyuhui and contributors + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.tungsten.fclcore.download.optifine; + +import com.google.gson.annotations.SerializedName; +import com.google.gson.reflect.TypeToken; +import com.tungsten.fclcore.download.VersionList; +import com.tungsten.fclcore.util.io.HttpRequest; +import com.tungsten.fclcore.util.versioning.VersionNumber; + +import java.util.List; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +/** + * @author huangyuhui + */ +public final class OptiFine302VersionList extends VersionList { + private final String versionListURL; + + public OptiFine302VersionList(String versionListURL) { + this.versionListURL = versionListURL; + } + + @Override + public boolean hasType() { + return true; + } + + @Override + public CompletableFuture refreshAsync() { + return HttpRequest.GET(versionListURL).getJsonAsync(new TypeToken() { + }.getType()).thenAcceptAsync(root -> { + lock.writeLock().lock(); + + try { + versions.clear(); + for (OptiFineVersion element : root.versions) { + String gameVersion = VersionNumber.normalize(element.gameVersion); + versions.put(gameVersion, new OptiFineRemoteVersion( + gameVersion, element.version, + root.downloadBases.stream().map(u -> u + element.fileName).collect(Collectors.toList()), + element.fileName.startsWith("pre") + )); + } + } finally { + lock.writeLock().unlock(); + } + }); + } + + private static final class VersionList { + @SerializedName("file") + private final List versions; + + @SerializedName("download") + private final List downloadBases; + + public VersionList(List versions, List downloadBases) { + this.versions = versions; + this.downloadBases = downloadBases; + } + } + + private static final class OptiFineVersion { + @SerializedName("name") + private final String version; + @SerializedName("filename") + private final String fileName; + @SerializedName("mcversion") + private final String gameVersion; + + public OptiFineVersion(String version, String fileName, String gameVersion) { + this.version = version; + this.fileName = fileName; + this.gameVersion = gameVersion; + } + } +} \ No newline at end of file diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineBMCLVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineBMCLVersionList.java index 08515d1a..5b1f3f33 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineBMCLVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineBMCLVersionList.java @@ -17,6 +17,7 @@ */ package com.tungsten.fclcore.download.optifine; +import com.google.gson.annotations.SerializedName; import com.google.gson.reflect.TypeToken; import com.tungsten.fclcore.download.VersionList; import com.tungsten.fclcore.util.StringUtils; @@ -47,31 +48,46 @@ public final class OptiFineBMCLVersionList extends VersionList refreshAsync() { return HttpRequest.GET(apiRoot + "/optifine/versionlist").>getJsonAsync(new TypeToken>() { - }.getType()) - .thenAcceptAsync(root -> { - lock.writeLock().lock(); + }.getType()).thenAcceptAsync(root -> { + lock.writeLock().lock(); - try { - versions.clear(); - Set duplicates = new HashSet<>(); - for (OptiFineVersion element : root) { - String version = element.getType() + "_" + element.getPatch(); - String mirror = "https://bmclapi2.bangbang93.com/optifine/" + element.getGameVersion() + "/" + element.getType() + "/" + element.getPatch(); - if (!duplicates.add(mirror)) - continue; + try { + versions.clear(); + Set duplicates = new HashSet<>(); + for (OptiFineVersion element : root) { + String version = element.type + "_" + element.patch; + String mirror = apiRoot + "/optifine/" + element.gameVersion + "/" + element.type + "/" + element.patch; + if (!duplicates.add(mirror)) + continue; - boolean isPre = element.getPatch() != null && (element.getPatch().startsWith("pre") || element.getPatch().startsWith("alpha")); + boolean isPre = element.patch != null && (element.patch.startsWith("pre") || element.patch.startsWith("alpha")); - if (StringUtils.isBlank(element.getGameVersion())) - continue; + if (StringUtils.isBlank(element.gameVersion)) + continue; - String gameVersion = VersionNumber.normalize(element.getGameVersion()); - versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, Collections.singletonList(mirror), isPre)); - } - } finally { - lock.writeLock().unlock(); - } - }); + String gameVersion = VersionNumber.normalize(element.gameVersion); + versions.put(gameVersion, new OptiFineRemoteVersion(gameVersion, version, Collections.singletonList(mirror), isPre)); + } + } finally { + lock.writeLock().unlock(); + } + }); } -} + private static final class OptiFineVersion { + @SerializedName("type") + private final String type; + + @SerializedName("patch") + private final String patch; + + @SerializedName("mcversion") + private final String gameVersion; + + public OptiFineVersion(String type, String patch, String gameVersion) { + this.type = type; + this.patch = patch; + this.gameVersion = gameVersion; + } + } +} \ No newline at end of file diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineVersion.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineVersion.java deleted file mode 100644 index 03c3817e..00000000 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineVersion.java +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Hello Minecraft! Launcher - * Copyright (C) 2020 huangyuhui and contributors - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -package com.tungsten.fclcore.download.optifine; - -import com.google.gson.annotations.SerializedName; - -public final class OptiFineVersion { - - @SerializedName("dl") - private final String downloadLink; - - @SerializedName("ver") - private final String version; - - @SerializedName("date") - private final String date; - - @SerializedName("type") - private final String type; - - @SerializedName("patch") - private final String patch; - - @SerializedName("mirror") - private final String mirror; - - @SerializedName("mcversion") - private final String gameVersion; - - public OptiFineVersion() { - this(null, null, null, null, null, null, null); - } - - public OptiFineVersion(String downloadLink, String version, String date, String type, String patch, String mirror, String gameVersion) { - this.downloadLink = downloadLink; - this.version = version; - this.date = date; - this.type = type; - this.patch = patch; - this.mirror = mirror; - this.gameVersion = gameVersion; - } - - public String getDownloadLink() { - return downloadLink; - } - - public String getVersion() { - return version; - } - - public String getDate() { - return date; - } - - public String getType() { - return type; - } - - public String getPatch() { - return patch; - } - - public String getMirror() { - return mirror; - } - - public String getGameVersion() { - return gameVersion; - } -} From df2d9eccf0fa65ab55d9f4cf8e46de5e80f3f230 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:02:36 +0000 Subject: [PATCH 07/25] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E5=8C=85=E5=90=AB=20hash=20=E7=9A=84=E7=89=88=E6=9C=AC?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/tungsten/fclcore/game/GameVersion.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/game/GameVersion.java b/FCLCore/src/main/java/com/tungsten/fclcore/game/GameVersion.java index faa3e4f2..94106125 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/game/GameVersion.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/game/GameVersion.java @@ -17,7 +17,6 @@ */ package com.tungsten.fclcore.game; -import static com.tungsten.fclcore.util.Lang.tryCast; import static com.tungsten.fclcore.util.Logging.LOG; import com.google.gson.JsonParseException; @@ -47,8 +46,11 @@ public final class GameVersion { private static Optional getVersionFromJson(InputStream versionJson) { try { Map version = JsonUtils.fromNonNullJsonFully(versionJson, Map.class); - return tryCast(version.get("id"), String.class); - } catch (IOException | JsonParseException e) { + String id = (String) version.get("id"); + if (id != null && id.contains(" / ")) + id = id.substring(0, id.indexOf(" / ")); + return Optional.ofNullable(id); + } catch (IOException | JsonParseException | ClassCastException e) { LOG.log(Level.WARNING, "Failed to parse version.json", e); return Optional.empty(); } From f36df01fb625347e28164e363938282e7e259a49 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:19:27 +0000 Subject: [PATCH 08/25] =?UTF-8?q?=E6=AD=A3=E7=A1=AE=E5=A4=84=E7=90=86=20ma?= =?UTF-8?q?p=5Fto=5Fresources?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tungsten/fclcore/game/AssetIndex.java | 4 ++ .../fclcore/game/DefaultGameRepository.java | 42 +++++++++---------- 2 files changed, 25 insertions(+), 21 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/game/AssetIndex.java b/FCLCore/src/main/java/com/tungsten/fclcore/game/AssetIndex.java index c7728e5d..c6f8c691 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/game/AssetIndex.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/game/AssetIndex.java @@ -48,6 +48,10 @@ public final class AssetIndex { return virtual || mapToResources; } + public boolean needMapToResources() { + return mapToResources; + } + public Map getObjects() { return Collections.unmodifiableMap(objects); } diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/game/DefaultGameRepository.java b/FCLCore/src/main/java/com/tungsten/fclcore/game/DefaultGameRepository.java index ab069a19..ea686812 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/game/DefaultGameRepository.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/game/DefaultGameRepository.java @@ -23,14 +23,7 @@ import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.tungsten.fclcore.download.MaintainTask; import com.tungsten.fclcore.download.game.VersionJsonSaveTask; -import com.tungsten.fclcore.event.Event; -import com.tungsten.fclcore.event.EventBus; -import com.tungsten.fclcore.event.GameJsonParseFailedEvent; -import com.tungsten.fclcore.event.LoadedOneVersionEvent; -import com.tungsten.fclcore.event.RefreshedVersionsEvent; -import com.tungsten.fclcore.event.RefreshingVersionsEvent; -import com.tungsten.fclcore.event.RemoveVersionEvent; -import com.tungsten.fclcore.event.RenameVersionEvent; +import com.tungsten.fclcore.event.*; import com.tungsten.fclcore.game.tlauncher.TLauncherVersion; import com.tungsten.fclcore.mod.ModManager; import com.tungsten.fclcore.mod.ModpackConfiguration; @@ -47,13 +40,7 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.InvalidPathException; import java.nio.file.Path; -import java.util.Arrays; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Optional; -import java.util.TreeMap; +import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.logging.Level; import java.util.stream.Stream; @@ -125,9 +112,12 @@ public class DefaultGameRepository implements GameRepository { @Override public File getRunDirectory(String id) { switch (getGameDirectoryType(id)) { - case VERSION_FOLDER: return getVersionRoot(id); - case ROOT_FOLDER: return getBaseDirectory(); - default: throw new IllegalStateException(); + case VERSION_FOLDER: + return getVersionRoot(id); + case ROOT_FOLDER: + return getBaseDirectory(); + default: + throw new IllegalStateException(); } } @@ -448,6 +438,8 @@ public class DefaultGameRepository implements GameRepository { return assetsDir; if (index.isVirtual()) { + Path resourcesDir = getRunDirectory(version).toPath().resolve("resources"); + int cnt = 0; int tot = index.getObjects().entrySet().size(); for (Map.Entry entry : index.getObjects().entrySet()) { @@ -457,6 +449,12 @@ public class DefaultGameRepository implements GameRepository { cnt++; if (!Files.isRegularFile(target)) FileUtils.copyFile(original, target); + + if (index.needMapToResources()) { + target = resourcesDir.resolve(entry.getKey()); + if (!Files.isRegularFile(target)) + FileUtils.copyFile(original, target); + } } } @@ -489,18 +487,20 @@ public class DefaultGameRepository implements GameRepository { /** * read modpack configuration for a version. + * * @param version version installed as modpack - * @param manifest type of ModpackConfiguration + * @param manifest type of ModpackConfiguration * @return modpack configuration object, or null if this version is not a modpack. * @throws VersionNotFoundException if version does not exist. - * @throws IOException if an i/o error occurs. + * @throws IOException if an i/o error occurs. */ @Nullable public ModpackConfiguration readModpackConfiguration(String version) throws IOException, VersionNotFoundException { if (!hasVersion(version)) throw new VersionNotFoundException(version); File file = getModpackConfiguration(version); if (!file.exists()) return null; - return JsonUtils.GSON.fromJson(FileUtils.readText(file), new TypeToken>(){}.getType()); + return JsonUtils.GSON.fromJson(FileUtils.readText(file), new TypeToken>() { + }.getType()); } public boolean isModpack(String version) { From 8548467dc011fca72f93bf62f60f221f7b1238fb Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:23:42 +0000 Subject: [PATCH 09/25] =?UTF-8?q?=E7=A6=BB=E7=BA=BF=E8=B4=A6=E6=88=B7?= =?UTF-8?q?=E9=80=89=E6=8B=A9=20Steve/Alex=20=E7=9A=AE=E8=82=A4=E6=97=B6?= =?UTF-8?q?=E5=BC=BA=E5=88=B6=E4=BD=BF=E7=94=A8=E6=9C=AC=E5=9C=B0=20Yggdra?= =?UTF-8?q?sil=20=E6=9C=8D=E5=8A=A1=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tungsten/fclcore/auth/offline/OfflineAccount.java | 10 +--------- 1 file changed, 1 insertion(+), 9 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/auth/offline/OfflineAccount.java b/FCLCore/src/main/java/com/tungsten/fclcore/auth/offline/OfflineAccount.java index 979d967f..d8b9f01c 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/auth/offline/OfflineAccount.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/auth/offline/OfflineAccount.java @@ -38,7 +38,6 @@ import com.tungsten.fclcore.auth.authlibinjector.AuthlibInjectorArtifactInfo; import com.tungsten.fclcore.auth.authlibinjector.AuthlibInjectorArtifactProvider; import com.tungsten.fclcore.auth.authlibinjector.AuthlibInjectorDownloadException; import com.tungsten.fclcore.auth.yggdrasil.Texture; -import com.tungsten.fclcore.auth.yggdrasil.TextureModel; import com.tungsten.fclcore.auth.yggdrasil.TextureType; import com.tungsten.fclcore.fakefx.beans.binding.Bindings; import com.tungsten.fclcore.fakefx.beans.binding.ObjectBinding; @@ -100,14 +99,7 @@ public class OfflineAccount extends Account { } protected boolean loadAuthlibInjector(Skin skin) { - if (skin == null) return false; - if (skin.getType() == Skin.Type.DEFAULT) return false; - TextureModel defaultModel = TextureModel.detectUUID(getUUID()); - if (skin.getType() == Skin.Type.ALEX && defaultModel == TextureModel.ALEX || - skin.getType() == Skin.Type.STEVE && defaultModel == TextureModel.STEVE) { - return false; - } - return true; + return skin != null && skin.getType() != Skin.Type.DEFAULT; } @Override From 98760d9dd40bc4a3d4648bb6a3cbc2815c3265b6 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:34:23 +0000 Subject: [PATCH 10/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=95=B4=E5=90=88=E5=8C=85=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tungsten/fclcore/download/VersionList.java | 7 ++++++- .../fclcore/download/optifine/OptiFineRemoteVersion.java | 5 +++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/VersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/VersionList.java index 1b15fb5f..686a9334 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/VersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/VersionList.java @@ -129,9 +129,14 @@ public abstract class VersionList { lock.readLock().lock(); try { T result = null; - for (T it : versions.get(gameVersion)) + TreeSet remoteVersions = versions.get(gameVersion); + for (T it : remoteVersions) if (remoteVersion.equals(it.getSelfVersion())) result = it; + if (result == null) + for (T it : remoteVersions) + if (remoteVersion.equals(it.getFullVersion())) + result = it; return Optional.ofNullable(result); } finally { lock.readLock().unlock(); diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineRemoteVersion.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineRemoteVersion.java index c29688cc..ddac5ebe 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineRemoteVersion.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/optifine/OptiFineRemoteVersion.java @@ -31,6 +31,11 @@ public class OptiFineRemoteVersion extends RemoteVersion { super(LibraryAnalyzer.LibraryType.OPTIFINE.getPatchId(), gameVersion, selfVersion, null, snapshot ? Type.SNAPSHOT : Type.RELEASE, urls); } + @Override + public String getFullVersion() { + return getGameVersion() + "_" + getSelfVersion(); + } + @Override public Task getInstallTask(DefaultDependencyManager dependencyManager, Version baseVersion) { return new OptiFineInstallTask(dependencyManager, baseVersion, this); From b5f2b52941f91ef0234de6db3cbae9fdf4fc4033 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:40:34 +0000 Subject: [PATCH 11/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20saveETagIndex=20?= =?UTF-8?q?=E5=8F=AF=E8=83=BD=E5=86=99=E5=85=A5=E4=B8=8D=E5=85=A8=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tungsten/fclcore/util/CacheRepository.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/util/CacheRepository.java b/FCLCore/src/main/java/com/tungsten/fclcore/util/CacheRepository.java index 3d8494b2..50ce3c41 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/util/CacheRepository.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/util/CacheRepository.java @@ -294,8 +294,12 @@ public class CacheRepository { ETagIndex indexOnDisk = JsonUtils.fromMaybeMalformedJson(new String(IOUtils.readFullyWithoutClosing(Channels.newInputStream(channel)), UTF_8), ETagIndex.class); Map newIndex = joinETagIndexes(indexOnDisk == null ? null : indexOnDisk.eTag, index.values()); channel.truncate(0); - ETagIndex writeTo = new ETagIndex(newIndex.values()); - channel.write(ByteBuffer.wrap(JsonUtils.GSON.toJson(writeTo).getBytes(UTF_8))); + ByteBuffer writeTo = ByteBuffer.wrap(JsonUtils.GSON.toJson(new ETagIndex(newIndex.values())).getBytes(UTF_8)); + while (writeTo.hasRemaining()) { + if (channel.write(writeTo) == 0) { + throw new IOException("No value is written"); + } + } this.index = newIndex; } finally { lock.release(); From 3399fbefedfcd12e834fd81a992a8d7536302287 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 01:48:14 +0000 Subject: [PATCH 12/25] =?UTF-8?q?=E4=B8=8B=E8=BD=BD=E5=A4=B1=E8=B4=A5?= =?UTF-8?q?=E6=97=B6=E6=89=93=E5=8D=B0=E9=87=8D=E5=AE=9A=E5=90=91=E9=93=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/tungsten/fclcore/task/FetchTask.java | 9 ++++++--- .../java/com/tungsten/fclcore/util/io/NetworkUtils.java | 9 ++++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/task/FetchTask.java b/FCLCore/src/main/java/com/tungsten/fclcore/task/FetchTask.java index 366f363f..3abed86e 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/task/FetchTask.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/task/FetchTask.java @@ -94,6 +94,7 @@ public abstract class FetchTask extends Task { break download; } + List redirects = null; try { beforeDownload(url); @@ -103,7 +104,9 @@ public abstract class FetchTask extends Task { if (checkETag) repository.injectConnection(conn); if (conn instanceof HttpURLConnection) { - conn = NetworkUtils.resolveConnection((HttpURLConnection) conn); + redirects = new ArrayList<>(); + + conn = NetworkUtils.resolveConnection((HttpURLConnection) conn, redirects); int responseCode = ((HttpURLConnection) conn).getResponseCode(); if (responseCode == HttpURLConnection.HTTP_NOT_MODIFIED) { @@ -164,13 +167,13 @@ public abstract class FetchTask extends Task { } catch (FileNotFoundException ex) { failedURL = url; exception = ex; - Logging.LOG.log(Level.WARNING, "Failed to download " + url + ", not found", ex); + Logging.LOG.log(Level.WARNING, "Failed to download " + url + ", not found" + ((redirects == null || redirects.isEmpty()) ? "" : ", redirects: " + redirects), ex); break; // we will not try this URL again } catch (IOException ex) { failedURL = url; exception = ex; - Logging.LOG.log(Level.WARNING, "Failed to download " + url + ", repeat times: " + (++repeat), ex); + Logging.LOG.log(Level.WARNING, "Failed to download " + url + ", repeat times: " + (++repeat) + ((redirects == null || redirects.isEmpty()) ? "" : ", redirects: " + redirects), ex); } } } diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/util/io/NetworkUtils.java b/FCLCore/src/main/java/com/tungsten/fclcore/util/io/NetworkUtils.java index 850f40d8..9ba2cd53 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/util/io/NetworkUtils.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/util/io/NetworkUtils.java @@ -144,6 +144,10 @@ public final class NetworkUtils { return sb.toString(); } + public static HttpURLConnection resolveConnection(HttpURLConnection conn) throws IOException { + return resolveConnection(conn, null); + } + /** * This method is a work-around that aims to solve problem when "Location" in * stupid server's response is not encoded. @@ -153,7 +157,7 @@ public final class NetworkUtils { * @return manually redirected http connection. * @throws IOException if an I/O error occurs. */ - public static HttpURLConnection resolveConnection(HttpURLConnection conn) throws IOException { + public static HttpURLConnection resolveConnection(HttpURLConnection conn, List redirects) throws IOException { int redirect = 0; while (true) { @@ -168,6 +172,9 @@ public final class NetworkUtils { String newURL = conn.getHeaderField("Location"); conn.disconnect(); + if (redirects != null) { + redirects.add(newURL); + } if (redirect > 20) { throw new IOException("Too much redirects"); } From d4b0344b4dfd41639ba173eb3a131f948df7ec7b Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 02:01:25 +0000 Subject: [PATCH 13/25] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20LauncherHelper=20NPE?= =?UTF-8?q?=20=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java b/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java index 4d5e73c0..f7553090 100644 --- a/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java +++ b/FCL/src/main/java/com/tungsten/fcl/game/LauncherHelper.java @@ -198,7 +198,7 @@ public final class LauncherHelper { launchingStepsPane.dismiss(); if (!success) { Exception ex = executor.getException(); - if (!(ex instanceof CancellationException)) { + if (ex != null && !(ex instanceof CancellationException)) { Schedulers.androidUIThread().execute(() -> { String message; if (ex instanceof ModpackCompletionException) { From 3598311c1031717876d0fd6e3e465152ba5d48c1 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 02:18:04 +0000 Subject: [PATCH 14/25] =?UTF-8?q?Forge=201.7.10-pre4=20=E5=AE=89=E8=A3=85?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../download/forge/ForgeBMCLVersionList.java | 38 +++++++++++++++---- 1 file changed, 30 insertions(+), 8 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java index ce005fca..67c1fa67 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java @@ -25,6 +25,7 @@ import static com.tungsten.fclcore.util.Pair.pair; import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.tungsten.fclcore.download.VersionList; +import org.jackhuang.hmcl.util.Lang; import com.tungsten.fclcore.util.StringUtils; import com.tungsten.fclcore.util.gson.Validation; import com.tungsten.fclcore.util.io.HttpRequest; @@ -35,7 +36,10 @@ import org.jetbrains.annotations.Nullable; import java.time.Instant; import java.time.format.DateTimeParseException; -import java.util.*; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Optional; import java.util.concurrent.CompletableFuture; import java.util.logging.Level; @@ -64,10 +68,27 @@ public final class ForgeBMCLVersionList extends VersionList throw new UnsupportedOperationException("ForgeBMCLVersionList does not support loading the entire Forge remote version list."); } + private static String toLookupVersion(String gameVersion) { + return "1.7.10-pre4".equals(gameVersion) ? "1.7.10_pre4" : gameVersion; + } + + private static String fromLookupVersion(String lookupVersion) { + return "1.7.10_pre4".equals(lookupVersion) ? "1.7.10-pre4" : lookupVersion; + } + + private static String toLookupBranch(String gameVersion, String branch) { + if ("1.7.10-pre4".equals(gameVersion)) { + return "prerelease"; + } + return Lang.requireNonNullElse(branch, ""); + } + @Override public CompletableFuture refreshAsync(String gameVersion) { + String lookupVersion = toLookupVersion(gameVersion); + return CompletableFuture.completedFuture(null) - .thenApplyAsync(wrap(unused -> HttpRequest.GET(apiRoot + "/forge/minecraft/" + gameVersion).>getJson(new TypeToken>() { + .thenApplyAsync(wrap(unused -> HttpRequest.GET(apiRoot + "/forge/minecraft/" + lookupVersion).>getJson(new TypeToken>() { }.getType()))) .thenAcceptAsync(forgeVersions -> { lock.writeLock().lock(); @@ -81,16 +102,17 @@ public final class ForgeBMCLVersionList extends VersionList List urls = new ArrayList<>(); for (ForgeVersion.File file : version.getFiles()) if ("installer".equals(file.getCategory()) && "jar".equals(file.getFormat())) { - String classifier = gameVersion + "-" + version.getVersion() - + (StringUtils.isNotBlank(version.getBranch()) ? "-" + version.getBranch() : ""); + String branch = toLookupBranch(gameVersion, version.getBranch()); + + String classifier = lookupVersion + "-" + version.getVersion() + (branch.isEmpty() ? "" : '-' + branch); String fileName1 = "forge-" + classifier + "-" + file.getCategory() + "." + file.getFormat(); - String fileName2 = "forge-" + classifier + "-" + gameVersion + "-" + file.getCategory() + "." + file.getFormat(); + String fileName2 = "forge-" + classifier + "-" + lookupVersion + "-" + file.getCategory() + "." + file.getFormat(); urls.add("https://files.minecraftforge.net/maven/net/minecraftforge/forge/" + classifier + "/" + fileName1); - urls.add("https://files.minecraftforge.net/maven/net/minecraftforge/forge/" + classifier + "-" + gameVersion + "/" + fileName2); + urls.add("https://files.minecraftforge.net/maven/net/minecraftforge/forge/" + classifier + "-" + lookupVersion + "/" + fileName2); urls.add(NetworkUtils.withQuery("https://bmclapi2.bangbang93.com/forge/download", mapOf( pair("mcversion", version.getGameVersion()), pair("version", version.getVersion()), - pair("branch", version.getBranch()), + pair("branch", branch), pair("category", file.getCategory()), pair("format", file.getFormat()) ))); @@ -109,7 +131,7 @@ public final class ForgeBMCLVersionList extends VersionList } versions.put(gameVersion, new ForgeRemoteVersion( - version.getGameVersion(), version.getVersion(), releaseDate, urls)); + fromLookupVersion(version.getGameVersion()), version.getVersion(), releaseDate, urls)); } } finally { lock.writeLock().unlock(); From 086c33a4272286b0510a3eca8d556eaa91cd5d63 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Fri, 23 Aug 2024 02:21:25 +0000 Subject: [PATCH 15/25] Fix --- .../tungsten/fclcore/download/forge/ForgeBMCLVersionList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java index 67c1fa67..86dd7fd0 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeBMCLVersionList.java @@ -25,7 +25,7 @@ import static com.tungsten.fclcore.util.Pair.pair; import com.google.gson.JsonParseException; import com.google.gson.reflect.TypeToken; import com.tungsten.fclcore.download.VersionList; -import org.jackhuang.hmcl.util.Lang; +import com.tungsten.fclcore.util.Lang; import com.tungsten.fclcore.util.StringUtils; import com.tungsten.fclcore.util.gson.Validation; import com.tungsten.fclcore.util.io.HttpRequest; From 8a8ca00b78c2cfb1461a4f8364bc85e28656dcb7 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Fri, 23 Aug 2024 17:00:27 +0800 Subject: [PATCH 16/25] 1.1.7.6 --- FCL/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/FCL/build.gradle b/FCL/build.gradle index ad9c3abb..a045f6f5 100644 --- a/FCL/build.gradle +++ b/FCL/build.gradle @@ -43,8 +43,8 @@ android { applicationId "com.tungsten.fcl" minSdk 26 targetSdk 34 - versionCode 1175 - versionName "1.1.7.5" + versionCode 1176 + versionName "1.1.7.6" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } From 1bc8091d962895f20448c72b17755fab4ee7fd1d Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Fri, 23 Aug 2024 17:19:46 +0800 Subject: [PATCH 17/25] Update version_map.json --- version_map.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/version_map.json b/version_map.json index 4958f596..6a083614 100644 --- a/version_map.json +++ b/version_map.json @@ -1,9 +1,9 @@ [ { "type": "release", - "versionCode": 1175, - "versionName": "1.1.7.5", - "date": "2024.08.16", + "versionCode": 1176, + "versionName": "1.1.7.6", + "date": "2024.08.23", "description": [ { "lang": "en", @@ -11,10 +11,10 @@ }, { "lang": "zh_CN", - "text": "FCL 1.1.7.5更新内容(若启动器内下载缓慢请使用网盘下载,64位的请下载arm64,不知道该下哪个的请下载all)\n1.更新赞助链接\n2.更新turnip驱动\n3.允许使用外部应用选择文件\n4.移除xhook改为bytehook\n5.修复少量bug" + "text": "FCL 1.1.7.6更新内容(若启动器内下载缓慢请使用网盘下载,64位的请下载arm64,不知道该下哪个的请下载all)\n1.修复微软登录时的错误提示\n2.修复neoforge整合包版本错误\n3.修复手动选择整合包时的整合包为非正常格式时无法安装的bug\n4.可手动选择执行jar文件使用的java\n5.同步部分HMCL Core,修复些许bug" } ], - "netdiskUrl": "https://pan.quark.cn/s/b65dd99d5555", - "url": "https://github.com/FCL-Team/FoldCraftLauncher/releases/download/1.1.7.5/FCL-release-1.1.7.5-all.apk" + "netdiskUrl": "https://pan.quark.cn/s/04bc07022a7d", + "url": "https://github.com/FCL-Team/FoldCraftLauncher/releases/download/1.1.7.6/FCL-release-1.1.7.6-all.apk" } ] From ef3d36d9ea4246b191a85516c42b139412985a3e Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Fri, 23 Aug 2024 19:36:20 +0800 Subject: [PATCH 18/25] fix window scale #543 --- FCL/src/main/java/com/tungsten/fcl/control/GameMenu.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/FCL/src/main/java/com/tungsten/fcl/control/GameMenu.java b/FCL/src/main/java/com/tungsten/fcl/control/GameMenu.java index 1a59e25e..02fde7a0 100644 --- a/FCL/src/main/java/com/tungsten/fcl/control/GameMenu.java +++ b/FCL/src/main/java/com/tungsten/fcl/control/GameMenu.java @@ -413,7 +413,10 @@ public class GameMenu implements MenuCallback, View.OnClickListener { int screenHeight = AndroidUtils.getScreenHeight(FCLApplication.getCurrentActivity()); if (fclBridge != null) { fclBridge.setScaleFactor(doubleValue); - fclBridge.getSurfaceTexture().setDefaultBufferSize((int) (screenWidth * doubleValue), (int) (screenHeight * doubleValue)); + int width = (int) (screenWidth * doubleValue); + int height = (int) (screenHeight * doubleValue); + fclBridge.getSurfaceTexture().setDefaultBufferSize(width, height); + fclBridge.pushEventWindow(width, height); } } }; From 3aaaa9d9ef1b629dc17b7f193fa8d0cb517cd844 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Aug 2024 08:49:08 +0800 Subject: [PATCH 19/25] Update bug-report.yml --- .github/ISSUE_TEMPLATE/bug-report.yml | 68 ++++++++++++++++++--------- 1 file changed, 45 insertions(+), 23 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index 773d83c8..ccfba96a 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -1,74 +1,96 @@ -name: Bug Feedback +name: Bug Feedback / 错误反馈 description: - Report a bug. + Report a bug. 报告错误。 labels: bug body: - type: markdown attributes: value: | Please ensure you are using the **latest bata version** before you submit, you can get the latest beta version by checking update in launcher setting page. - + 请确认在你提交之前你使用的是最新版本,你可以在启动器的设置页内通过检测更新获取最新版本。 To improve communication efficiency, we suggest you join our community to report bugs. + 为了提高交流效率,我们建议你加入我们的社区报告错误。 You can find our community in community page of the launcher. + 你可以在启动器的社区页内找到我们的社区。 - type: input id: fcl-version attributes: - label: Launcher Version - description: Please enter the Fold Craft Launcher version you are using. - placeholder: e.g. 1.0.1 + label: Launcher Version / 启动器版本 + description: | + Please enter the Fold Craft Launcher version you are using. + 请输入你正在使用的Fold Craft Launcher版本。 + placeholder: e.g. 1.0.1 / 例如1.0.1 validations: required: true - type: input id: device attributes: - label: Device Information - description: Please enter the information of the device on which you encountered the bug. + label: Device Information / 设备信息 + description: | + Please enter the information of the device on which you encountered the bug. + 请输入你遇到错误的设备的信息。 placeholder: e.g. OPPO Find X3 Pro, Android 13, arm64 validations: required: true - type: textarea id: bug-report attributes: - label: Problem Description - description: Please describe the problem in as much detail as possible, especially how you encountered this bug. + label: Problem Description / 问题描述 + description: | + Please describe the problem in as much detail as possible, especially how you encountered this bug. + 请尽可能详细地描述问题,特别是你是如何遇到这个bug的。 validations: required: true - type: input id: java-version attributes: label: Java - description: Please enter the version of Java you are using. + description: | + Please enter the version of Java you are using. + 请输入你正在使用的Java版本。 placeholder: e.g. Java 17 - type: input id: renderer attributes: - label: Renderer - description: Please enter the renderer you are using. + label: Renderer / 渲染器 + description: | + Please enter the renderer you are using. + 请输入你正在使用的渲染器。 placeholder: e.g. Holy-GL4ES - type: input id: game-version attributes: - label: Game Version - description: If you are having trouble launching a game that was automatically downloaded through the Fold Craft Launcher, please enter the version of the game you are launching. + label: Game Version / 游戏版本 + description: | + If you are having trouble launching a game that was automatically downloaded through the Fold Craft Launcher, please enter the version of the game you are launching. + 如果你在启动通过Fold Craft Launcher自动下载的游戏时遇到问题,请输入你要启动的游戏版本。 placeholder: e.g. 1.19 - type: input id: game-modify attributes: - label: Modifications Made to the Game - description: If you have OptiFine, Forge, or other mods installed for the game, please enter your modifications below. + label: Modifications Made to the Game / 对游戏所做的修改 + description: | + If you have OptiFine, Forge, or other mods installed for the game, please enter your modifications below. + 如果你为游戏安装了OptiFine、Forge或其他模组,请在下面输入你的修改。 placeholder: e.g. OptiFine HD_U_G9, Rift - type: textarea id: game-crash-report attributes: - label: Game Crash Report - description: If there is a game crash report, please upload it below. + label: Game Crash Report / 游戏崩溃报告 + description: | + If there is a game crash report, please upload it below. + 如果有游戏崩溃报告,请在下面上传。 - type: textarea id: fcl-crash-report attributes: - label: Launcher Crash Report - description: If there is a launcher crash report, please upload it below. + label: Launcher Crash Report / 启动器崩溃报告 + description: | + If there is a launcher crash report, please upload it below. + 如果有启动器崩溃报告,请在下面上传。 - type: textarea id: fcl-logs attributes: - label: Launcher Log File - description: After encountering a problem, please click "Export Launcher Log" in the launcher setting page, and upload the exported log to the input field below. \ No newline at end of file + label: Launcher Log File / 启动器日志文件 + description: | + After encountering a problem, please click "Export Launcher Log" in the launcher setting page, and upload the exported log to the input field below. + 遇到问题后,请在启动器设置页面中单击“导出启动器日志”,并将导出的日志上传到下面的输入字段。 From e14298c8840c28d6b286b81f46f9f2bd26e4785e Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Aug 2024 09:00:25 +0800 Subject: [PATCH 20/25] Update feature-request.yml --- .github/ISSUE_TEMPLATE/feature-request.yml | 29 ++++++++++++++++------ 1 file changed, 22 insertions(+), 7 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index 003ab33e..d19f799d 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,21 +1,36 @@ -name: "Feature Request" -description: "Propose new features for Fold Craft Launcher" +name: Feature Request / 功能请求 +description: | + Propose new features for Fold Craft Launcher + 为Fold Craft Launcher提出新功能 labels: feature request body: - type: markdown attributes: - value: "Make sure to check the issues list for duplicates before submitting!" + value: | + Make sure to check the issues list for duplicates before submitting! + 提交前,请务必检查问题列表中的重复项! +- type: checkboxes + id: checks + attributes: + label: Before making issue / 在发布提问之前... + options: + - label: I understand this is a request, not a wish.我明白这是在提出请求而不是在许愿。 + required: true - type: textarea id: "feature" attributes: - label: Description - description: "Describe in detail the new features you would like to add." + label: Description / 描述 + description: | + Describe in detail the new features you would like to add. + 详细描述你要添加的新功能。 validations: required: true - type: textarea id: "reason" attributes: - label: Why - description: "Describe the benefits of this feature and why." + label: Why / 原因 + description: | + Describe the benefits of this feature and why. + 描述此功能的好处及其原因。 validations: required: true From 4ba579f9f58a840582ccb8d946bb95d6c38b52b1 Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Aug 2024 09:01:41 +0800 Subject: [PATCH 21/25] Update feature-request.yml --- .github/ISSUE_TEMPLATE/feature-request.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/feature-request.yml b/.github/ISSUE_TEMPLATE/feature-request.yml index d19f799d..795141e1 100644 --- a/.github/ISSUE_TEMPLATE/feature-request.yml +++ b/.github/ISSUE_TEMPLATE/feature-request.yml @@ -1,7 +1,7 @@ name: Feature Request / 功能请求 description: | - Propose new features for Fold Craft Launcher - 为Fold Craft Launcher提出新功能 + Propose new features for Fold Craft Launcher. + 为Fold Craft Launcher提出新功能。 labels: feature request body: - type: markdown From 0a49653e183b5f9ec6afc8ed84978a057b35cf3c Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Aug 2024 09:19:20 +0800 Subject: [PATCH 22/25] Update bug-report.yml --- .github/ISSUE_TEMPLATE/bug-report.yml | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml index ccfba96a..25a55b51 100644 --- a/.github/ISSUE_TEMPLATE/bug-report.yml +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -8,10 +8,24 @@ body: value: | Please ensure you are using the **latest bata version** before you submit, you can get the latest beta version by checking update in launcher setting page. 请确认在你提交之前你使用的是最新版本,你可以在启动器的设置页内通过检测更新获取最新版本。 + Please confirm that the question you are asking is not related to modpacks.If you ask about modpacks, we will directly delete it. + 请确认你询问的不是整合包相关的问题。如果你询问整合包相关问题,我们会直接删除。 To improve communication efficiency, we suggest you join our community to report bugs. 为了提高交流效率,我们建议你加入我们的社区报告错误。 You can find our community in community page of the launcher. 你可以在启动器的社区页内找到我们的社区。 + - type: checkboxes + id: checks + attributes: + label: Before making issue / 在发布提问之前... + options: + - label: I have read the content above.我已经阅读了上方的内容。 + required: true + - label: I understand what I'm asking is not about modpack.我明白我询问的不是整合包相关的问题。 + required: true + - label: I have searched for existing issues.我已经搜索了现有的 issues。 + required: true + - label: I have tried switching renderer.我已经尝试过切换渲染器。 - type: input id: fcl-version attributes: @@ -78,15 +92,15 @@ body: attributes: label: Game Crash Report / 游戏崩溃报告 description: | - If there is a game crash report, please upload it below. - 如果有游戏崩溃报告,请在下面上传。 + If there is a game crash report, please upload it(file) below. + 如果有游戏崩溃报告,请在下面上传(文件)。 - type: textarea id: fcl-crash-report attributes: label: Launcher Crash Report / 启动器崩溃报告 description: | - If there is a launcher crash report, please upload it below. - 如果有启动器崩溃报告,请在下面上传。 + If there is a launcher crash report, please upload it(file) below. + 如果有启动器崩溃报告,请在下面上传(文件)。 - type: textarea id: fcl-logs attributes: From b1f60fbe664b3274945e020736d5dcf318fe50b3 Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Sat, 24 Aug 2024 03:17:21 +0000 Subject: [PATCH 23/25] =?UTF-8?q?=E6=98=BE=E7=A4=BA=20Forge=20=E5=8F=91?= =?UTF-8?q?=E7=89=88=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fclcore/download/forge/ForgeVersion.java | 8 ++++---- .../fclcore/download/forge/ForgeVersionList.java | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersion.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersion.java index a8a83fb4..a77009ea 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersion.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersion.java @@ -27,7 +27,7 @@ public final class ForgeVersion implements Validation { private final String jobver; private final String version; private final int build; - private final double modified; + private final String modified; private final String[][] files; /** @@ -35,10 +35,10 @@ public final class ForgeVersion implements Validation { */ @SuppressWarnings("unused") public ForgeVersion() { - this(null, null, null, null, 0, 0, null); + this(null, null, null, null, 0, null, null); } - public ForgeVersion(String branch, String mcversion, String jobver, String version, int build, double modified, String[][] files) { + public ForgeVersion(String branch, String mcversion, String jobver, String version, int build, String modified, String[][] files) { this.branch = branch; this.mcversion = mcversion; this.jobver = jobver; @@ -68,7 +68,7 @@ public final class ForgeVersion implements Validation { return build; } - public double getModified() { + public String getModified() { return modified; } diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java index ecc9bd5e..00caefbc 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java @@ -23,10 +23,13 @@ import com.tungsten.fclcore.util.StringUtils; import com.tungsten.fclcore.util.io.HttpRequest; import com.tungsten.fclcore.util.versioning.VersionNumber; +import java.time.Instant; import java.util.Collections; import java.util.Map; import java.util.concurrent.CompletableFuture; +import static com.tungsten.fclcore.util.Logging.LOG; + public final class ForgeVersionList extends VersionList { private final DownloadProvider downloadProvider; @@ -75,8 +78,19 @@ public final class ForgeVersionList extends VersionList { if (jar == null) continue; + + Instant releaseDate = null; + if (version.getModified() != null) { + try { + long timestamp = Long.parseLong(version.getModified()); + releaseDate = Instant.ofEpochSecond(timestamp); + } catch (NumberFormatException e) { + LOG.warning("Failed to parse timestamp " + version.getModified(), e); + } + } + versions.put(gameVersion, new ForgeRemoteVersion( - toLookupVersion(version.getGameVersion()), version.getVersion(), null, Collections.singletonList(jar) + toLookupVersion(version.getGameVersion()), version.getVersion(), releaseDate, Collections.singletonList(jar) )); } } From 08804f04ae9c2a69e156b0ff898329ac0752368f Mon Sep 17 00:00:00 2001 From: Zkitefly Date: Sat, 24 Aug 2024 03:24:49 +0000 Subject: [PATCH 24/25] Fix --- .../com/tungsten/fclcore/download/forge/ForgeVersionList.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java index 00caefbc..9866ea41 100644 --- a/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java +++ b/FCLCore/src/main/java/com/tungsten/fclcore/download/forge/ForgeVersionList.java @@ -27,6 +27,7 @@ import java.time.Instant; import java.util.Collections; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.logging.Level; import static com.tungsten.fclcore.util.Logging.LOG; @@ -85,7 +86,7 @@ public final class ForgeVersionList extends VersionList { long timestamp = Long.parseLong(version.getModified()); releaseDate = Instant.ofEpochSecond(timestamp); } catch (NumberFormatException e) { - LOG.warning("Failed to parse timestamp " + version.getModified(), e); + LOG.log(Level.WARNING, "Failed to parse instant " + version.getModified(), e); } } From e9c8e8a3063dd04d0d0cbe09c4acc54fbf8b084d Mon Sep 17 00:00:00 2001 From: ShirosakiMio <852468399@qq.com> Date: Sat, 24 Aug 2024 12:02:27 +0800 Subject: [PATCH 25/25] change 'guiScale' from 0 to 4 --- FCL/src/main/assets/options.txt | 2 +- FCL/src/main/java/com/tungsten/fcl/setting/GameOption.java | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/FCL/src/main/assets/options.txt b/FCL/src/main/assets/options.txt index ec659a66..b87c1b6c 100644 --- a/FCL/src/main/assets/options.txt +++ b/FCL/src/main/assets/options.txt @@ -4,7 +4,7 @@ fov:0.0 gamma:0.5070422 saturation:0.0 renderDistance:2 -guiScale:0 +guiScale:4 particles:1 bobView:false anaglyph3d:false diff --git a/FCL/src/main/java/com/tungsten/fcl/setting/GameOption.java b/FCL/src/main/java/com/tungsten/fcl/setting/GameOption.java index 50eed126..1fd4a427 100644 --- a/FCL/src/main/java/com/tungsten/fcl/setting/GameOption.java +++ b/FCL/src/main/java/com/tungsten/fcl/setting/GameOption.java @@ -143,9 +143,9 @@ public class GameOption { String str = get("guiScale"); int guiScale; try { - guiScale = (str == null ? 0 : Integer.parseInt(str)); + guiScale = (str == null ? 4 : Integer.parseInt(str)); } catch (NumberFormatException ignore) { - guiScale = 0; + guiScale = 4; } int scale = Math.max(Math.min(width / 320, height / 240), 1); if (scale < guiScale || guiScale == 0) {