From 7fe8ca7fe43186df9fce12155677b6ef1a6cf107 Mon Sep 17 00:00:00 2001 From: ImTheLeviDR Date: Mon, 6 Apr 2026 08:20:03 +0200 Subject: [PATCH 1/2] Implemented autoMixOnStartup config --- .../resourcepackmanager/config/DefaultConfig.java | 7 +++++++ .../thirdparty/ThirdPartyResourcePack.java | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/com/magmaguy/resourcepackmanager/config/DefaultConfig.java b/src/main/java/com/magmaguy/resourcepackmanager/config/DefaultConfig.java index 466c341..b5c9050 100644 --- a/src/main/java/com/magmaguy/resourcepackmanager/config/DefaultConfig.java +++ b/src/main/java/com/magmaguy/resourcepackmanager/config/DefaultConfig.java @@ -15,6 +15,8 @@ public class DefaultConfig extends ConfigurationFile { @Getter private static boolean forceResourcePack; @Getter + private static boolean autoMixOnStartup; + @Getter private static String resourcePackPrompt; @Getter private static String resourcePackRerouting; @@ -54,6 +56,11 @@ public void initializeValues() { forceResourcePack = ConfigurationEngine.setBoolean( List.of("Sets whether the resource pack use will be forced to clients"), fileConfiguration, "forceResourcePack", false); + autoMixOnStartup = ConfigurationEngine.setBoolean( + List.of( + "Enable automatic resource pack mixing when the server starts.", + "If disabled, ResourcePackManager will wait for a resource pack change or manual reload before mixing."), + fileConfiguration, "autoMixOnStartup", true); resourcePackPrompt = ConfigurationEngine.setString( List.of("Sets whether the resource pack use will be forced to clients"), fileConfiguration, "resourcePackPrompt", "Use recommended resource pack?"); diff --git a/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java b/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java index 4374d66..022c985 100644 --- a/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java +++ b/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java @@ -113,6 +113,7 @@ public ThirdPartyResourcePack(String pluginName, String localPath, String url, b } private static BukkitTask resourcePackChangeWatcher = null; + private static boolean initialStartup = true; /** * Checks whether a monitored plugin has finished its Magmacore initialization. @@ -189,8 +190,16 @@ public void run() { } if (!stableAlreadySent && readyToSend) { + if (!DefaultConfig.isAutoMixOnStartup() && initialStartup) { + Logger.info("Automatic resource pack mixing on startup is disabled. Waiting for resource pack changes or manual reload before mixing."); + tagAsResourcePackSent(); + initialStartup = false; + return; + } + notifyResourcePackSending(); tagAsResourcePackSent(); + initialStartup = false; Logger.info("Sending resource pack now."); Bukkit.getScheduler().runTaskAsynchronously(ResourcePackManager.plugin, Mix::mixResourcePacks); } From cec5de3730b76724a2a6a0a33b254dd22bdd5cc8 Mon Sep 17 00:00:00 2001 From: ImTheLeviDR Date: Mon, 6 Apr 2026 08:25:06 +0200 Subject: [PATCH 2/2] Send the last resource pack if no new mix on server start --- .../resourcepackmanager/mixer/Mix.java | 18 ++++++++++++++++++ .../thirdparty/ThirdPartyResourcePack.java | 9 +++++++++ 2 files changed, 27 insertions(+) diff --git a/src/main/java/com/magmaguy/resourcepackmanager/mixer/Mix.java b/src/main/java/com/magmaguy/resourcepackmanager/mixer/Mix.java index b9e373f..364d11d 100644 --- a/src/main/java/com/magmaguy/resourcepackmanager/mixer/Mix.java +++ b/src/main/java/com/magmaguy/resourcepackmanager/mixer/Mix.java @@ -256,6 +256,24 @@ private static void createOutputDefaultElements() { // generateBedrockResourcePack(); } + public static boolean loadExistingFinalResourcePack() { + if (finalResourcePack != null) return true; + File possiblePack = new File(getOutputFolder().getAbsolutePath() + File.separatorChar + resourcePackName + ".zip"); + if (!possiblePack.exists()) return false; + try { + finalResourcePack = possiblePack; + finalSHA1 = SHA1Generator.sha1CodeString(finalResourcePack); + finalSHA1Bytes = SHA1Generator.sha1CodeByteArray(finalResourcePack); + return true; + } catch (Exception e) { + Logger.warn("Failed to load existing merged resource pack from disk."); + finalResourcePack = null; + finalSHA1 = null; + finalSHA1Bytes = null; + return false; + } + } + private static File getOutputFolder() { return new File(ResourcePackManager.plugin.getDataFolder().getAbsolutePath() + File.separatorChar + "output"); } diff --git a/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java b/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java index 022c985..65d5d39 100644 --- a/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java +++ b/src/main/java/com/magmaguy/resourcepackmanager/thirdparty/ThirdPartyResourcePack.java @@ -205,6 +205,15 @@ public void run() { } } }.runTaskTimerAsynchronously(ResourcePackManager.plugin, 20, 20); + + if (!DefaultConfig.isAutoMixOnStartup()) { + if (Mix.loadExistingFinalResourcePack()) { + Logger.info("autoMixOnStartup is disabled, reusing the last merged resource pack from disk."); + AutoHost.initialize(); + } else { + Logger.info("autoMixOnStartup is disabled and no existing merged resource pack was found. Waiting for changes."); + } + } } public static void tagAsResourcePackSent(){