diff --git a/2Loader/src/main/java/me/xfl03/morecrashinfo/modlauncher/ModuleHelper.java b/2Loader/src/main/java/me/xfl03/morecrashinfo/modlauncher/ModuleHelper.java index ddab9d4..aac331d 100644 --- a/2Loader/src/main/java/me/xfl03/morecrashinfo/modlauncher/ModuleHelper.java +++ b/2Loader/src/main/java/me/xfl03/morecrashinfo/modlauncher/ModuleHelper.java @@ -20,19 +20,24 @@ public static void addModule(IModuleLayerManager.Layer layer, Path jar) { throw new IllegalArgumentException("IModuleLayerManager not supported: " + handler); } ModuleLayerHandler moduleLayerHandler = (ModuleLayerHandler) handler; - removeCompletedLayers(moduleLayerHandler, layer); + EnumMap completedLayers = getCompletedLayers(moduleLayerHandler); + boolean alreadyBuilt = completedLayers.containsKey(layer); + if (alreadyBuilt) { + completedLayers.remove(layer); + } addToLayer(moduleLayerHandler, layer, jar); - moduleLayerHandler.buildLayer(layer); - TransformerService.logger.info("Added {} to {}", jar, layer); + if (alreadyBuilt) { + moduleLayerHandler.buildLayer(layer); + } + TransformerService.logger.info( + "Added {} to {} with {}", jar, layer, alreadyBuilt ? "Rebuilt" : "Not Build"); } - private static void removeCompletedLayers(ModuleLayerHandler handler, IModuleLayerManager.Layer layer) { + private static EnumMap getCompletedLayers(ModuleLayerHandler handler) { try { Field field = ModuleLayerHandler.class.getDeclaredField("completedLayers"); field.setAccessible(true); - EnumMap completedLayer = - (EnumMap) field.get(handler); - completedLayer.remove(layer); + return (EnumMap) field.get(handler); } catch (Exception e) { throw new IllegalStateException(e); } diff --git a/build.gradle b/build.gradle index c1535d7..e7cf42b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'morecrashinfo' } -version = "2.3.0" +version = "2.3.1" group = 'me.xfl03' archivesBaseName = 'MoreCrashInfo_Core'