Commit 1012613a5bac1f67f4619624abe30cdb8e6dff8f
1 parent
1c6b9c78
fix some dependency check issues, possibly fixes #78
Showing
2 changed files
with
65 additions
and
23 deletions
java/client/com/mumfrey/liteloader/client/PacketEventsClient.java
... | ... | @@ -204,10 +204,10 @@ public class PacketEventsClient extends PacketEvents |
204 | 204 | @Override |
205 | 205 | protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet) |
206 | 206 | { |
207 | - if (packet.func_148915_c() == null) | |
207 | + if (packet.getChatComponent() == null) | |
208 | 208 | return; |
209 | 209 | |
210 | - IChatComponent originalChat = packet.func_148915_c(); | |
210 | + IChatComponent originalChat = packet.getChatComponent(); | |
211 | 211 | IChatComponent chat = originalChat; |
212 | 212 | String message = chat.getFormattedText(); |
213 | 213 | ... | ... |
java/common/com/mumfrey/liteloader/core/LiteLoaderEnumerator.java
... | ... | @@ -6,9 +6,11 @@ import java.net.URL; |
6 | 6 | import java.util.ArrayList; |
7 | 7 | import java.util.Collection; |
8 | 8 | import java.util.Collections; |
9 | +import java.util.Deque; | |
9 | 10 | import java.util.HashMap; |
10 | 11 | import java.util.HashSet; |
11 | 12 | import java.util.LinkedHashSet; |
13 | +import java.util.LinkedList; | |
12 | 14 | import java.util.List; |
13 | 15 | import java.util.Map; |
14 | 16 | import java.util.Set; |
... | ... | @@ -29,6 +31,7 @@ import com.mumfrey.liteloader.core.api.DefaultClassValidator; |
29 | 31 | import com.mumfrey.liteloader.core.api.DefaultEnumeratorPlugin; |
30 | 32 | import com.mumfrey.liteloader.core.event.HandlerList; |
31 | 33 | import com.mumfrey.liteloader.interfaces.FastIterableDeque; |
34 | +import com.mumfrey.liteloader.interfaces.Injectable; | |
32 | 35 | import com.mumfrey.liteloader.interfaces.Loadable; |
33 | 36 | import com.mumfrey.liteloader.interfaces.LoadableMod; |
34 | 37 | import com.mumfrey.liteloader.interfaces.LoaderEnumerator; |
... | ... | @@ -386,6 +389,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator |
386 | 389 | LiteLoaderLogger.warning(th, "Enumerator Module %s encountered an error whilst enumerating", module.getClass().getName()); |
387 | 390 | } |
388 | 391 | } |
392 | + | |
393 | + this.checkDependencies(); | |
389 | 394 | } |
390 | 395 | |
391 | 396 | private void injectDiscoveredTweaks() |
... | ... | @@ -469,29 +474,24 @@ public class LiteLoaderEnumerator implements LoaderEnumerator |
469 | 474 | { |
470 | 475 | this.checkState(EnumeratorState.DISCOVER, "registerModContainer"); |
471 | 476 | |
472 | - if (container != null) | |
477 | + if (container == null) | |
473 | 478 | { |
474 | - if (!this.checkEnabled(container)) | |
475 | - { | |
476 | - this.registerDisabledContainer(container, DisabledReason.USER_DISABLED); | |
477 | - return false; | |
478 | - } | |
479 | - | |
480 | - if (!this.checkDependencies(container)) | |
481 | - { | |
482 | - this.registerDisabledContainer(container, DisabledReason.MISSING_DEPENDENCY); | |
483 | - return false; | |
484 | - } | |
485 | - | |
486 | - if (!this.checkAPIRequirements(container)) | |
487 | - { | |
488 | - this.registerDisabledContainer(container, DisabledReason.MISSING_API); | |
489 | - return false; | |
490 | - } | |
491 | - | |
492 | - this.registerEnabledContainer(container); | |
479 | + return true; | |
493 | 480 | } |
494 | 481 | |
482 | + if (!this.checkEnabled(container)) | |
483 | + { | |
484 | + this.registerDisabledContainer(container, DisabledReason.USER_DISABLED); | |
485 | + return false; | |
486 | + } | |
487 | + | |
488 | + if (!this.checkAPIRequirements(container)) | |
489 | + { | |
490 | + this.registerDisabledContainer(container, DisabledReason.MISSING_API); | |
491 | + return false; | |
492 | + } | |
493 | + | |
494 | + this.registerEnabledContainer(container); | |
495 | 495 | return true; |
496 | 496 | } |
497 | 497 | |
... | ... | @@ -616,7 +616,7 @@ public class LiteLoaderEnumerator implements LoaderEnumerator |
616 | 616 | if (transformerManager != null && transformerManager.injectTransformer(classTransformerClass)) |
617 | 617 | { |
618 | 618 | LiteLoaderLogger.info(Verbosity.REDUCED, "classTransformer '%s' was successfully added", classTransformerClass); |
619 | - container.injectIntoClassPath(this.classLoader, true); | |
619 | + this.injectContainerRecursive(container); | |
620 | 620 | } |
621 | 621 | } |
622 | 622 | } |
... | ... | @@ -625,6 +625,25 @@ public class LiteLoaderEnumerator implements LoaderEnumerator |
625 | 625 | } |
626 | 626 | } |
627 | 627 | |
628 | + /** | |
629 | + * @param container | |
630 | + */ | |
631 | + private void injectContainerRecursive(Injectable container) throws MalformedURLException | |
632 | + { | |
633 | + if (container.injectIntoClassPath(this.classLoader, true) && container instanceof LoadableMod) | |
634 | + { | |
635 | + LoadableMod<?> file = (LoadableMod<?>)container; | |
636 | + for (String dependency : file.getDependencies()) | |
637 | + { | |
638 | + LoadableMod<?> dependencyContainer = this.containers.getEnabledContainer(dependency); | |
639 | + if (dependencyContainer != null) | |
640 | + { | |
641 | + this.injectContainerRecursive(dependencyContainer); | |
642 | + } | |
643 | + } | |
644 | + } | |
645 | + } | |
646 | + | |
628 | 647 | /* (non-Javadoc) |
629 | 648 | * @see com.mumfrey.liteloader.core.PluggableEnumerator#registerMods(com.mumfrey.liteloader.core.LoadableMod, boolean) |
630 | 649 | */ |
... | ... | @@ -707,6 +726,29 @@ public class LiteLoaderEnumerator implements LoaderEnumerator |
707 | 726 | return true; |
708 | 727 | } |
709 | 728 | |
729 | + /** | |
730 | + * Check dependencies of enabled containers | |
731 | + */ | |
732 | + private void checkDependencies() | |
733 | + { | |
734 | + Collection<? extends LoadableMod<?>> enabledContainers = this.containers.getEnabledContainers(); | |
735 | + Deque<LoadableMod<?>> containers = new LinkedList<LoadableMod<?>>(enabledContainers); | |
736 | + | |
737 | + while (containers.size() > 0) | |
738 | + { | |
739 | + LoadableMod<?> container = containers.pop(); | |
740 | + if (!this.checkDependencies(container)) | |
741 | + { | |
742 | + this.registerDisabledContainer(container, DisabledReason.MISSING_DEPENDENCY); | |
743 | + | |
744 | + // Iterate so that a container disabled by a failed dependency check will also | |
745 | + // disable any containers which depend upon it | |
746 | + containers.clear(); | |
747 | + containers.addAll(enabledContainers); | |
748 | + } | |
749 | + } | |
750 | + } | |
751 | + | |
710 | 752 | @Override |
711 | 753 | public boolean checkDependencies(LoadableMod<?> container) |
712 | 754 | { | ... | ... |