
[Bug] Error handling on malformed `farbric.mod.json`
Vigilans opened this issue · 2 comments
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.
0.7.302+8d1be4b should work well.
0.7.302+8d1be4b should work well.
It successfully works. Thanks!