Commit 47e1f2f2e41ccbae12932d87101eeee88a02127a
1 parent
0b584ff1
Fix applying brand when loading as a forge mod
Showing
5 changed files
with
60 additions
and
7 deletions
src/client/resources/mixins.liteloader.client.preinit.json
1 | { | 1 | { |
2 | - "required": true, | 2 | + "required": false, |
3 | "minVersion": "0.7.4", | 3 | "minVersion": "0.7.4", |
4 | "compatibilityLevel": "JAVA_8", | 4 | "compatibilityLevel": "JAVA_8", |
5 | "target": "@env(PREINIT)", | 5 | "target": "@env(PREINIT)", |
@@ -7,8 +7,5 @@ | @@ -7,8 +7,5 @@ | ||
7 | "refmap": "mixins.liteloader.client.refmap.json", | 7 | "refmap": "mixins.liteloader.client.refmap.json", |
8 | "mixins": [ | 8 | "mixins": [ |
9 | "MixinClientBrandRetriever" | 9 | "MixinClientBrandRetriever" |
10 | - ], | ||
11 | - "injectors": { | ||
12 | - "defaultRequire": 1 | ||
13 | - } | 10 | + ] |
14 | } | 11 | } |
15 | \ No newline at end of file | 12 | \ No newline at end of file |
src/main/java/com/mumfrey/liteloader/core/LiteLoader.java
@@ -896,6 +896,8 @@ public final class LiteLoader | @@ -896,6 +896,8 @@ public final class LiteLoader | ||
896 | */ | 896 | */ |
897 | void onStartupComplete() | 897 | void onStartupComplete() |
898 | { | 898 | { |
899 | + LiteLoaderBootstrap.onStartupComplete(); | ||
900 | + | ||
899 | this.coreProviders.all().onStartupComplete(); | 901 | this.coreProviders.all().onStartupComplete(); |
900 | 902 | ||
901 | if (this.panelManager != null) | 903 | if (this.panelManager != null) |
src/main/java/com/mumfrey/liteloader/core/LiteLoaderBootstrap.java
@@ -12,7 +12,9 @@ import java.io.FileWriter; | @@ -12,7 +12,9 @@ import java.io.FileWriter; | ||
12 | import java.io.IOException; | 12 | import java.io.IOException; |
13 | import java.io.InputStream; | 13 | import java.io.InputStream; |
14 | import java.io.Serializable; | 14 | import java.io.Serializable; |
15 | +import java.lang.reflect.Field; | ||
15 | import java.util.List; | 16 | import java.util.List; |
17 | +import java.util.Map; | ||
16 | import java.util.Properties; | 18 | import java.util.Properties; |
17 | 19 | ||
18 | import org.apache.commons.io.Charsets; | 20 | import org.apache.commons.io.Charsets; |
@@ -22,6 +24,7 @@ import org.apache.logging.log4j.core.appender.FileAppender; | @@ -22,6 +24,7 @@ import org.apache.logging.log4j.core.appender.FileAppender; | ||
22 | import org.apache.logging.log4j.core.layout.PatternLayout; | 24 | import org.apache.logging.log4j.core.layout.PatternLayout; |
23 | import org.spongepowered.asm.mixin.MixinEnvironment; | 25 | import org.spongepowered.asm.mixin.MixinEnvironment; |
24 | 26 | ||
27 | +import com.google.common.collect.ImmutableMap; | ||
25 | import com.mumfrey.liteloader.api.LiteAPI; | 28 | import com.mumfrey.liteloader.api.LiteAPI; |
26 | import com.mumfrey.liteloader.api.manager.APIAdapter; | 29 | import com.mumfrey.liteloader.api.manager.APIAdapter; |
27 | import com.mumfrey.liteloader.api.manager.APIProvider; | 30 | import com.mumfrey.liteloader.api.manager.APIProvider; |
@@ -40,6 +43,7 @@ import com.mumfrey.liteloader.util.ObfuscationUtilities; | @@ -40,6 +43,7 @@ import com.mumfrey.liteloader.util.ObfuscationUtilities; | ||
40 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | 43 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger; |
41 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; | 44 | import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; |
42 | 45 | ||
46 | +import net.minecraft.client.ClientBrandRetriever; | ||
43 | import net.minecraft.launchwrapper.ITweaker; | 47 | import net.minecraft.launchwrapper.ITweaker; |
44 | import net.minecraft.launchwrapper.LaunchClassLoader; | 48 | import net.minecraft.launchwrapper.LaunchClassLoader; |
45 | 49 | ||
@@ -768,6 +772,56 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP | @@ -768,6 +772,56 @@ class LiteLoaderBootstrap implements LoaderBootstrap, LoaderEnvironment, LoaderP | ||
768 | { | 772 | { |
769 | return this.branding; | 773 | return this.branding; |
770 | } | 774 | } |
775 | + | ||
776 | + /** | ||
777 | + * Check that the branding was applied and if not, attempt to set it in the | ||
778 | + * fml branding directly using reflection | ||
779 | + */ | ||
780 | + @SuppressWarnings("unchecked") | ||
781 | + static void onStartupComplete() | ||
782 | + { | ||
783 | + try | ||
784 | + { | ||
785 | + // If this field exists, the mixin was successfully applied so we can stop | ||
786 | + | ||
787 | + try | ||
788 | + { | ||
789 | + ClientBrandRetriever.class.getDeclaredField("BRANDING_LITELOADER"); | ||
790 | + return; | ||
791 | + } | ||
792 | + catch (NoSuchFieldException ex) | ||
793 | + { | ||
794 | + // Field doesn't exist so the mixin was not applied | ||
795 | + } | ||
796 | + | ||
797 | + // Get loader | ||
798 | + Class<?> clLoader = Class.forName("net.minecraftforge.fml.common.Loader"); | ||
799 | + | ||
800 | + // Get instance | ||
801 | + Object instance = clLoader.getMethod("instance").invoke(null); | ||
802 | + | ||
803 | + // Get branding properties | ||
804 | + Map<String, String> properties = (Map<String, String>)clLoader.getMethod("getFMLBrandingProperties").invoke(instance); | ||
805 | + | ||
806 | + // Retrieve the current snooper branding | ||
807 | + String branding = properties.get("snooperbranding"); | ||
808 | + | ||
809 | + // If it's blank, set ourself, if it's already set then append ourself | ||
810 | + branding = branding == null ? "LiteLoader" : branding + ",LiteLoader"; | ||
811 | + | ||
812 | + // Find the field in Loader | ||
813 | + Field fdProperties = clLoader.getDeclaredField("fmlBrandingProperties"); | ||
814 | + fdProperties.setAccessible(true); | ||
815 | + | ||
816 | + // Set new properties into field | ||
817 | + fdProperties.set(instance, ImmutableMap.<String, String>builder().putAll(properties).put("snooperbranding", branding).build()); | ||
818 | + } | ||
819 | + catch (Exception ex) | ||
820 | + { | ||
821 | + // Oh well, we tried | ||
822 | + ex.printStackTrace(); | ||
823 | + } | ||
824 | + } | ||
771 | 825 | ||
772 | /* (non-Javadoc) | 826 | /* (non-Javadoc) |
773 | * @see com.mumfrey.liteloader.launch.LoaderBootstrap | 827 | * @see com.mumfrey.liteloader.launch.LoaderBootstrap |
src/main/java/com/mumfrey/liteloader/crashreport/CrashSectionLiteLoaderBrand.java
@@ -31,7 +31,7 @@ public class CrashSectionLiteLoaderBrand | @@ -31,7 +31,7 @@ public class CrashSectionLiteLoaderBrand | ||
31 | } | 31 | } |
32 | catch (Exception ex) | 32 | catch (Exception ex) |
33 | { | 33 | { |
34 | - brand = "LiteLoader startup failed"; | 34 | + brand = "LiteLoader startup incomplete"; |
35 | } | 35 | } |
36 | return brand == null ? "Unknown / None" : brand; | 36 | return brand == null ? "Unknown / None" : brand; |
37 | } | 37 | } |
src/main/java/com/mumfrey/liteloader/crashreport/CrashSectionLiteLoaderMods.java