Commit 08134e70a77c136322f89efeeb7c8b0bc3a0cf49
1 parent
7347bfef
Fix injection of mixin-containing mod files into classpath
Showing
1 changed file
with
48 additions
and
32 deletions
src/main/java/com/mumfrey/liteloader/core/LiteLoaderEnumerator.java
@@ -596,30 +596,12 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | @@ -596,30 +596,12 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
596 | if (this.environment.addCascadedTweaker(tweakClass, tweakPriority)) | 596 | if (this.environment.addCascadedTweaker(tweakClass, tweakPriority)) |
597 | { | 597 | { |
598 | LiteLoaderLogger.info(Verbosity.REDUCED, "tweakClass '%s' was successfully added", tweakClass); | 598 | LiteLoaderLogger.info(Verbosity.REDUCED, "tweakClass '%s' was successfully added", tweakClass); |
599 | - container.injectIntoClassPath(this.classLoader, true); | ||
600 | - | ||
601 | if (container.isExternalJar()) | 599 | if (container.isExternalJar()) |
602 | { | 600 | { |
603 | this.containers.registerInjectedTweak(container); | 601 | this.containers.registerInjectedTweak(container); |
604 | } | 602 | } |
605 | 603 | ||
606 | - String[] classPathEntries = container.getClassPathEntries(); | ||
607 | - if (classPathEntries != null) | ||
608 | - { | ||
609 | - for (String classPathEntry : classPathEntries) | ||
610 | - { | ||
611 | - try | ||
612 | - { | ||
613 | - File classPathJar = new File(this.environment.getGameDirectory(), classPathEntry); | ||
614 | - URL classPathJarUrl = classPathJar.toURI().toURL(); | ||
615 | - | ||
616 | - LiteLoaderLogger.info("Adding Class-Path entry: %s", classPathEntry); | ||
617 | - LiteLoaderTweaker.addURLToParentClassLoader(classPathJarUrl); | ||
618 | - this.classLoader.addURL(classPathJarUrl); | ||
619 | - } | ||
620 | - catch (MalformedURLException ex) {} | ||
621 | - } | ||
622 | - } | 604 | + this.injectTweakContainer(container); |
623 | } | 605 | } |
624 | } | 606 | } |
625 | catch (MalformedURLException ex) | 607 | catch (MalformedURLException ex) |
@@ -650,28 +632,62 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | @@ -650,28 +632,62 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
650 | 632 | ||
651 | private void addMixinsFrom(MixinContainer<File> container) | 633 | private void addMixinsFrom(MixinContainer<File> container) |
652 | { | 634 | { |
653 | - for (String config : container.getMixinConfigs()) | 635 | + try |
654 | { | 636 | { |
655 | - if (config.endsWith(".json")) | ||
656 | - { | ||
657 | - LiteLoaderLogger.info(Verbosity.REDUCED, "Registering mixin config %s for %s", config, container.getName()); | ||
658 | - MixinEnvironment.getDefaultEnvironment().addConfiguration(config); | ||
659 | - } | ||
660 | - else if (config.contains(".json@")) | 637 | + for (String config : container.getMixinConfigs()) |
661 | { | 638 | { |
662 | - int pos = config.indexOf(".json@"); | ||
663 | - String phaseName = config.substring(pos + 6); | ||
664 | - config = config.substring(0, pos + 5); | ||
665 | - Phase phase = Phase.forName(phaseName); | ||
666 | - if (phase != null) | 639 | + if (config.endsWith(".json")) |
667 | { | 640 | { |
668 | LiteLoaderLogger.info(Verbosity.REDUCED, "Registering mixin config %s for %s", config, container.getName()); | 641 | LiteLoaderLogger.info(Verbosity.REDUCED, "Registering mixin config %s for %s", config, container.getName()); |
669 | - MixinEnvironment.getEnvironment(phase).addConfiguration(config); | 642 | + MixinEnvironment.getDefaultEnvironment().addConfiguration(config); |
643 | + this.injectContainerRecursive(container); | ||
644 | + } | ||
645 | + else if (config.contains(".json@")) | ||
646 | + { | ||
647 | + int pos = config.indexOf(".json@"); | ||
648 | + String phaseName = config.substring(pos + 6); | ||
649 | + config = config.substring(0, pos + 5); | ||
650 | + Phase phase = Phase.forName(phaseName); | ||
651 | + if (phase != null) | ||
652 | + { | ||
653 | + LiteLoaderLogger.info(Verbosity.REDUCED, "Registering mixin config %s for %s", config, container.getName()); | ||
654 | + MixinEnvironment.getEnvironment(phase).addConfiguration(config); | ||
655 | + this.injectContainerRecursive(container); | ||
656 | + } | ||
670 | } | 657 | } |
671 | } | 658 | } |
672 | } | 659 | } |
660 | + catch (MalformedURLException ex) | ||
661 | + { | ||
662 | + } | ||
673 | } | 663 | } |
674 | 664 | ||
665 | + protected void injectTweakContainer(TweakContainer<File> container) throws MalformedURLException | ||
666 | + { | ||
667 | + if (!container.injectIntoClassPath(this.classLoader, true)) | ||
668 | + { | ||
669 | + return; | ||
670 | + } | ||
671 | + | ||
672 | + String[] classPathEntries = container.getClassPathEntries(); | ||
673 | + if (classPathEntries != null) | ||
674 | + { | ||
675 | + for (String classPathEntry : classPathEntries) | ||
676 | + { | ||
677 | + try | ||
678 | + { | ||
679 | + File classPathJar = new File(this.environment.getGameDirectory(), classPathEntry); | ||
680 | + URL classPathJarUrl = classPathJar.toURI().toURL(); | ||
681 | + | ||
682 | + LiteLoaderLogger.info("Adding Class-Path entry: %s", classPathEntry); | ||
683 | + LiteLoaderTweaker.addURLToParentClassLoader(classPathJarUrl); | ||
684 | + this.classLoader.addURL(classPathJarUrl); | ||
685 | + } | ||
686 | + catch (MalformedURLException ex) {} | ||
687 | + } | ||
688 | + } | ||
689 | + } | ||
690 | + | ||
675 | /** | 691 | /** |
676 | * @param container | 692 | * @param container |
677 | */ | 693 | */ |
-
mentioned in issue #60