MagicLib

MagicLib

147k Downloads

[Bug] Error handling on malformed `farbric.mod.json`

Vigilans opened this issue · 2 comments

commented

What new features do you want?

When magiclib is used together with malformed fabric.mod.json in other mods, e.g. hopo-better-ruined-portals:

    {
    "schemaVersion": 1,
    "authors": ["Hoponopono"],
    "contact": {
    "discord": "discord.gg/CZQthZJjPc"
},
    "environment": "*",
    "name": "Hopo Better Ruined Portal",
    "id": "hopobetterruinedportal",
    "version": "1.3.3",
    "description": "§7Improve how the portals look in your world",
    "license": "All Rights Reserved",
    "icon": "icon.png"
    }   
}

magiclib will throw unhandled exception for it and the game will crash:

Caused by: com.google.gson.stream.MalformedJsonException: Use JsonReader.setLenient(true) to accept malformed JSON at line 15 column 2 path $
	at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1562) ~[gson-2.8.9.jar:?]
	at com.google.gson.stream.JsonReader.checkLenient(JsonReader.java:1403) ~[gson-2.8.9.jar:?]
	at com.google.gson.stream.JsonReader.doPeek(JsonReader.java:541) ~[gson-2.8.9.jar:?]
	at com.google.gson.stream.JsonReader.peek(JsonReader.java:424) ~[gson-2.8.9.jar:?]
	at com.google.gson.Gson.assertFullConsumption(Gson.java:935) ~[gson-2.8.9.jar:?]
	at com.google.gson.Gson.fromJson(Gson.java:902) ~[gson-2.8.9.jar:?]
	at top.hendrixshen.magiclib.util.MiscUtil.readJson(MiscUtil.java:27) ~[magiclib-1_19_2-0.7.293+17aa28c-stable-4867491e30f7cbac.jar:?]
	at top.hendrixshen.magiclib.util.FabricUtil$ModMetaData.<clinit>(FabricUtil.java:216) ~[magiclib-1_19_2-0.7.293+17aa28c-stable-4867491e30f7cbac.jar:?]
	at top.hendrixshen.magiclib.util.FabricUtil.getModInitDependencies(FabricUtil.java:120) ~[magiclib-1_19_2-0.7.293+17aa28c-stable-4867491e30f7cbac.jar:?]
	at top.hendrixshen.magiclib.util.FabricUtil.compatVersionCheck(FabricUtil.java:153) ~[magiclib-1_19_2-0.7.293+17aa28c-stable-4867491e30f7cbac.jar:?]
	at top.hendrixshen.magiclib.dependency.impl.MagicMixinPlugin.onLoad(MagicMixinPlugin.java:45) ~[magiclib-1_19_2-0.7.293+17aa28c-stable-4867491e30f7cbac.jar:?]
	at org.spongepowered.asm.mixin.transformer.PluginHandle.onLoad(PluginHandle.java:119) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinConfig.onSelect(MixinConfig.java:709) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.selectConfigs(MixinProcessor.java:498) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.select(MixinProcessor.java:460) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.checkSelect(MixinProcessor.java:438) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinProcessor.applyMixins(MixinProcessor.java:290) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClass(MixinTransformer.java:234) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at org.spongepowered.asm.mixin.transformer.MixinTransformer.transformClassBytes(MixinTransformer.java:202) ~[sponge-mixin-0.12.4+mixin.0.8.5.jar:0.12.4+mixin.0.8.5]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.getPostMixinClassByteArray(KnotClassDelegate.java:422) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.tryLoadClass(KnotClassDelegate.java:323) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassDelegate.loadClass(KnotClassDelegate.java:218) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.launch.knot.KnotClassLoader.loadClass(KnotClassLoader.java:112) ~[fabric-loader-0.14.18.jar:?]
	at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
	at java.lang.Class.forName0(Native Method) ~[?:?]
	at java.lang.Class.forName(Class.java:467) ~[?:?]
	at net.fabricmc.loader.impl.util.DefaultLanguageAdapter.create(DefaultLanguageAdapter.java:50) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointStorage$NewEntry.getOrCreate(EntrypointStorage.java:117) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointContainerImpl.getEntrypoint(EntrypointContainerImpl.java:53) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke0(EntrypointUtils.java:47) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.entrypoint.EntrypointUtils.invoke(EntrypointUtils.java:35) ~[fabric-loader-0.14.18.jar:?]
	at net.fabricmc.loader.impl.launch.knot.Knot.init(Knot.java:162) ~[fabric-loader-0.14.18.jar:?]
	... 2 more

But without magiclib the mc instance will launch successfully. So this is a feature request that magiclib may handle such malformed json so it will preserve the behavior without magiclib.

Latest CI build tested

  • I confirm that the feature I requested is not in the latest CI build.
commented

0.7.302+8d1be4b should work well.

commented

0.7.302+8d1be4b should work well.

It successfully works. Thanks!