From c51e5442334aa01c00b5f34392ee2214df2c4f9d Mon Sep 17 00:00:00 2001 From: StarsShine11904 <89504980+StarsShine11904@users.noreply.github.com> Date: Mon, 7 Sep 2026 17:27:29 +0800 Subject: [PATCH] feat: support loader-specific window icons for Fabric and Quilt --- .../modloadingscreen/ActualLoadingScreen.java | 17 ++++++++++++++--- .../assets/mod-loading-screen/icon-fabric.png | Bin 0 -> 1386 bytes .../assets/mod-loading-screen/icon-quilt.png | Bin 0 -> 4215 bytes 3 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 src/main/resources/assets/mod-loading-screen/icon-fabric.png create mode 100644 src/main/resources/assets/mod-loading-screen/icon-quilt.png diff --git a/src/main/java/io/github/gaming32/modloadingscreen/ActualLoadingScreen.java b/src/main/java/io/github/gaming32/modloadingscreen/ActualLoadingScreen.java index 8c5a56b..0c75ec5 100644 --- a/src/main/java/io/github/gaming32/modloadingscreen/ActualLoadingScreen.java +++ b/src/main/java/io/github/gaming32/modloadingscreen/ActualLoadingScreen.java @@ -181,9 +181,20 @@ public static void startLoadingScreen(boolean fabricReady) { dialog.setResizable(false); try { - dialog.setIconImage(ImageIO.read(findImageUrl("icon", "icon.png", ImageIO.getReaderFileSuffixes()))); + // Determine the loader-specific icon filename based on the runtime environment + final String loaderIconName = runningOnQuilt ? "icon-quilt.png" : "icon-fabric.png"; + URL iconUrl = null; + try { + iconUrl = findImageUrl("icon", loaderIconName, ImageIO.getReaderFileSuffixes()); + } catch (Exception ignored) { + // Fall back to default icon.png if loader-specific icon cannot be found + } + if (iconUrl == null) { + iconUrl = findImageUrl("icon", "icon.png", ImageIO.getReaderFileSuffixes()); + } + dialog.setIconImage(ImageIO.read(iconUrl)); } catch (Exception e) { - println("Failed to load icon.png", e); + println("Failed to load window icon", e); } ImageIcon background; @@ -598,4 +609,4 @@ public static void main(String[] args) { } close(); } -} +} \ No newline at end of file diff --git a/src/main/resources/assets/mod-loading-screen/icon-fabric.png b/src/main/resources/assets/mod-loading-screen/icon-fabric.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3f0a4c290ee4a43f699c2e936e6f1467a32aca GIT binary patch literal 1386 zcmeAS@N?(olHy`uVBq!ia0vp^CqS5k4M?tyST~P>fz{B{#WAE}&YQdEv!~vaJ^nHI zqx;T(F%nxd%}l#|qd2E+32mv;ocfMs_xpAAj^eRXv%JG&zv#bM_gm}^S5SBq#}uU< z8nIp>6NhmiosnWI`WX3yOj7FnN{x$ytqrLFJyu0%y!6mQ!4XwK^B?eC{ttN(rG zg`dhXoiy_ptw*WNBaHCy|o^%OV~xA3Zea6KtDZx(@7*gb$lGf95$``&s(!kBu`g&5Qs4u7By*!xnyL=j*(c zbXSPmh&ydGCMdm6l6>{;TU&koSL18{KJVE4x#!iv!&g7uUA0^LyS04H3%njl-q{^0 z`|8`=*2{n2>&<)j&Ov$Bk%f8H-`?a^e=qr+98>${{4z@T5e8iOrAMn%{2Q`gQ-MdDY*u=NINY z^RTunUb1avhK%!Fwr2j@VIO0z>feaDe`AlGZu#m}Hh3~dV}efk##PQos`k47y%x29 z)AL8If0r8D)<*rmd*SQdwShg!D{g=OpZ|Yt)w)c>bq=S*ffhJwPAK;7zS^H5zxUUY zEpxRp%|9apYl1cDDbmXV)fQl2bcv!fI4__~pN^5AMH}|F2W`S5NpTUN`uheXyf& z1>bV%qj#tNu2T~}f;UGkOVhh%5z>B{(Z>{Te0<0R7MuV7Gg~Y9n*4b^9mrwuboFyt I=akR{03>2cGynhq literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/mod-loading-screen/icon-quilt.png b/src/main/resources/assets/mod-loading-screen/icon-quilt.png new file mode 100644 index 0000000000000000000000000000000000000000..9206ed678ea828bbcab0c6e05390ea608332e041 GIT binary patch literal 4215 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 literal 0 HcmV?d00001