Reformatting, instance ordering, "Inceptum" version name
ci/woodpecker/push/docs Pipeline was successful Details
ci/woodpecker/push/woodpecker Pipeline failed Details

This commit is contained in:
Johannes Frohnmeyer 2022-11-04 17:02:24 +01:00
parent 45fe59df83
commit 5dd3c4b0a2
Signed by: Johannes
GPG Key ID: E76429612C2929F4
60 changed files with 154 additions and 144 deletions

View File

@ -25,7 +25,7 @@ public class InceptumConfig {
Path json = MetaHolder.BASE_PATH.resolve("inceptum.json");
if (Files.exists(gLaunch2)) {
Files.move(gLaunch2, MetaHolder.CONFIG_PATH);
} if (Files.exists(json)) {
} else if (Files.exists(json)) {
Files.move(json, MetaHolder.CONFIG_PATH);
} else {
saveConfig();

View File

@ -45,7 +45,7 @@ public class Updater {
List<String> currentLibraries = new LinkedList<>(config.libraries);
if (source.natives.containsKey(Utils.getCurrentFlavor())) {
Set<String> natives = new LinkedHashSet<>();
for (String lib : source.natives.get(Utils.getCurrentFlavor())){
for (String lib : source.natives.get(Utils.getCurrentFlavor())) {
downloadLibrary(source.repositories, lib, natives);
}
currentLibraries.addAll(natives);

View File

@ -58,8 +58,9 @@ public class Utils {
/**
* Joins strings with the provided separator but removes separators from the start and end of the strings
* Example: join('/', "some/path/", "/some/subpath/", "example/") -> "some/path/some/subpath/example
*
* @param separator The separator to join with
* @param segments The strings to join
* @param segments The strings to join
* @return The joined string
*/
public static String join(String separator, String... segments) {

View File

@ -1,7 +1,8 @@
package io.gitlab.jfronny.inceptum.common.api;
import io.gitlab.jfronny.commons.HttpUtils;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.common.model.maven.*;
import org.jetbrains.annotations.Nullable;
import org.w3c.dom.*;
@ -204,6 +205,7 @@ public class MavenApi {
private static Iterable<Node> iterable(NodeList list) {
return () -> new Iterator<>() {
int index = 0;
@Override
public boolean hasNext() {
while (index < list.getLength() && isWhitespace(list.item(index))) {

View File

@ -2,7 +2,8 @@ package io.gitlab.jfronny.inceptum.common.model.inceptum;
import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
import java.util.*;
import java.util.Map;
import java.util.Set;
@GSerializable
public class UpdateMetadata {

View File

@ -2,7 +2,8 @@ package io.gitlab.jfronny.inceptum.common.model.inceptum;
import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
import java.util.*;
import java.util.Map;
import java.util.Set;
@GSerializable
public class WrapperConfig {

View File

@ -4,7 +4,6 @@ import io.gitlab.jfronny.inceptum.common.MetaHolder;
import java.nio.file.Path;
import java.util.Objects;
import java.util.regex.Pattern;
public class ArtifactMeta {
public static ArtifactMeta parse(String mavenNotation) {

View File

@ -33,7 +33,7 @@ public class DependencyNode {
private void generateTree(StringBuilder sb, String prefix, String childrenPrefix) {
sb.append(prefix).append(name).append('\n');
for (Iterator<DependencyNode> it = dependencies.iterator(); it.hasNext();) {
for (Iterator<DependencyNode> it = dependencies.iterator(); it.hasNext(); ) {
DependencyNode next = it.next();
if (it.hasNext()) {
next.generateTree(sb, childrenPrefix + "├── ", childrenPrefix + "");

View File

@ -1,8 +1,8 @@
package io.gitlab.jfronny.inceptum.cli.commands;
import io.gitlab.jfronny.inceptum.cli.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.exporter.Exporters;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import java.nio.file.Paths;

View File

@ -2,10 +2,10 @@ package io.gitlab.jfronny.inceptum.cli.commands;
import io.gitlab.jfronny.inceptum.cli.*;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.InstanceMeta;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.launch.*;
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
import java.io.IOException;

View File

@ -1,10 +1,10 @@
package io.gitlab.jfronny.inceptum.cli.commands;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.cli.Command;
import io.gitlab.jfronny.inceptum.cli.CommandArgs;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;

View File

@ -5,14 +5,13 @@ import io.gitlab.jfronny.commons.throwable.ThrowingBiFunction;
import io.gitlab.jfronny.inceptum.cli.*;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModManager;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.system.mds.ModsDirScanner;
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
import io.gitlab.jfronny.inceptum.launcher.util.Unchecked;
import java.io.*;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
@ -180,7 +179,7 @@ public class ModCommand extends Command {
} catch (IOException e) {
throw new Unchecked(e);
}
}, () -> Utils.LOGGER.error("Could not find any update for " + mod));
}, () -> Utils.LOGGER.error("Could not find any update for " + mod));
} catch (IOException e) {
throw new IOException("Could not delete " + mod, e);
} catch (Unchecked e) {

View File

@ -10,7 +10,6 @@ import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.account.MicrosoftAccount;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.util.function.Consumer;
public enum GtkEnvBackend implements LauncherEnv.EnvBackend { //TODO test

View File

@ -11,9 +11,9 @@ import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
import io.gitlab.jfronny.inceptum.launcher.api.account.MicrosoftAccount;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
import io.gitlab.jfronny.inceptum.launcher.system.launch.InstanceLauncher;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;
import io.gitlab.jfronny.inceptum.launcher.system.launch.InstanceLauncher;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
import java.io.IOException;
import java.util.*;

View File

@ -31,7 +31,7 @@ public class TestStart {
private static void test() {
GtkEnvBackend backend = GtkEnvBackend.INSTANCE;
backend.getInput("Ae", "IoU\naee", "Def", s -> {}, R::nop);
backend.getInput("Ae", "IoU\naee", "Def", R::nop, R::nop);
// backend.showInfo("Some message", "Title");
// backend.showError("Yes!", "AAee");
// backend.showError("Nes!", new ArrayIndexOutOfBoundsException("Top 500 cheese"));

View File

@ -14,7 +14,8 @@ import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.gtk.util.I18n;
import java.util.*;
import java.util.function.*;
import java.util.function.BiFunction;
import java.util.function.Consumer;
public class MenuBuilder {
private static final Object LOCK = new Object();

View File

@ -1,25 +1,27 @@
package io.gitlab.jfronny.inceptum.gtk.util;
import ch.bailu.gtk.type.Str;
import org.jetbrains.annotations.PropertyKey;
import java.util.ResourceBundle;
public class I18n {
private static final ResourceBundle bundle = ResourceBundle.getBundle("inceptum");
private static final String BUNDLE = "inceptum";
private static final ResourceBundle bundle = ResourceBundle.getBundle(BUNDLE);
public static String get(String key) {
public static String get(@PropertyKey(resourceBundle = BUNDLE) String key) {
return bundle.getString(key);
}
public static String get(String key, Object... args) {
public static String get(@PropertyKey(resourceBundle = BUNDLE) String key, Object... args) {
return String.format(bundle.getString(key), args);
}
public static Str str(String key) {
public static Str str(@PropertyKey(resourceBundle = BUNDLE) String key) {
return new Str(get(key));
}
public static Str str(String key, Object... args) {
public static Str str(@PropertyKey(resourceBundle = BUNDLE) String key, Object... args) {
return new Str(get(key, args));
}
}

View File

@ -148,7 +148,7 @@ public class MainWindow extends ApplicationWindow {
if (gridButton != null) gridButton.setVisible(GTK.is(InceptumConfig.listView));
try {
instanceList.clear();
InstanceList.forEach(instanceList::add);
instanceList.addAll(InstanceList.ordered());
instanceListIndex.setSize(instanceList.size());
if (InstanceList.isEmpty()) stack.setVisibleChild(empty);

View File

@ -6,11 +6,11 @@ import imgui.flag.ImGuiConfigFlags;
import imgui.gl3.ImGuiImplGl3;
import imgui.glfw.ImGuiImplGlfw;
import io.gitlab.jfronny.commons.log.*;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.common.model.inceptum.UpdateMetadata;
import io.gitlab.jfronny.inceptum.imgui.window.MainWindow;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.imgui.window.Window;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;
import org.jetbrains.annotations.Nullable;
@ -27,7 +27,8 @@ import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.nio.IntBuffer;
import java.nio.file.*;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
public class GuiMain {

View File

@ -6,13 +6,11 @@ import io.gitlab.jfronny.commons.cache.MemoryOperationResultCache;
import io.gitlab.jfronny.commons.tuple.Tuple;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.imgui.window.GuiUtil;
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricVersionLoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
import io.gitlab.jfronny.inceptum.launcher.api.FabricMetaApi;
import io.gitlab.jfronny.inceptum.launcher.api.McApi;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceNameTool;
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricVersionLoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;

View File

@ -6,25 +6,22 @@ import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import io.gitlab.jfronny.inceptum.imgui.window.edit.InstanceEditWindow;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.launch.InstanceLauncher;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;
import io.gitlab.jfronny.inceptum.launcher.system.launch.InstanceLauncher;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
import java.io.IOException;
import java.nio.file.Files;
import java.util.*;
public class InstanceView {
public static void draw() throws IOException {
//TODO clean up
List<Instance> entries = new ArrayList<>();
InstanceList.forEach(entries::add);
if (entries.isEmpty()) {
if (InstanceList.isEmpty()) {
ImGui.text("You have not yet created an instance");
ImGui.text("Use File->New Instance to do so");
return;
}
if (ImGui.beginTable("Instances", 2, ImGuiTableFlags.SizingFixedFit | ImGuiTableFlags.Borders)) {
for (Instance instance : entries) {
for (Instance instance : InstanceList.ordered()) {
if (instance.isSetupLocked()) {
ImGui.tableNextColumn();
ImGui.text("Setting up");

View File

@ -1,9 +1,9 @@
package io.gitlab.jfronny.inceptum.imgui.window;
import imgui.ImGui;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.BuildMetadata;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import java.net.URI;
import java.net.URISyntaxException;

View File

@ -3,17 +3,15 @@ package io.gitlab.jfronny.inceptum.imgui.window;
import imgui.ImGui;
import imgui.flag.ImGuiTableFlags;
import imgui.type.ImString;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.CurseforgeMod;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.model.modrinth.*;
import io.gitlab.jfronny.inceptum.launcher.system.source.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModManager;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.CurseforgeApi;
import io.gitlab.jfronny.inceptum.launcher.api.ModrinthApi;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.CurseforgeMod;
import io.gitlab.jfronny.inceptum.launcher.model.modrinth.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import io.gitlab.jfronny.inceptum.launcher.system.source.CurseforgeModSource;
import io.gitlab.jfronny.inceptum.launcher.system.source.ModrinthModSource;
import java.io.IOException;
import java.net.URI;

View File

@ -1,14 +1,14 @@
package io.gitlab.jfronny.inceptum.imgui.window;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import io.gitlab.jfronny.inceptum.imgui.window.dialog.ProcessStateWatcherWindow;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.setup.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.InstanceList;
import io.gitlab.jfronny.inceptum.launcher.system.setup.*;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import java.io.IOException;

View File

@ -2,8 +2,6 @@ package io.gitlab.jfronny.inceptum.imgui.window;
import imgui.ImGui;
import java.util.Set;
public class LogWindow extends Window {
private final Iterable<String> source;

View File

@ -5,15 +5,13 @@ import imgui.flag.ImGuiWindowFlags;
import imgui.type.ImBoolean;
import imgui.type.ImInt;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.launcher.api.account.*;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import io.gitlab.jfronny.inceptum.imgui.control.InstanceView;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.account.*;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
public class MainWindow extends Window {

View File

@ -48,7 +48,7 @@ public class NewInstanceWindow extends Window {
ImGui.spacing();
ImGui.text("Below, you can import a CurseForge, Modrinth or MultiMC pack");
if (ImGui.button("Import")) {
List<Path> packs = GuiMain.openFileDialog("Import Pack", null, new String[] {"*.zip", "*.mrpack"}, "Modpack", true);
List<Path> packs = GuiMain.openFileDialog("Import Pack", null, new String[]{"*.zip", "*.mrpack"}, "Modpack", true);
if (!packs.isEmpty()) {
ProcessState state = new ProcessState(Importers.MAX_STEPS * packs.size(), "Initializing");
GuiMain.open(new ProcessStateWatcherWindow("Importing", "Could not import packs", state, cToken -> {

View File

@ -5,7 +5,6 @@ import imgui.type.ImBoolean;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import java.io.Closeable;
import java.io.IOException;
public abstract class Window implements Closeable {
private final String name;

View File

@ -1,10 +1,9 @@
package io.gitlab.jfronny.inceptum.imgui.window.dialog;
import imgui.ImGui;
import imgui.flag.ImGuiWindowFlags;
import io.gitlab.jfronny.commons.throwable.ThrowingConsumer;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.imgui.window.Window;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import org.jetbrains.annotations.Nullable;

View File

@ -29,7 +29,7 @@ public class ExportTab extends Tab {
GuiMain.open(new TextBoxWindow("Version", "Please enter the current version of your modpack", "1.0", version -> {
String defaultName = window.instance.getName() + " " + version + " (" + exporter.getName() + ")." + exporter.getFileExtension();
String filter = "*." + exporter.getFileExtension();
Path exportPath = GuiMain.saveFileDialog("Export " + exporter.getName() + " Pack", defaultName, new String[] {filter}, exporter.getName() + " packs (" + filter + ")");
Path exportPath = GuiMain.saveFileDialog("Export " + exporter.getName() + " Pack", defaultName, new String[]{filter}, exporter.getName() + " packs (" + filter + ")");
if (exportPath != null) {
ProcessState state = new ProcessState(Exporters.STEP_COUNT, "Initializing...");
GuiMain.open(new ProcessStateWatcherWindow("Exporting", "Could not export pack", state, cToken -> {

View File

@ -6,11 +6,11 @@ import imgui.type.ImString;
import io.gitlab.jfronny.commons.OSUtils;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import io.gitlab.jfronny.inceptum.imgui.control.InstanceManageControls;
import io.gitlab.jfronny.inceptum.imgui.control.Tab;
import io.gitlab.jfronny.inceptum.imgui.window.GuiUtil;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import java.io.IOException;
import java.nio.file.Files;

View File

@ -2,14 +2,13 @@ package io.gitlab.jfronny.inceptum.imgui.window.edit;
import imgui.ImGui;
import imgui.type.ImBoolean;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.imgui.GuiMain;
import io.gitlab.jfronny.inceptum.imgui.control.Tab;
import io.gitlab.jfronny.inceptum.imgui.window.AddModWindow;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModManager;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
import java.io.IOException;

View File

@ -3,7 +3,6 @@ package io.gitlab.jfronny.inceptum.launcher.api;
import io.gitlab.jfronny.gson.compile.util.GList;
import io.gitlab.jfronny.gson.stream.JsonReader;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.common.api.MavenApi;
import io.gitlab.jfronny.inceptum.common.model.maven.ArtifactMeta;
import io.gitlab.jfronny.inceptum.launcher.model.fabric.*;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;

View File

@ -1,7 +1,6 @@
package io.gitlab.jfronny.inceptum.launcher.api;
import io.gitlab.jfronny.commons.OSUtils;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;

View File

@ -1,13 +1,12 @@
package io.gitlab.jfronny.inceptum.launcher.api;
import io.gitlab.jfronny.gson.compile.util.GList;
import io.gitlab.jfronny.gson.reflect.TypeToken;
import io.gitlab.jfronny.gson.stream.JsonReader;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.launcher.model.modrinth.*;
import java.io.*;
import java.lang.reflect.Type;
import java.io.IOException;
import java.io.StringReader;
import java.util.*;
public class ModrinthApi {

View File

@ -4,7 +4,8 @@ import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
import io.gitlab.jfronny.gson.stream.JsonReader;
import io.gitlab.jfronny.gson.stream.JsonWriter;
import io.gitlab.jfronny.inceptum.launcher.api.account.MicrosoftAccount;
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.*;
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.OauthTokenResponse;
import io.gitlab.jfronny.inceptum.launcher.model.microsoft.XboxLiveAuthResponse;
import java.io.IOException;
import java.util.Date;

View File

@ -1,12 +1,13 @@
package io.gitlab.jfronny.inceptum.launcher.gson;
import io.gitlab.jfronny.gson.*;
import io.gitlab.jfronny.gson.JsonParseException;
import io.gitlab.jfronny.gson.compile.util.GList;
import io.gitlab.jfronny.gson.stream.*;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
import java.io.IOException;
import java.util.*;
import java.util.List;
import java.util.Set;
public class MinecraftArgumentAdapter {
public static void write(JsonWriter writer, MinecraftArgument rules) throws IOException {

View File

@ -1,7 +1,7 @@
package io.gitlab.jfronny.inceptum.launcher.gson;
import io.gitlab.jfronny.commons.OSUtils;
import io.gitlab.jfronny.gson.*;
import io.gitlab.jfronny.gson.JsonParseException;
import io.gitlab.jfronny.gson.stream.JsonReader;
import io.gitlab.jfronny.gson.stream.JsonWriter;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.Rules;

View File

@ -4,9 +4,9 @@ import io.gitlab.jfronny.commons.HashUtils;
import io.gitlab.jfronny.gson.compile.annotations.GPrefer;
import io.gitlab.jfronny.gson.compile.annotations.GSerializable;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.FingerprintMatchesResponse;
import io.gitlab.jfronny.inceptum.launcher.api.CurseforgeApi;
import io.gitlab.jfronny.inceptum.launcher.api.ModrinthApi;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.response.FingerprintMatchesResponse;
import io.gitlab.jfronny.inceptum.launcher.system.source.*;
import org.jetbrains.annotations.Nullable;
@ -14,7 +14,8 @@ import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
import java.util.ArrayList;
import java.util.List;
@GSerializable
public class ModMeta {

View File

@ -16,6 +16,7 @@ import java.util.Set;
public class CurseForgeExporter extends Exporter<CurseforgeModpackManifest> {
private static final String OVERRIDES_DIR_DEFAULT = "overrides";
public CurseForgeExporter() {
super("CurseForge", "zip", OVERRIDES_DIR_DEFAULT);
}
@ -44,7 +45,7 @@ public class CurseForgeExporter extends Exporter<CurseforgeModpackManifest> {
@Override
protected void addMods(Path root, Instance instance, Iterable<Mod> mods, CurseforgeModpackManifest manifest, Path modsOverrides) throws IOException {
modsLoop: for(Mod mod : mods) {
modsLoop: for (Mod mod : mods) {
if (mod.needsInject()) {
Set<ModSource> sources = mod.getMetadata().sources.keySet();
for (ModSource source : sources) {

View File

@ -2,8 +2,9 @@ package io.gitlab.jfronny.inceptum.launcher.system.exporter;
import io.gitlab.jfronny.commons.StreamIterable;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import io.gitlab.jfronny.inceptum.launcher.util.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import io.gitlab.jfronny.inceptum.launcher.util.gitignore.IgnoringWalk;
import java.io.IOException;
@ -23,6 +24,7 @@ public abstract class Exporter<Manifest> {
}
protected abstract Manifest generateManifests(Path root, Instance instance, String version) throws IOException;
protected abstract void addMods(Path root, Instance instance, Iterable<Mod> mods, Manifest manifest, Path modsOverrides) throws IOException;
public void generate(ProcessState state, Instance instance, Path exportPath, String version) throws IOException {

View File

@ -37,7 +37,7 @@ public class ModrinthExporter extends Exporter<ModrinthModpackManifest> {
@Override
protected void addMods(Path root, Instance instance, Iterable<Mod> mods, ModrinthModpackManifest manifest, Path modsOverrides) throws IOException {
modsLoop: for(Mod mod : mods) {
modsLoop: for (Mod mod : mods) {
if (mod.needsInject()) {
Set<ModSource> sources = mod.getMetadata().sources.keySet();
for (ModSource source : sources) {

View File

@ -20,30 +20,30 @@ public class MultiMCExporter extends Exporter<MMCPackMeta> {
protected MMCPackMeta generateManifests(Path root, Instance instance, String version) throws IOException {
{
Files.writeString(root.resolve("instance.cfg"), String.format("""
ForgeVersion=
InstanceType=OneSix
IntendedVersion=
JoinServerOnLaunch=false
LWJGLVersion=
LiteloaderVersion=
LogPrePostOutput=true
MCLaunchMethod=LauncherPart
OverrideCommands=false
OverrideConsole=false
OverrideGameTime=false
OverrideJavaArgs=false
OverrideJavaLocation=false
OverrideMCLaunchMethod=false
OverrideMemory=false
OverrideNativeWorkarounds=false
OverrideWindow=false
iconKey=default
lastLaunchTime=%s
lastTimePlayed=0
name=%s
notes=
totalTimePlayed=0
""", Instant.now().toEpochMilli(), instance.getName()));
ForgeVersion=
InstanceType=OneSix
IntendedVersion=
JoinServerOnLaunch=false
LWJGLVersion=
LiteloaderVersion=
LogPrePostOutput=true
MCLaunchMethod=LauncherPart
OverrideCommands=false
OverrideConsole=false
OverrideGameTime=false
OverrideJavaArgs=false
OverrideJavaLocation=false
OverrideMCLaunchMethod=false
OverrideMemory=false
OverrideNativeWorkarounds=false
OverrideWindow=false
iconKey=default
lastLaunchTime=%s
lastTimePlayed=0
name=%s
notes=
totalTimePlayed=0
""", Instant.now().toEpochMilli(), instance.getName()));
}
{
MMCPackMeta manifest = new MMCPackMeta();

View File

@ -10,7 +10,8 @@ import io.gitlab.jfronny.inceptum.launcher.model.inceptum.GC_InstanceMeta;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.InstanceMeta;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Steps;
import io.gitlab.jfronny.inceptum.launcher.util.*;
import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
@ -33,6 +34,7 @@ public abstract class Importer<T> {
}
protected abstract IntermediaryManifest validateManifest(T manifest, Path sourceRoot) throws IOException;
protected abstract void downloadMods(T manifest, Path instanceDir, ProcessState state) throws IOException;
private String createVersionString(String gameVersion, @Nullable String fabricVersion) throws IOException {

View File

@ -1,6 +1,5 @@
package io.gitlab.jfronny.inceptum.launcher.system.instance;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.R;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.GC_InstanceMeta;
@ -33,6 +32,7 @@ public record Instance(String id, Path path, InstanceMeta meta, ModsDirScanner m
/**
* Converts any string into a set of lowercase ascii chars
*
* @param input string to convert
* @return a string matching [a-p]*
*/
@ -42,8 +42,8 @@ public record Instance(String id, Path path, InstanceMeta meta, ModsDirScanner m
int by = Byte.toUnsignedInt(b);
int ch2 = by & 15; // right bits
int ch1 = (by - ch2) / 16; // left bits
result.append((char)('a' + ch1));
result.append((char)('a' + ch2));
result.append((char) ('a' + ch1));
result.append((char) ('a' + ch2));
}
return result.toString();
}

View File

@ -1,7 +1,7 @@
package io.gitlab.jfronny.inceptum.launcher.system.instance;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.commons.throwable.*;
import io.gitlab.jfronny.commons.throwable.ThrowingConsumer;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.GC_InstanceMeta;
@ -10,7 +10,8 @@ import io.gitlab.jfronny.inceptum.launcher.util.FileBackedRef;
import java.io.Closeable;
import java.io.IOException;
import java.nio.file.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.*;
public class InstanceList {
@ -29,13 +30,18 @@ public class InstanceList {
}
}
public static Set<Instance> ordered() throws IOException {
TreeSet<Instance> set = new TreeSet<>();
forEach(set::add);
return set.descendingSet();
}
public static <TEx extends Exception> void forEach(ThrowingConsumer<Instance, TEx> target) throws IOException, TEx {
Objects.requireNonNull(target);
if (!Files.exists(MetaHolder.INSTANCE_DIR)) Files.createDirectories(MetaHolder.INSTANCE_DIR);
try {
JFiles.listTo(MetaHolder.INSTANCE_DIR, path -> {
if (!Files.isDirectory(path)) return;
if (!Files.exists(path.resolve("instance.json"))) return;
if (!isInstance(path)) return;
target.accept(read(path));
});
} catch (Exception e) {
@ -46,7 +52,7 @@ public class InstanceList {
public static boolean isEmpty() throws IOException {
if (!Files.exists(MetaHolder.INSTANCE_DIR)) return true;
return JFiles.list(MetaHolder.INSTANCE_DIR, Files::isDirectory).isEmpty();
return JFiles.list(MetaHolder.INSTANCE_DIR, InstanceList::isInstance).isEmpty();
}
public static Instance read(Path instancePath) throws IOException {
@ -62,6 +68,10 @@ public class InstanceList {
}
}
private static boolean isInstance(Path path) {
return Files.isDirectory(path) && Files.exists(path.resolve("instance.json"));
}
private record IEntry(Path path, FileBackedRef<InstanceMeta> meta) implements Closeable {
@Override
public String toString() {

View File

@ -9,6 +9,7 @@ import java.util.regex.Pattern;
public class InstanceNameTool {
private static final Pattern NUMBER_PATTERN = Pattern.compile("^(.*)\\s*\\(\\d+\\)$");
public static String getDefaultName(String versionId, boolean fabric) {
return fabric ? "Fabric " + versionId : versionId;
}

View File

@ -1,20 +1,19 @@
package io.gitlab.jfronny.inceptum.launcher.system.launch;
import io.gitlab.jfronny.commons.OSUtils;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.api.MavenApi;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
import io.gitlab.jfronny.inceptum.launcher.LauncherEnv;
import io.gitlab.jfronny.inceptum.launcher.api.FabricMetaApi;
import io.gitlab.jfronny.inceptum.launcher.api.McApi;
import io.gitlab.jfronny.inceptum.launcher.api.account.AccountManager;
import io.gitlab.jfronny.inceptum.launcher.api.account.AuthInfo;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.ArtifactInfo;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.system.setup.steps.DownloadLibrariesStep;
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
import io.gitlab.jfronny.inceptum.launcher.util.*;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
import io.gitlab.jfronny.inceptum.launcher.util.VersionInfoLibraryResolver;
import java.io.File;
import java.io.IOException;
@ -88,7 +87,8 @@ public class InstanceLauncher {
classPath.append(File.pathSeparatorChar);
classPath.append(DownloadLibrariesStep.getLaunchWrapperArtifact().getLocalPath());
// JVM arguments
if (instance.meta().arguments != null && instance.meta().arguments.jvm != null) args.addAll(instance.meta().arguments.jvm);
if (instance.meta().arguments != null && instance.meta().arguments.jvm != null)
args.addAll(instance.meta().arguments.jvm);
if (launchType == LaunchType.Client && versionInfo.arguments != null)
args.addAll(parse(versionInfo.arguments.jvm, versionInfo, instance, classPath.toString(), authInfo));
if (instance.meta().minMem != null) args.add("-Xms" + instance.meta().minMem);
@ -211,7 +211,7 @@ public class InstanceLauncher {
return arg
// game args
.replace("${auth_player_name}", authInfo.name())
.replace("${version_name}", instance.getGameVersion())
.replace("${version_name}", "Inceptum")
.replace("${game_directory}", instance.path().toString())
.replace("${assets_root}", MetaHolder.ASSETS_DIR.toString())
.replace("${assets_index_name}", info.assets)

View File

@ -1,16 +1,14 @@
package io.gitlab.jfronny.inceptum.launcher.system.mds;
import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.gson.JsonParseException;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.fabric.FabricModJson;
import io.gitlab.jfronny.inceptum.launcher.model.fabric.GC_FabricModJson;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.GC_ModMeta;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.ModMeta;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.system.mds.noop.NoopMod;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.system.mds.noop.NoopMod;
import io.gitlab.jfronny.inceptum.launcher.system.source.ModSource;
import org.jetbrains.annotations.Nullable;
@ -19,7 +17,8 @@ import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.*;
import java.util.List;
import java.util.function.*;
import java.util.function.BiConsumer;
import java.util.function.Function;
public record FileScanTask(ProtoInstance instance, Path file, BiConsumer<Path, Mod> discovered, String gameVersion) implements Runnable {
@Override

View File

@ -43,7 +43,7 @@ public class MdsMod extends Mod {
@Override
public String[] getDescription() {
if (fmj != null && fmj.description != null) return fmj.description.split("\n");
else return new String[] {"No description is available", "You may need to wait for its metadata to be scanned"};
else return new String[]{"No description is available", "You may need to wait for its metadata to be scanned"};
}
@Override

View File

@ -4,7 +4,8 @@ import io.gitlab.jfronny.commons.io.JFiles;
import io.gitlab.jfronny.inceptum.common.R;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.inceptum.InstanceMeta;
import io.gitlab.jfronny.inceptum.launcher.system.instance.*;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Mod;
import io.gitlab.jfronny.inceptum.launcher.system.instance.ModPath;
import io.gitlab.jfronny.inceptum.launcher.system.mds.noop.NoopMod;
import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser;

View File

@ -24,7 +24,7 @@ public class NoopMod extends Mod {
@Override
public String[] getDescription() {
return new String[] {
return new String[]{
"Noop mod",
"Any actions on this mod are unsupported"
};

View File

@ -1,7 +1,7 @@
package io.gitlab.jfronny.inceptum.launcher.system.setup;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;
public record SetupStepInfo(VersionInfo version,

View File

@ -2,10 +2,10 @@ package io.gitlab.jfronny.inceptum.launcher.system.setup;
import io.gitlab.jfronny.inceptum.launcher.api.FabricMetaApi;
import io.gitlab.jfronny.inceptum.launcher.api.McApi;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionInfo;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.VersionsListInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.setup.steps.*;
import io.gitlab.jfronny.inceptum.launcher.util.ProcessState;

View File

@ -1,10 +1,10 @@
package io.gitlab.jfronny.inceptum.launcher.system.setup.steps;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.AssetIndex;
import io.gitlab.jfronny.inceptum.launcher.api.McApi;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.AssetIndex;
import io.gitlab.jfronny.inceptum.launcher.system.setup.SetupStepInfo;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import java.io.IOException;
import java.net.URISyntaxException;

View File

@ -3,8 +3,8 @@ package io.gitlab.jfronny.inceptum.launcher.system.setup.steps;
import io.gitlab.jfronny.commons.ComparableVersion;
import io.gitlab.jfronny.inceptum.common.*;
import io.gitlab.jfronny.inceptum.launcher.model.mojang.MojangFileDownload;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import io.gitlab.jfronny.inceptum.launcher.system.setup.SetupStepInfo;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser;
import java.io.IOException;

View File

@ -1,10 +1,10 @@
package io.gitlab.jfronny.inceptum.launcher.system.setup.steps;
import io.gitlab.jfronny.inceptum.common.MetaHolder;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.instance.Instance;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import io.gitlab.jfronny.inceptum.launcher.system.instance.LoaderInfo;
import io.gitlab.jfronny.inceptum.launcher.system.setup.SetupStepInfo;
import io.gitlab.jfronny.inceptum.launcher.system.setup.Step;
import io.gitlab.jfronny.inceptum.launcher.util.GameVersionParser;
import java.io.IOException;

View File

@ -6,8 +6,8 @@ import io.gitlab.jfronny.commons.tuple.Triple;
import io.gitlab.jfronny.commons.tuple.Tuple;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.*;
import io.gitlab.jfronny.inceptum.launcher.api.CurseforgeApi;
import io.gitlab.jfronny.inceptum.launcher.model.curseforge.*;
import java.io.IOException;
import java.net.URISyntaxException;

View File

@ -5,8 +5,8 @@ import io.gitlab.jfronny.commons.cache.MemoryOperationResultCache;
import io.gitlab.jfronny.commons.tuple.Tuple;
import io.gitlab.jfronny.inceptum.common.Net;
import io.gitlab.jfronny.inceptum.common.Utils;
import io.gitlab.jfronny.inceptum.launcher.model.modrinth.*;
import io.gitlab.jfronny.inceptum.launcher.api.ModrinthApi;
import io.gitlab.jfronny.inceptum.launcher.model.modrinth.*;
import java.io.IOException;
import java.net.URISyntaxException;

View File

@ -7,7 +7,8 @@ import java.io.Closeable;
import java.io.IOException;
import java.net.*;
import java.nio.file.*;
import java.security.*;
import java.security.CodeSource;
import java.security.ProtectionDomain;
import java.security.cert.Certificate;
import java.util.*;
import java.util.stream.Stream;
@ -19,6 +20,7 @@ import java.util.stream.Stream;
public class NioClassLoader extends ClassLoader implements Closeable {
private final Set<Path> sources = new LinkedHashSet<>();
private final Set<Closeable> closeables = new HashSet<>();
static {
registerAsParallelCapable();
}