Skip to content

Commit f2f91f6

Browse files
committed
Merge branch 'main' into mod-changelog
# Conflicts: # HMCLCore/src/main/java/org/jackhuang/hmcl/mod/LocalModFile.java
2 parents aa7c761 + c1396c0 commit f2f91f6

38 files changed

Lines changed: 532 additions & 531 deletions

HMCL/src/main/java/org/jackhuang/hmcl/game/LauncherHelper.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -389,7 +389,7 @@ private static Task<JavaRuntime> checkGameState(Profile profile, VersionSetting
389389
int targetJavaVersionMajor = Integer.parseInt(setting.getJavaVersion());
390390
GameJavaVersion minimumJavaVersion = GameJavaVersion.getMinimumJavaVersion(gameVersion);
391391

392-
if (minimumJavaVersion != null && targetJavaVersionMajor < minimumJavaVersion.getMajorVersion()) {
392+
if (minimumJavaVersion != null && targetJavaVersionMajor < minimumJavaVersion.majorVersion()) {
393393
Controllers.dialog(
394394
i18n("launch.failed.java_version_too_low"),
395395
i18n("message.error"),
@@ -634,7 +634,7 @@ && isCompatibleWithX86Java()) {
634634
private static CompletableFuture<JavaRuntime> downloadJava(GameJavaVersion javaVersion, Profile profile) {
635635
CompletableFuture<JavaRuntime> future = new CompletableFuture<>();
636636
Controllers.dialog(new MessageDialogPane.Builder(
637-
i18n("launch.advice.require_newer_java_version", javaVersion.getMajorVersion()),
637+
i18n("launch.advice.require_newer_java_version", javaVersion.majorVersion()),
638638
i18n("message.warning"),
639639
MessageType.QUESTION)
640640
.yesOrNo(() -> {

HMCL/src/main/java/org/jackhuang/hmcl/java/HMCLJavaRepository.java

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,9 @@
3030
import org.jetbrains.annotations.Nullable;
3131

3232
import java.io.IOException;
33-
import java.nio.file.*;
33+
import java.nio.file.DirectoryStream;
34+
import java.nio.file.Files;
35+
import java.nio.file.Path;
3436
import java.util.*;
3537

3638
import static org.jackhuang.hmcl.util.logging.Logger.LOG;
@@ -57,7 +59,7 @@ public Path getJavaDir(Platform platform, String name) {
5759
}
5860

5961
public Path getJavaDir(Platform platform, GameJavaVersion gameJavaVersion) {
60-
return getJavaDir(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
62+
return getJavaDir(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
6163
}
6264

6365
@Override
@@ -66,15 +68,15 @@ public Path getManifestFile(Platform platform, String name) {
6668
}
6769

6870
public Path getManifestFile(Platform platform, GameJavaVersion gameJavaVersion) {
69-
return getManifestFile(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
71+
return getManifestFile(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
7072
}
7173

7274
public boolean isInstalled(Platform platform, String name) {
7375
return Files.exists(getManifestFile(platform, name));
7476
}
7577

7678
public boolean isInstalled(Platform platform, GameJavaVersion gameJavaVersion) {
77-
return isInstalled(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
79+
return isInstalled(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
7880
}
7981

8082
public @Nullable Path getJavaExecutable(Platform platform, String name) {
@@ -94,7 +96,7 @@ public boolean isInstalled(Platform platform, GameJavaVersion gameJavaVersion) {
9496
}
9597

9698
public @Nullable Path getJavaExecutable(Platform platform, GameJavaVersion gameJavaVersion) {
97-
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.getComponent());
99+
return getJavaExecutable(platform, MOJANG_JAVA_PREFIX + gameJavaVersion.component());
98100
}
99101

100102
private static void getAllJava(List<JavaRuntime> list, Platform platform, Path platformRoot, boolean isManaged) {
@@ -169,7 +171,7 @@ public Task<JavaRuntime> getDownloadJavaTask(DownloadProvider downloadProvider,
169171

170172
Map<String, Object> update = new LinkedHashMap<>();
171173
update.put("provider", "mojang");
172-
update.put("component", gameJavaVersion.getComponent());
174+
update.put("component", gameJavaVersion.component());
173175

174176
Map<String, JavaLocalFiles.Local> files = new LinkedHashMap<>();
175177
result.remoteFiles.getFiles().forEach((path, file) -> {

HMCL/src/main/java/org/jackhuang/hmcl/ui/FXUtils.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,14 @@ public static void limitSize(ImageView imageView, double maxWidth, double maxHei
300300
});
301301
}
302302

303+
public static Node wrap(Node node) {
304+
return limitingSize(node, 30, 20);
305+
}
306+
307+
public static Node wrap(SVG svg) {
308+
return wrap(svg.createIcon(20));
309+
}
310+
303311
private static class ListenerPair<T> {
304312
private final ObservableValue<T> value;
305313
private final ChangeListener<? super T> listener;

HMCL/src/main/java/org/jackhuang/hmcl/ui/account/AccountListPage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
import java.util.Locale;
5555

5656
import static org.jackhuang.hmcl.setting.ConfigHolder.globalConfig;
57-
import static org.jackhuang.hmcl.ui.versions.VersionPage.wrap;
57+
import static org.jackhuang.hmcl.ui.FXUtils.wrap;
5858
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
5959
import static org.jackhuang.hmcl.util.javafx.ExtendedProperties.createSelectedItemPropertyFor;
6060
import static org.jackhuang.hmcl.util.logging.Logger.LOG;

HMCL/src/main/java/org/jackhuang/hmcl/ui/construct/AdvancedListBox.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import org.jackhuang.hmcl.ui.SVG;
3131
import org.jackhuang.hmcl.ui.animation.ContainerAnimations;
3232
import org.jackhuang.hmcl.ui.animation.TransitionPane;
33-
import org.jackhuang.hmcl.ui.versions.VersionPage;
3433

3534
import java.util.function.Consumer;
3635

@@ -75,7 +74,7 @@ private AdvancedListItem createNavigationDrawerItem(String title, SVG leftGraphi
7574
item.setActionButtonVisible(false);
7675
item.setTitle(title);
7776
if (leftGraphic != null) {
78-
item.setLeftGraphic(VersionPage.wrap(leftGraphic));
77+
item.setLeftGraphic(FXUtils.wrap(leftGraphic));
7978
}
8079
return item;
8180
}

HMCL/src/main/java/org/jackhuang/hmcl/ui/decorator/DecoratorSkin.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -328,6 +328,18 @@ private Node createNavBar(Decorator skinnable, double leftPaneWidth, boolean can
328328
}
329329
if (onTitleBarDoubleClick != null)
330330
center.setOnMouseClicked(onTitleBarDoubleClick);
331+
center.setOnMouseDragged(mouseEvent -> {
332+
if (!getSkinnable().isDragging() && primaryStage.isMaximized()) {
333+
getSkinnable().setDragging(true);
334+
mouseInitX = mouseEvent.getScreenX();
335+
mouseInitY = mouseEvent.getScreenY();
336+
primaryStage.setMaximized(false);
337+
stageInitWidth = primaryStage.getWidth();
338+
stageInitHeight = primaryStage.getHeight();
339+
primaryStage.setY(stageInitY = 0);
340+
primaryStage.setX(stageInitX = mouseInitX - stageInitWidth / 2);
341+
}
342+
});
331343
navBar.setCenter(center);
332344

333345
if (canRefresh) {

HMCL/src/main/java/org/jackhuang/hmcl/ui/download/AbstractInstallersPage.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,12 @@
2424
import javafx.geometry.Insets;
2525
import javafx.geometry.Pos;
2626
import javafx.scene.control.*;
27+
import javafx.scene.layout.BorderPane;
2728
import javafx.scene.layout.FlowPane;
2829
import javafx.scene.layout.HBox;
2930
import org.jackhuang.hmcl.download.DownloadProvider;
3031
import org.jackhuang.hmcl.download.LibraryAnalyzer;
3132
import org.jackhuang.hmcl.ui.Controllers;
32-
import javafx.scene.layout.BorderPane;
3333
import org.jackhuang.hmcl.ui.FXUtils;
3434
import org.jackhuang.hmcl.ui.InstallerItem;
3535
import org.jackhuang.hmcl.ui.construct.MessageDialogPane;
@@ -38,9 +38,11 @@
3838
import org.jackhuang.hmcl.ui.wizard.WizardPage;
3939
import org.jackhuang.hmcl.util.SettingsMap;
4040

41+
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
4142
import static org.jackhuang.hmcl.util.i18n.I18n.i18n;
4243

4344
public abstract class AbstractInstallersPage extends Control implements WizardPage {
45+
public static final String FABRIC_QUILT_API_TIP = "fabricQuiltApi";
4446
protected final WizardController controller;
4547

4648
protected InstallerItem.InstallerItemGroup group;
@@ -56,8 +58,14 @@ public AbstractInstallersPage(WizardController controller, String gameVersion, D
5658
String libraryId = library.getLibraryId();
5759
if (libraryId.equals(LibraryAnalyzer.LibraryType.MINECRAFT.getPatchId())) continue;
5860
library.setOnInstall(() -> {
59-
if (LibraryAnalyzer.LibraryType.FABRIC_API.getPatchId().equals(libraryId)) {
60-
Controllers.dialog(i18n("install.installer.fabric-api.warning"), i18n("message.warning"), MessageDialogPane.MessageType.WARNING);
61+
if (!Boolean.TRUE.equals(config().getShownTips().get(FABRIC_QUILT_API_TIP))
62+
&& (LibraryAnalyzer.LibraryType.FABRIC_API.getPatchId().equals(libraryId)
63+
|| LibraryAnalyzer.LibraryType.QUILT_API.getPatchId().equals(libraryId))) {
64+
Controllers.dialog(new MessageDialogPane.Builder(
65+
i18n("install.installer.fabric-quilt-api.warning", i18n("install.installer." + libraryId)),
66+
i18n("message.warning"),
67+
MessageDialogPane.MessageType.WARNING
68+
).ok(null).addCancel(i18n("button.do_not_show_again"), () -> config().getShownTips().put(FABRIC_QUILT_API_TIP, true)).build());
6169
}
6270

6371
if (!(library.resolvedStateProperty().get() instanceof InstallerItem.IncompatibleState))

HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ExportWizardProvider.java

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,10 @@
2222
import org.jackhuang.hmcl.mod.ModAdviser;
2323
import org.jackhuang.hmcl.mod.ModpackExportInfo;
2424
import org.jackhuang.hmcl.mod.mcbbs.McbbsModpackExportTask;
25+
import org.jackhuang.hmcl.mod.modrinth.ModrinthModpackExportTask;
2526
import org.jackhuang.hmcl.mod.multimc.MultiMCInstanceConfiguration;
2627
import org.jackhuang.hmcl.mod.multimc.MultiMCModpackExportTask;
2728
import org.jackhuang.hmcl.mod.server.ServerModpackExportTask;
28-
import org.jackhuang.hmcl.mod.modrinth.ModrinthModpackExportTask;
2929
import org.jackhuang.hmcl.setting.Config;
3030
import org.jackhuang.hmcl.setting.FontManager;
3131
import org.jackhuang.hmcl.setting.Profile;
@@ -41,7 +41,9 @@
4141

4242
import java.nio.file.Files;
4343
import java.nio.file.Path;
44-
import java.util.*;
44+
import java.util.Collection;
45+
import java.util.Collections;
46+
import java.util.List;
4547

4648
import static org.jackhuang.hmcl.setting.ConfigHolder.config;
4749

@@ -132,7 +134,9 @@ public void execute() throws Exception {
132134
exported.getAuthlibInjectorServers().setAll(config().getAuthlibInjectorServers());
133135

134136
zip.putTextFile(exported.toJson(), ".hmcl/hmcl.json");
135-
zip.putFile(tempModpack, "modpack.zip");
137+
zip.putFile(tempModpack, ModpackTypeSelectionPage.MODPACK_TYPE_MODRINTH.equals(modpackType)
138+
? "modpack.mrpack"
139+
: "modpack.zip");
136140

137141
Path bg = Metadata.HMCL_CURRENT_DIRECTORY.resolve("background");
138142
if (!Files.isDirectory(bg))
@@ -263,10 +267,10 @@ private Task<?> exportAsModrinth(ModpackExportInfo exportInfo, Path modpackFile)
263267
@Override
264268
public void execute() {
265269
dependency = new ModrinthModpackExportTask(
266-
profile.getRepository(),
267-
version,
268-
exportInfo,
269-
modpackFile
270+
profile.getRepository(),
271+
version,
272+
exportInfo,
273+
modpackFile
270274
);
271275
}
272276

HMCL/src/main/java/org/jackhuang/hmcl/ui/export/ModpackInfoPage.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ public ModpackInfoPage(WizardController controller, HMCLGameRepository gameRepos
109109
private void onNext() {
110110
FileChooser fileChooser = new FileChooser();
111111
fileChooser.setTitle(i18n("modpack.wizard.step.initialization.save"));
112-
if (controller.getSettings().get(MODPACK_TYPE) == MODPACK_TYPE_MODRINTH) {
112+
if (!packWithLauncher.get() && controller.getSettings().get(MODPACK_TYPE) == MODPACK_TYPE_MODRINTH) {
113113
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter(i18n("modpack"), "*.mrpack"));
114114
fileChooser.setInitialFileName(name.get() + (OperatingSystem.CURRENT_OS == OperatingSystem.MACOS ? "" : ".mrpack"));
115115
} else {

HMCL/src/main/java/org/jackhuang/hmcl/ui/main/JavaDownloadDialog.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,10 @@
3838
import org.jackhuang.hmcl.java.JavaInfo;
3939
import org.jackhuang.hmcl.java.JavaManager;
4040
import org.jackhuang.hmcl.setting.DownloadProviders;
41-
import org.jackhuang.hmcl.task.*;
41+
import org.jackhuang.hmcl.task.FileDownloadTask;
42+
import org.jackhuang.hmcl.task.GetTask;
43+
import org.jackhuang.hmcl.task.Schedulers;
44+
import org.jackhuang.hmcl.task.Task;
4245
import org.jackhuang.hmcl.ui.Controllers;
4346
import org.jackhuang.hmcl.ui.FXUtils;
4447
import org.jackhuang.hmcl.ui.construct.DialogCloseEvent;
@@ -116,7 +119,7 @@ private final class DownloadMojangJava extends DialogPane {
116119
vbox.getChildren().add(prompt);
117120

118121
for (GameJavaVersion version : supportedGameJavaVersions) {
119-
JFXRadioButton button = new JFXRadioButton("Java " + version.getMajorVersion());
122+
JFXRadioButton button = new JFXRadioButton("Java " + version.majorVersion());
120123
button.setUserData(version);
121124
vbox.getChildren().add(button);
122125
toggleGroup.getToggles().add(button);
@@ -248,7 +251,7 @@ private final class DownloadDiscoJava extends JFXDialogLayout {
248251

249252
for (int i = 0; i < versions.size(); i++) {
250253
DiscoJavaRemoteVersion version = versions.get(i);
251-
if (version.getJdkVersion() == GameJavaVersion.LATEST.getMajorVersion()) {
254+
if (version.getJdkVersion() == GameJavaVersion.LATEST.majorVersion()) {
252255
remoteVersionBox.getSelectionModel().select(i);
253256
return;
254257
}

0 commit comments

Comments
 (0)