diff --git a/lophine-server/luminol-patches/features/0005-Diff-in-auto-update-patch.patch b/lophine-server/luminol-patches/features/0005-Diff-in-auto-update-patch.patch new file mode 100644 index 0000000..c3f78cc --- /dev/null +++ b/lophine-server/luminol-patches/features/0005-Diff-in-auto-update-patch.patch @@ -0,0 +1,150 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Helvetica Volubi +Date: Mon, 16 Mar 2026 15:51:40 +0800 +Subject: [PATCH] Diff in auto-update patch + + +diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java +index ce01352b637547c1cf8308d56d4b3f9c48fcca70..d57c04d839401e8ba88e56d92be2798bb312949f 100644 +--- a/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java ++++ b/src/main/java/me/earthme/luminol/config/modules/misc/AutoUpdateConfig.java +@@ -16,13 +16,13 @@ import java.util.Set; + category = EnumConfigCategory.MISC, + name = "auto_update", + comments = """ +- Checks GitHub Releases for newer Luminol jars on a schedule. +- Downloads are staged under auto_update/luminol and written to auto_update/core.path, ++ Checks GitHub Releases for newer version's jars on a schedule. ++ Downloads are staged under auto_update/lophine and written to auto_update/core.path, + which Hyacinthusclip can consume on the next restart. +- If target_jar_path is set, Luminol will also try to replace that launcher jar directly.""" ++ If target_jar_path is set, server will also try to replace that launcher jar directly.""" + ) + public class AutoUpdateConfig implements IConfigModule { +- @ConfigInfo(name = "enabled", comments = "Whether Luminol should check for updates automatically.") ++ @ConfigInfo(name = "enabled", comments = "Whether the server should check for updates automatically.") + public static boolean enabled = false; + + @ConfigInfo(name = "check_times", comments = "List of daily check times in HH:mm, based on the server's local time zone.") +@@ -33,7 +33,7 @@ public class AutoUpdateConfig implements IConfigModule { + + @ConfigInfo(name = "target_jar_path", comments = """ + Optional launcher jar path to replace after a successful download. +- Leave this blank to keep the downloaded jar staged in auto_update/luminol ++ Leave this blank to keep the downloaded jar staged in auto_update/lophine + and let Hyacinthusclip switch to it through auto_update/core.path on restart.""") + public static String targetJarPath = ""; + +@@ -42,7 +42,7 @@ public class AutoUpdateConfig implements IConfigModule { + + @Override + public void onLoaded(CommentedFileConfig configInstance, @Nullable Set exs) { +- if (enabled) { ++ if (enabled || fun.bm.lophine.config.modules.misc.AutoUpdateConfig.enabled) { + if (instance == null) { + instance = new AutoUpdateHelper(); + } +diff --git a/src/main/java/me/earthme/luminol/utils/AutoUpdateHelper.java b/src/main/java/me/earthme/luminol/utils/AutoUpdateHelper.java +index 94a25cd681c9352d6931edafd9ec67fd7ba8a777..d0d0cf5e5ff8d4b8efa4d9778c27267b41cf8cf8 100644 +--- a/src/main/java/me/earthme/luminol/utils/AutoUpdateHelper.java ++++ b/src/main/java/me/earthme/luminol/utils/AutoUpdateHelper.java +@@ -35,10 +35,10 @@ public final class AutoUpdateHelper { + private final Logger LOGGER = LogUtils.getClassLogger(); + private final Gson GSON = new Gson(); + +- private final String GITHUB_API_BASE = "https://api.github.com/repos/LuminolMC/Luminol"; ++ private final String GITHUB_API_BASE = "https://api.github.com/repos/lophineMC/lophine"; + private final Path AUTO_UPDATE_DIR = Path.of("auto_update"); + private final Path CORE_PATH_FILE = AUTO_UPDATE_DIR.resolve("core.path"); +- private final Path LUMINOL_UPDATE_DIR = AUTO_UPDATE_DIR.resolve("luminol"); ++ private final Path LUMINOL_UPDATE_DIR = AUTO_UPDATE_DIR.resolve("lophine"); + private final Path LATEST_PATH_FILE = LUMINOL_UPDATE_DIR.resolve("latest.path"); + private final long DAILY_TASK_PERIOD_MILLIS = TimeUnit.DAYS.toMillis(1); + +@@ -51,13 +51,13 @@ public final class AutoUpdateHelper { + ensureWorkingDirectories(); + + scheduler = Executors.newSingleThreadScheduledExecutor(task -> { +- final Thread thread = new Thread(task, "Luminol Auto Update Scheduler"); ++ final Thread thread = new Thread(task, "Lophine Auto Update Scheduler"); + thread.setDaemon(true); + return thread; + }); + + if (AutoUpdateConfig.checkTimes.isEmpty()) { +- LOGGER.warn("Luminol auto-update is enabled, but misc.auto_update.check_times is empty."); ++ LOGGER.warn("Lophine auto-update is enabled, but misc.auto_update.check_times is empty."); + return; + } + +@@ -95,14 +95,14 @@ public final class AutoUpdateHelper { + + private void checkForUpdatesSafely() { + if (!UPDATE_RUNNING.compareAndSet(false, true)) { +- LOGGER.info("A Luminol auto-update check is already running, skipping this schedule."); ++ LOGGER.info("A Lophine auto-update check is already running, skipping this schedule."); + return; + } + + try { + checkForUpdates(); + } catch (Exception e) { +- LOGGER.warn("Luminol auto-update failed.", e); ++ LOGGER.warn("Lophine auto-update failed.", e); + } finally { + UPDATE_RUNNING.set(false); + } +@@ -123,7 +123,7 @@ public final class AutoUpdateHelper { + + final ReleaseAssetInfo latestRelease = getLatestCompatibleRelease(mcVersion, gitBranch); + if (latestRelease == null) { +- LOGGER.warn("No compatible Luminol release was found for Minecraft {}{}.", ++ LOGGER.warn("No compatible Lophine release was found for Minecraft {}{}.", + mcVersion, + gitBranch == null ? "" : " on branch " + gitBranch + ); +@@ -132,7 +132,7 @@ public final class AutoUpdateHelper { + + final UpdateStatus updateStatus = compareReleaseWithCurrentBuild(latestRelease.releaseCommitHash(), currentGitHash); + if (updateStatus == UpdateStatus.UP_TO_DATE) { +- LOGGER.info("You are already running the latest compatible Luminol release: {}", latestRelease.tagName()); ++ LOGGER.info("You are already running the latest compatible Lophine release: {}", latestRelease.tagName()); + return; + } + +@@ -154,7 +154,7 @@ public final class AutoUpdateHelper { + return; + } + +- LOGGER.info("Found a newer Luminol release: {}", latestRelease.tagName()); ++ LOGGER.info("Found a newer Lophine release: {}", latestRelease.tagName()); + + final Path stagedJar = downloadAndStageRelease(latestRelease); + final Path finalJarPath = tryApplyTargetJar(stagedJar); +@@ -163,7 +163,7 @@ public final class AutoUpdateHelper { + + if (finalJarPath.equals(stagedJar)) { + LOGGER.info( +- "Downloaded the latest Luminol jar to {} and refreshed auto_update/core.path for Hyacinthusclip. Please restart your server.", ++ "Downloaded the latest Lophine jar to {} and refreshed auto_update/core.path for Hyacinthusclip. Please restart your server.", + finalJarPath.toAbsolutePath() + ); + } else { +@@ -179,7 +179,7 @@ public final class AutoUpdateHelper { + try { + Files.createDirectories(LUMINOL_UPDATE_DIR); + } catch (IOException e) { +- throw new RuntimeException("Failed to create Luminol auto update directory", e); ++ throw new RuntimeException("Failed to create Lophine auto update directory", e); + } + } + +@@ -440,7 +440,7 @@ public final class AutoUpdateHelper { + private @NotNull HttpURLConnection openConnection(String url) throws IOException, URISyntaxException { + final HttpURLConnection connection = (HttpURLConnection) new URI(url).toURL().openConnection(); + connection.setRequestProperty("Accept", "application/vnd.github+json"); +- connection.setRequestProperty("User-Agent", "Luminol Auto Update"); ++ connection.setRequestProperty("User-Agent", "Lophine Auto Update"); + connection.setConnectTimeout(10000); + connection.setReadTimeout(10000); + return connection; diff --git a/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/AutoUpdateConfig.java b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/AutoUpdateConfig.java new file mode 100644 index 0000000..307c938 --- /dev/null +++ b/lophine-server/src/main/java/fun/bm/lophine/config/modules/misc/AutoUpdateConfig.java @@ -0,0 +1,29 @@ +package fun.bm.lophine.config.modules.misc; + +import me.earthme.luminol.config.IConfigModule; +import me.earthme.luminol.config.flags.ConfigClassInfo; +import me.earthme.luminol.config.flags.ConfigInfo; +import me.earthme.luminol.enums.EnumConfigCategory; + +/* + * This file is only for showing auto update config. + * The function is implemented in luminol-server and not provide any function. + * Please use luminol-server's auto update config. + */ +@ConfigClassInfo( + category = EnumConfigCategory.MISC, + name = "auto_update", + comments = """ + Checks GitHub Releases for newer version's jars on a schedule. + Downloads are staged under auto_update/lophine and written to auto_update/core.path, + which Hyacinthusclip can consume on the next restart. + + ATTENTION: full config option should be edited in luminol config system >> misc >> auto_update""" +) +public class AutoUpdateConfig implements IConfigModule { + @ConfigInfo(name = "enabled", comments = """ + Whether the server should check for updates automatically. + You can enable it by edit this config, because they are both control the function. + One of them enabled, the full function will be enabled.""") + public static boolean enabled = false; +}