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,10 +204,10 @@ public class PacketEventsClient extends PacketEvents | ||
204 | @Override | 204 | @Override |
205 | protected void handlePacket(PacketEventInfo<Packet> e, INetHandler netHandler, S02PacketChat packet) | 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 | return; | 208 | return; |
209 | 209 | ||
210 | - IChatComponent originalChat = packet.func_148915_c(); | 210 | + IChatComponent originalChat = packet.getChatComponent(); |
211 | IChatComponent chat = originalChat; | 211 | IChatComponent chat = originalChat; |
212 | String message = chat.getFormattedText(); | 212 | String message = chat.getFormattedText(); |
213 | 213 |
java/common/com/mumfrey/liteloader/core/LiteLoaderEnumerator.java
@@ -6,9 +6,11 @@ import java.net.URL; | @@ -6,9 +6,11 @@ import java.net.URL; | ||
6 | import java.util.ArrayList; | 6 | import java.util.ArrayList; |
7 | import java.util.Collection; | 7 | import java.util.Collection; |
8 | import java.util.Collections; | 8 | import java.util.Collections; |
9 | +import java.util.Deque; | ||
9 | import java.util.HashMap; | 10 | import java.util.HashMap; |
10 | import java.util.HashSet; | 11 | import java.util.HashSet; |
11 | import java.util.LinkedHashSet; | 12 | import java.util.LinkedHashSet; |
13 | +import java.util.LinkedList; | ||
12 | import java.util.List; | 14 | import java.util.List; |
13 | import java.util.Map; | 15 | import java.util.Map; |
14 | import java.util.Set; | 16 | import java.util.Set; |
@@ -29,6 +31,7 @@ import com.mumfrey.liteloader.core.api.DefaultClassValidator; | @@ -29,6 +31,7 @@ import com.mumfrey.liteloader.core.api.DefaultClassValidator; | ||
29 | import com.mumfrey.liteloader.core.api.DefaultEnumeratorPlugin; | 31 | import com.mumfrey.liteloader.core.api.DefaultEnumeratorPlugin; |
30 | import com.mumfrey.liteloader.core.event.HandlerList; | 32 | import com.mumfrey.liteloader.core.event.HandlerList; |
31 | import com.mumfrey.liteloader.interfaces.FastIterableDeque; | 33 | import com.mumfrey.liteloader.interfaces.FastIterableDeque; |
34 | +import com.mumfrey.liteloader.interfaces.Injectable; | ||
32 | import com.mumfrey.liteloader.interfaces.Loadable; | 35 | import com.mumfrey.liteloader.interfaces.Loadable; |
33 | import com.mumfrey.liteloader.interfaces.LoadableMod; | 36 | import com.mumfrey.liteloader.interfaces.LoadableMod; |
34 | import com.mumfrey.liteloader.interfaces.LoaderEnumerator; | 37 | import com.mumfrey.liteloader.interfaces.LoaderEnumerator; |
@@ -386,6 +389,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | @@ -386,6 +389,8 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
386 | LiteLoaderLogger.warning(th, "Enumerator Module %s encountered an error whilst enumerating", module.getClass().getName()); | 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 | private void injectDiscoveredTweaks() | 396 | private void injectDiscoveredTweaks() |
@@ -469,29 +474,24 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | @@ -469,29 +474,24 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
469 | { | 474 | { |
470 | this.checkState(EnumeratorState.DISCOVER, "registerModContainer"); | 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 | return true; | 495 | return true; |
496 | } | 496 | } |
497 | 497 | ||
@@ -616,7 +616,7 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | @@ -616,7 +616,7 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
616 | if (transformerManager != null && transformerManager.injectTransformer(classTransformerClass)) | 616 | if (transformerManager != null && transformerManager.injectTransformer(classTransformerClass)) |
617 | { | 617 | { |
618 | LiteLoaderLogger.info(Verbosity.REDUCED, "classTransformer '%s' was successfully added", classTransformerClass); | 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,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 | /* (non-Javadoc) | 647 | /* (non-Javadoc) |
629 | * @see com.mumfrey.liteloader.core.PluggableEnumerator#registerMods(com.mumfrey.liteloader.core.LoadableMod, boolean) | 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,6 +726,29 @@ public class LiteLoaderEnumerator implements LoaderEnumerator | ||
707 | return true; | 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 | @Override | 752 | @Override |
711 | public boolean checkDependencies(LoadableMod<?> container) | 753 | public boolean checkDependencies(LoadableMod<?> container) |
712 | { | 754 | { |