mirror of
https://github.com/HMCL-dev/HMCL.git
synced 2025-09-15 14:56:05 -04:00
Fix optifine
This commit is contained in:
parent
71cfa64b16
commit
fb1fc92b7c
@ -25,6 +25,7 @@ import org.jackhuang.hmcl.auth.AuthInfo;
|
|||||||
import org.jackhuang.hmcl.auth.AuthenticationException;
|
import org.jackhuang.hmcl.auth.AuthenticationException;
|
||||||
import org.jackhuang.hmcl.auth.ServerDisconnectException;
|
import org.jackhuang.hmcl.auth.ServerDisconnectException;
|
||||||
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
import org.jackhuang.hmcl.download.DefaultDependencyManager;
|
||||||
|
import org.jackhuang.hmcl.download.MaintainTask;
|
||||||
import org.jackhuang.hmcl.launch.*;
|
import org.jackhuang.hmcl.launch.*;
|
||||||
import org.jackhuang.hmcl.mod.CurseCompletionTask;
|
import org.jackhuang.hmcl.mod.CurseCompletionTask;
|
||||||
import org.jackhuang.hmcl.setting.LauncherVisibility;
|
import org.jackhuang.hmcl.setting.LauncherVisibility;
|
||||||
@ -73,7 +74,7 @@ public final class LauncherHelper {
|
|||||||
private void launch0(Profile profile, Account account, String selectedVersion, File scriptFile) {
|
private void launch0(Profile profile, Account account, String selectedVersion, File scriptFile) {
|
||||||
GameRepository repository = profile.getRepository();
|
GameRepository repository = profile.getRepository();
|
||||||
DefaultDependencyManager dependencyManager = profile.getDependency();
|
DefaultDependencyManager dependencyManager = profile.getDependency();
|
||||||
Version version = repository.getResolvedVersion(selectedVersion);
|
Version version = MaintainTask.maintain(repository.getResolvedVersion(selectedVersion));
|
||||||
VersionSetting setting = profile.getVersionSetting(selectedVersion);
|
VersionSetting setting = profile.getVersionSetting(selectedVersion);
|
||||||
Optional<String> gameVersion = GameVersion.minecraftVersion(repository.getVersionJar(version));
|
Optional<String> gameVersion = GameVersion.minecraftVersion(repository.getVersionJar(version));
|
||||||
|
|
||||||
@ -219,6 +220,9 @@ public final class LauncherHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void emitStatus(LoadingState state) {
|
public void emitStatus(LoadingState state) {
|
||||||
|
if (state == LoadingState.DONE)
|
||||||
|
Controllers.closeDialog();
|
||||||
|
|
||||||
launchingStepsPane.setTitle(state.getLocalizedMessage());
|
launchingStepsPane.setTitle(state.getLocalizedMessage());
|
||||||
launchingStepsPane.setSubtitle((state.ordinal() + 1) + " / " + LoadingState.values().length);
|
launchingStepsPane.setSubtitle((state.ordinal() + 1) + " / " + LoadingState.values().length);
|
||||||
}
|
}
|
||||||
|
@ -54,6 +54,9 @@ import java.util.Collections;
|
|||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.jackhuang.hmcl.util.StringUtils.removePrefix;
|
||||||
|
import static org.jackhuang.hmcl.util.StringUtils.removeSuffix;
|
||||||
|
|
||||||
public final class MainPage extends StackPane implements DecoratorPage {
|
public final class MainPage extends StackPane implements DecoratorPage {
|
||||||
|
|
||||||
private final StringProperty title = new SimpleStringProperty(this, "title", Launcher.i18n("main_page"));
|
private final StringProperty title = new SimpleStringProperty(this, "title", Launcher.i18n("main_page"));
|
||||||
@ -94,6 +97,10 @@ public final class MainPage extends StackPane implements DecoratorPage {
|
|||||||
FXUtils.installTooltip(btnRefresh, Launcher.i18n("button.refresh"));
|
FXUtils.installTooltip(btnRefresh, Launcher.i18n("button.refresh"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String modifyVersion(String gameVersion, String version) {
|
||||||
|
return removeSuffix(removePrefix(removeSuffix(removePrefix(version.replace(gameVersion, "").trim(), "-"), "-"), "_"), "_");
|
||||||
|
}
|
||||||
|
|
||||||
private Node buildNode(HMCLGameRepository repository, Version version, String game) {
|
private Node buildNode(HMCLGameRepository repository, Version version, String game) {
|
||||||
Profile profile = repository.getProfile();
|
Profile profile = repository.getProfile();
|
||||||
String id = version.getId();
|
String id = version.getId();
|
||||||
@ -105,13 +112,13 @@ public final class MainPage extends StackPane implements DecoratorPage {
|
|||||||
StringBuilder libraries = new StringBuilder();
|
StringBuilder libraries = new StringBuilder();
|
||||||
for (Library library : version.getLibraries()) {
|
for (Library library : version.getLibraries()) {
|
||||||
if (library.getGroupId().equalsIgnoreCase("net.minecraftforge") && library.getArtifactId().equalsIgnoreCase("forge")) {
|
if (library.getGroupId().equalsIgnoreCase("net.minecraftforge") && library.getArtifactId().equalsIgnoreCase("forge")) {
|
||||||
libraries.append(Launcher.i18n("install.installer.forge")).append(": ").append(StringUtils.removeSuffix(StringUtils.removePrefix(library.getVersion().replaceAll("(?i)forge", "").replace(game, "").trim(), "-"), "-")).append("\n");
|
libraries.append(Launcher.i18n("install.installer.forge")).append(": ").append(modifyVersion(game, library.getVersion().replaceAll("(?i)forge", ""))).append("\n");
|
||||||
}
|
}
|
||||||
if (library.getGroupId().equalsIgnoreCase("com.mumfrey") && library.getArtifactId().equalsIgnoreCase("liteloader")) {
|
if (library.getGroupId().equalsIgnoreCase("com.mumfrey") && library.getArtifactId().equalsIgnoreCase("liteloader")) {
|
||||||
libraries.append(Launcher.i18n("install.installer.liteloader")).append(": ").append(StringUtils.removeSuffix(StringUtils.removePrefix(library.getVersion().replaceAll("(?i)liteloader", "").replace(game, "").trim(), "-"), "-")).append("\n");
|
libraries.append(Launcher.i18n("install.installer.liteloader")).append(": ").append(modifyVersion(game, library.getVersion().replaceAll("(?i)liteloader", ""))).append("\n");
|
||||||
}
|
}
|
||||||
if (library.getGroupId().equalsIgnoreCase("net.optifine") && library.getArtifactId().equalsIgnoreCase("optifine")) {
|
if (library.getGroupId().equalsIgnoreCase("net.optifine") && library.getArtifactId().equalsIgnoreCase("optifine")) {
|
||||||
libraries.append(Launcher.i18n("install.installer.optifine")).append(": ").append(StringUtils.removeSuffix(StringUtils.removePrefix(library.getVersion().replaceAll("(?i)optifine", "").replace(game, "").trim(), "-"), "-")).append("\n");
|
libraries.append(Launcher.i18n("install.installer.optifine")).append(": ").append(modifyVersion(game, library.getVersion().replaceAll("(?i)optifine", ""))).append("\n");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -60,20 +60,24 @@ public interface TaskExecutorDialogWizardDisplayer extends AbstractWizardDisplay
|
|||||||
TaskExecutor executor = task.executor(new TaskListener() {
|
TaskExecutor executor = task.executor(new TaskListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onStop(boolean success, TaskExecutor executor) {
|
public void onStop(boolean success, TaskExecutor executor) {
|
||||||
|
JFXUtilities.runInFX(() -> {
|
||||||
|
Controllers.closeDialog();
|
||||||
if (success) {
|
if (success) {
|
||||||
if (settings.containsKey("success_message") && settings.get("success_message") instanceof String)
|
if (settings.containsKey("success_message") && settings.get("success_message") instanceof String)
|
||||||
JFXUtilities.runInFX(() -> Controllers.dialog((String) settings.get("success_message"), null, MessageBox.FINE_MESSAGE, () -> Controllers.navigate(null)));
|
Controllers.dialog((String) settings.get("success_message"), null, MessageBox.FINE_MESSAGE, () -> Controllers.navigate(null));
|
||||||
else if (!settings.containsKey("forbid_success_message"))
|
else if (!settings.containsKey("forbid_success_message"))
|
||||||
JFXUtilities.runInFX(() -> Controllers.dialog(Launcher.i18n("message.success"), null, MessageBox.FINE_MESSAGE, () -> Controllers.navigate(null)));
|
Controllers.dialog(Launcher.i18n("message.success"), null, MessageBox.FINE_MESSAGE, () -> Controllers.navigate(null));
|
||||||
} else {
|
} else {
|
||||||
if (executor.getLastException() == null)
|
if (executor.getLastException() == null)
|
||||||
return;
|
return;
|
||||||
String appendix = StringUtils.getStackTrace(executor.getLastException());
|
String appendix = StringUtils.getStackTrace(executor.getLastException());
|
||||||
if (settings.containsKey("failure_message") && settings.get("failure_message") instanceof String)
|
if (settings.containsKey("failure_message") && settings.get("failure_message") instanceof String)
|
||||||
JFXUtilities.runInFX(() -> Controllers.dialog(appendix, (String) settings.get("failure_message"), MessageBox.ERROR_MESSAGE, () -> Controllers.navigate(null)));
|
Controllers.dialog(appendix, (String) settings.get("failure_message"), MessageBox.ERROR_MESSAGE, () -> Controllers.navigate(null));
|
||||||
else if (!settings.containsKey("forbid_failure_message"))
|
else if (!settings.containsKey("forbid_failure_message"))
|
||||||
JFXUtilities.runInFX(() -> Controllers.dialog(appendix, Launcher.i18n("wizard.failed"), MessageBox.ERROR_MESSAGE, () -> Controllers.navigate(null)));
|
Controllers.dialog(appendix, Launcher.i18n("wizard.failed"), MessageBox.ERROR_MESSAGE, () -> Controllers.navigate(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
pane.setExecutor(executor);
|
pane.setExecutor(executor);
|
||||||
|
@ -57,8 +57,8 @@ archive.author=Authors
|
|||||||
archive.game_version=Game
|
archive.game_version=Game
|
||||||
archive.version=Version
|
archive.version=Version
|
||||||
|
|
||||||
assets.download=Check for the completion of assets
|
assets.download=Download assets
|
||||||
assets.download_all=Download Assets Files
|
assets.download_all=Check for the completion of assets
|
||||||
assets.failed=Failed to get the list, try again.
|
assets.failed=Failed to get the list, try again.
|
||||||
assets.failed_download=Failed to download assets, may cause no sounds and language files.
|
assets.failed_download=Failed to download assets, may cause no sounds and language files.
|
||||||
|
|
||||||
|
@ -57,8 +57,8 @@ archive.author=作者
|
|||||||
archive.game_version=游戏版本
|
archive.game_version=游戏版本
|
||||||
archive.version=版本
|
archive.version=版本
|
||||||
|
|
||||||
assets.download=检查资源文件完整性
|
assets.download=下载资源
|
||||||
assets.download_all=下载资源文件
|
assets.download_all=检查资源文件完整性
|
||||||
assets.failed=获取列表失败,请刷新重试。
|
assets.failed=获取列表失败,请刷新重试。
|
||||||
assets.failed_download=下载资源文件失败,可能导致没有中文和声音。
|
assets.failed_download=下载资源文件失败,可能导致没有中文和声音。
|
||||||
|
|
||||||
|
@ -41,9 +41,12 @@ public class MaintainTask extends TaskResult<Version> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
Version newVersion = version;
|
setResult(maintain(version));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Version maintain(Version version) {
|
||||||
Library forge = null, liteLoader = null, optiFine = null;
|
Library forge = null, liteLoader = null, optiFine = null;
|
||||||
List<String> args = new ArrayList<>(StringUtils.tokenize(newVersion.getMinecraftArguments().orElse("")));
|
List<String> args = new ArrayList<>(StringUtils.tokenize(version.getMinecraftArguments().orElse("")));
|
||||||
|
|
||||||
for (Library library : version.getLibraries()) {
|
for (Library library : version.getLibraries()) {
|
||||||
if (library.getGroupId().equalsIgnoreCase("net.minecraftforge") && library.getArtifactId().equalsIgnoreCase("forge"))
|
if (library.getGroupId().equalsIgnoreCase("net.minecraftforge") && library.getArtifactId().equalsIgnoreCase("forge"))
|
||||||
@ -84,11 +87,13 @@ public class MaintainTask extends TaskResult<Version> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if ((liteLoader != null || forge != null) && optiFine != null) {
|
if ((liteLoader != null || forge != null) && optiFine != null) {
|
||||||
// If forge or LiteLoader installed, OptiFine Tweaker will cause crash.
|
// If forge or LiteLoader installed, OptiFine Forge Tweaker is needed.
|
||||||
removeTweakClass(args, "optifine");
|
removeTweakClass(args, "optifine");
|
||||||
|
args.add("--tweakClass");
|
||||||
|
args.add("optifine.OptiFineForgeTweaker");
|
||||||
}
|
}
|
||||||
|
|
||||||
setResult(newVersion.setMinecraftArguments(StringUtils.makeCommand(args)));
|
return version.setMinecraftArguments(StringUtils.makeCommand(args));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -70,13 +70,13 @@ public final class OptiFineInstallTask extends TaskResult<Version> {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void execute() {
|
public void execute() {
|
||||||
String remoteVersion = remote.getSelfVersion();
|
String remoteVersion = remote.getGameVersion() + "-" + remote.getSelfVersion();
|
||||||
|
|
||||||
Library library = new Library(
|
Library library = new Library(
|
||||||
"net.optifine", "optifine", remoteVersion, null, null,
|
"net.optifine", "optifine", remoteVersion, null, null,
|
||||||
new LibrariesDownloadInfo(new LibraryDownloadInfo(
|
new LibrariesDownloadInfo(new LibraryDownloadInfo(
|
||||||
"net/optifine/optifine/" + remoteVersion + "/optifine-" + remoteVersion + ".jar",
|
"net/optifine/optifine/" + remoteVersion + "/optifine-" + remoteVersion + ".jar",
|
||||||
remote.getUrl())), true
|
remote.getUrl()))
|
||||||
);
|
);
|
||||||
|
|
||||||
List<Library> libraries = new LinkedList<>();
|
List<Library> libraries = new LinkedList<>();
|
||||||
@ -99,6 +99,8 @@ public final class OptiFineInstallTask extends TaskResult<Version> {
|
|||||||
String minecraftArguments = version.getMinecraftArguments().orElse("");
|
String minecraftArguments = version.getMinecraftArguments().orElse("");
|
||||||
if (!hasFMLTweaker)
|
if (!hasFMLTweaker)
|
||||||
minecraftArguments = minecraftArguments + " --tweakClass optifine.OptiFineTweaker";
|
minecraftArguments = minecraftArguments + " --tweakClass optifine.OptiFineTweaker";
|
||||||
|
else
|
||||||
|
minecraftArguments = minecraftArguments + " --tweakClass optifine.OptiFineForgeTweaker";
|
||||||
|
|
||||||
if (version.getMainClass() == null || !version.getMainClass().startsWith("net.minecraft.launchwrapper."))
|
if (version.getMainClass() == null || !version.getMainClass().startsWith("net.minecraft.launchwrapper."))
|
||||||
libraries.add(0, new Library("net.minecraft", "launchwrapper", "1.12"));
|
libraries.add(0, new Library("net.minecraft", "launchwrapper", "1.12"));
|
||||||
|
@ -40,7 +40,7 @@ public class ClassicVersion extends Version {
|
|||||||
public ClassicLibrary(String name) {
|
public ClassicLibrary(String name) {
|
||||||
super("", "", "", null, null,
|
super("", "", "", null, null,
|
||||||
new LibrariesDownloadInfo(new LibraryDownloadInfo("bin/" + name + ".jar"), null),
|
new LibrariesDownloadInfo(new LibraryDownloadInfo("bin/" + name + ".jar"), null),
|
||||||
false, null, null, null, null);
|
null, null, null, null);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,6 @@ public class Library implements Comparable<Library> {
|
|||||||
private final LibrariesDownloadInfo downloads;
|
private final LibrariesDownloadInfo downloads;
|
||||||
private final LibraryDownloadInfo download;
|
private final LibraryDownloadInfo download;
|
||||||
private final ExtractRules extract;
|
private final ExtractRules extract;
|
||||||
private final boolean lateload;
|
|
||||||
private final Map<OperatingSystem, String> natives;
|
private final Map<OperatingSystem, String> natives;
|
||||||
private final List<CompatibilityRule> rules;
|
private final List<CompatibilityRule> rules;
|
||||||
private final List<String> checksums;
|
private final List<String> checksums;
|
||||||
@ -57,14 +56,10 @@ public class Library implements Comparable<Library> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Library(String groupId, String artifactId, String version, String classifier, String url, LibrariesDownloadInfo downloads) {
|
public Library(String groupId, String artifactId, String version, String classifier, String url, LibrariesDownloadInfo downloads) {
|
||||||
this(groupId, artifactId, version, classifier, url, downloads, false);
|
this(groupId, artifactId, version, classifier, url, downloads, null, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Library(String groupId, String artifactId, String version, String classifier, String url, LibrariesDownloadInfo downloads, boolean lateload) {
|
public Library(String groupId, String artifactId, String version, String classifier, String url, LibrariesDownloadInfo downloads, List<String> checksums, ExtractRules extract, Map<OperatingSystem, String> natives, List<CompatibilityRule> rules) {
|
||||||
this(groupId, artifactId, version, classifier, url, downloads, lateload, null, null, null, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
public Library(String groupId, String artifactId, String version, String classifier, String url, LibrariesDownloadInfo downloads, boolean lateload, List<String> checksums, ExtractRules extract, Map<OperatingSystem, String> natives, List<CompatibilityRule> rules) {
|
|
||||||
this.groupId = groupId;
|
this.groupId = groupId;
|
||||||
this.artifactId = artifactId;
|
this.artifactId = artifactId;
|
||||||
this.version = version;
|
this.version = version;
|
||||||
@ -78,7 +73,6 @@ public class Library implements Comparable<Library> {
|
|||||||
this.url = url;
|
this.url = url;
|
||||||
this.downloads = downloads;
|
this.downloads = downloads;
|
||||||
this.extract = extract;
|
this.extract = extract;
|
||||||
this.lateload = lateload;
|
|
||||||
this.natives = natives;
|
this.natives = natives;
|
||||||
this.rules = rules;
|
this.rules = rules;
|
||||||
this.checksums = checksums;
|
this.checksums = checksums;
|
||||||
@ -139,10 +133,6 @@ public class Library implements Comparable<Library> {
|
|||||||
return download;
|
return download;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLateload() {
|
|
||||||
return lateload;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getChecksums() {
|
public List<String> getChecksums() {
|
||||||
return checksums;
|
return checksums;
|
||||||
}
|
}
|
||||||
@ -179,7 +169,7 @@ public class Library implements Comparable<Library> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Library setClassifier(String classifier) {
|
public Library setClassifier(String classifier) {
|
||||||
return new Library(groupId, artifactId, version, classifier, url, downloads, lateload, checksums, extract, natives, rules);
|
return new Library(groupId, artifactId, version, classifier, url, downloads, checksums, extract, natives, rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Library fromName(String name) {
|
public static Library fromName(String name) {
|
||||||
@ -191,7 +181,7 @@ public class Library implements Comparable<Library> {
|
|||||||
if (arr.length != 3 && arr.length != 4)
|
if (arr.length != 3 && arr.length != 4)
|
||||||
throw new IllegalArgumentException("Library name is malformed. Correct example: group:artifact:version(:classifier).");
|
throw new IllegalArgumentException("Library name is malformed. Correct example: group:artifact:version(:classifier).");
|
||||||
|
|
||||||
return new Library(arr[0].replace("\\", "/"), arr[1], arr[2], arr.length >= 4 ? arr[3] : null, url, downloads, false, checksums, extract, natives, rules);
|
return new Library(arr[0].replace("\\", "/"), arr[1], arr[2], arr.length >= 4 ? arr[3] : null, url, downloads, checksums, extract, natives, rules);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Serializer implements JsonDeserializer<Library>, JsonSerializer<Library> {
|
public static class Serializer implements JsonDeserializer<Library>, JsonSerializer<Library> {
|
||||||
|
@ -110,29 +110,23 @@ public class DefaultLauncher extends Launcher {
|
|||||||
res.add("-Dfml.ignorePatchDiscrepancies=true");
|
res.add("-Dfml.ignorePatchDiscrepancies=true");
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkedList<File> lateload = new LinkedList<>();
|
LinkedList<String> classpath = new LinkedList<>();
|
||||||
StringBuilder classpath = new StringBuilder();
|
|
||||||
for (Library library : version.getLibraries())
|
for (Library library : version.getLibraries())
|
||||||
if (library.appliesToCurrentEnvironment() && !library.isNative()) {
|
if (library.appliesToCurrentEnvironment() && !library.isNative()) {
|
||||||
File f = repository.getLibraryFile(version, library);
|
File f = repository.getLibraryFile(version, library);
|
||||||
if (f.exists() && f.isFile())
|
if (f.exists() && f.isFile())
|
||||||
if (library.isLateload())
|
classpath.add(f.getAbsolutePath());
|
||||||
lateload.add(f);
|
|
||||||
else
|
|
||||||
classpath.append(f.getAbsolutePath()).append(OperatingSystem.PATH_SEPARATOR);
|
|
||||||
}
|
}
|
||||||
for (File library : lateload)
|
|
||||||
classpath.append(library.getAbsolutePath()).append(OperatingSystem.PATH_SEPARATOR);
|
|
||||||
|
|
||||||
File jar = repository.getVersionJar(version);
|
File jar = repository.getVersionJar(version);
|
||||||
if (!jar.exists() || !jar.isFile())
|
if (!jar.exists() || !jar.isFile())
|
||||||
throw new IOException("Minecraft jar does not exist");
|
throw new IOException("Minecraft jar does not exist");
|
||||||
classpath.append(jar.getAbsolutePath());
|
classpath.add(jar.getAbsolutePath());
|
||||||
|
|
||||||
// Provided Minecraft arguments
|
// Provided Minecraft arguments
|
||||||
File gameAssets = repository.getActualAssetDirectory(version.getId(), version.getAssetIndex().getId());
|
File gameAssets = repository.getActualAssetDirectory(version.getId(), version.getAssetIndex().getId());
|
||||||
Map<String, String> configuration = getConfigurations();
|
Map<String, String> configuration = getConfigurations();
|
||||||
configuration.put("${classpath}", classpath.toString());
|
configuration.put("${classpath}", String.join(OperatingSystem.PATH_SEPARATOR, classpath));
|
||||||
configuration.put("${natives_directory}", nativeFolder.getAbsolutePath());
|
configuration.put("${natives_directory}", nativeFolder.getAbsolutePath());
|
||||||
configuration.put("${game_assets}", gameAssets.getAbsolutePath());
|
configuration.put("${game_assets}", gameAssets.getAbsolutePath());
|
||||||
configuration.put("${assets_root}", gameAssets.getAbsolutePath());
|
configuration.put("${assets_root}", gameAssets.getAbsolutePath());
|
||||||
|
Loading…
x
Reference in New Issue
Block a user