@@ -157,15 +157,15 @@ public void setFailed(boolean failed) {
157157 this .failed .set (failed );
158158 }
159159
160- public void download (RemoteMod .Version file ) {
160+ public void download (RemoteMod mod , RemoteMod .Version file ) {
161161 if (this .callback == null ) {
162- saveAs (file );
162+ saveAs (mod , file );
163163 } else {
164- this .callback .download (version .getProfile (), version .getVersion (), file );
164+ this .callback .download (version .getProfile (), version .getVersion (), mod , file );
165165 }
166166 }
167167
168- public void saveAs (RemoteMod .Version file ) {
168+ public void saveAs (RemoteMod mod , RemoteMod .Version file ) {
169169 String extension = StringUtils .substringAfterLast (file .getFile ().getFilename (), '.' );
170170
171171 FileChooser fileChooser = new FileChooser ();
@@ -287,7 +287,7 @@ protected ModDownloadPageSkin(DownloadPage control) {
287287 if (targetLoaders .contains (loader )) {
288288 list .getContent ().addAll (
289289 ComponentList .createComponentListTitle (i18n ("mods.download.recommend" , gameVersion )),
290- new ModItem (modVersion , control )
290+ new ModItem (control . addon , modVersion , control )
291291 );
292292 break resolve ;
293293 }
@@ -308,7 +308,7 @@ protected ModDownloadPageSkin(DownloadPage control) {
308308 ComponentList sublist = new ComponentList (() -> {
309309 ArrayList <ModItem > items = new ArrayList <>(versions .size ());
310310 for (RemoteMod .Version v : versions ) {
311- items .add (new ModItem (v , control ));
311+ items .add (new ModItem (control . addon , v , control ));
312312 }
313313 return items ;
314314 });
@@ -373,7 +373,7 @@ private static final class DependencyModItem extends StackPane {
373373
374374 private static final class ModItem extends StackPane {
375375
376- ModItem (RemoteMod .Version dataItem , DownloadPage selfPage ) {
376+ ModItem (RemoteMod mod , RemoteMod .Version dataItem , DownloadPage selfPage ) {
377377 VBox pane = new VBox (8 );
378378 pane .setPadding (new Insets (8 , 0 , 8 , 0 ));
379379
@@ -435,7 +435,7 @@ private static final class ModItem extends StackPane {
435435 }
436436
437437 RipplerContainer container = new RipplerContainer (pane );
438- FXUtils .onClicked (container , () -> Controllers .dialog (new ModVersion (dataItem , selfPage )));
438+ FXUtils .onClicked (container , () -> Controllers .dialog (new ModVersion (mod , dataItem , selfPage )));
439439 getChildren ().setAll (container );
440440
441441 // Workaround for https://github.com/HMCL-dev/HMCL/issues/2129
@@ -444,7 +444,7 @@ private static final class ModItem extends StackPane {
444444 }
445445
446446 private static final class ModVersion extends JFXDialogLayout {
447- public ModVersion (RemoteMod .Version version , DownloadPage selfPage ) {
447+ public ModVersion (RemoteMod mod , RemoteMod .Version version , DownloadPage selfPage ) {
448448 RemoteModRepository .Type type = selfPage .repository .getType ();
449449
450450 String title = switch (type ) {
@@ -458,7 +458,7 @@ public ModVersion(RemoteMod.Version version, DownloadPage selfPage) {
458458
459459 VBox box = new VBox (8 );
460460 box .setPadding (new Insets (8 ));
461- ModItem modItem = new ModItem (version , selfPage );
461+ ModItem modItem = new ModItem (mod , version , selfPage );
462462 modItem .setMouseTransparent (true ); // Item is displayed for info, clicking shouldn't open the dialog again
463463 box .getChildren ().setAll (modItem );
464464 SpinnerPane spinnerPane = new SpinnerPane ();
@@ -484,7 +484,7 @@ public ModVersion(RemoteMod.Version version, DownloadPage selfPage) {
484484 if (type == RemoteModRepository .Type .MODPACK || !spinnerPane .isLoading () && spinnerPane .getFailedReason () == null ) {
485485 fireEvent (new DialogCloseEvent ());
486486 }
487- selfPage .download (version );
487+ selfPage .download (mod , version );
488488 });
489489 }
490490
@@ -494,7 +494,7 @@ public ModVersion(RemoteMod.Version version, DownloadPage selfPage) {
494494 if (!spinnerPane .isLoading () && spinnerPane .getFailedReason () == null ) {
495495 fireEvent (new DialogCloseEvent ());
496496 }
497- selfPage .saveAs (version );
497+ selfPage .saveAs (mod , version );
498498 });
499499
500500 JFXButton cancelButton = new JFXButton (i18n ("button.cancel" ));
@@ -548,6 +548,6 @@ private void loadDependencies(RemoteMod.Version version, DownloadPage selfPage,
548548 }
549549
550550 public interface DownloadCallback {
551- void download (Profile profile , @ Nullable String version , RemoteMod .Version file );
551+ void download (Profile profile , @ Nullable String version , RemoteMod mod , RemoteMod .Version file );
552552 }
553553}
0 commit comments