athrane / bassebombecraft

Bassebombecraft Minecraft Mod
https://www.curseforge.com/minecraft/mc-mods/bassebombecraft
GNU General Public License v3.0
0 stars 0 forks source link

Mod fails to start with error: NullPointerException: Cannot get config value before spec is built #1288

Closed athrane closed 2 years ago

athrane commented 2 years ago

Error during prototype implementation of issue #1287.

Stacktrace:

java.lang.ExceptionInInitializerError: null
    at net.minecraftforge.fml.javafmlmod.FMLModContainer.<init>(FMLModContainer.java:67) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:36.1]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_211]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_211]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_211]
    at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_211]
    at net.minecraftforge.fml.javafmlmod.FMLJavaModLanguageProvider$FMLModTarget.loadMod(FMLJavaModLanguageProvider.java:76) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:36.1]
    at net.minecraftforge.fml.ModLoader.buildModContainerFromTOML(ModLoader.java:296) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.ModLoader.lambda$buildMods$29(ModLoader.java:275) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_211]
    at java.util.HashMap$EntrySpliterator.forEachRemaining(HashMap.java:1699) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_211]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_211]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_211]
    at net.minecraftforge.fml.ModLoader.buildMods(ModLoader.java:277) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.ModLoader.lambda$gatherAndInitializeMods$11(ModLoader.java:177) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_211]
    at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193) ~[?:1.8.0_211]
    at java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1382) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471) ~[?:1.8.0_211]
    at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708) ~[?:1.8.0_211]
    at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[?:1.8.0_211]
    at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499) ~[?:1.8.0_211]
    at net.minecraftforge.fml.ModLoader.gatherAndInitializeMods(ModLoader.java:179) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.client.ClientModLoader.lambda$begin$1(ClientModLoader.java:103) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.client.ClientModLoader.lambda$createRunnableWithCatch$4(ClientModLoader.java:123) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.client.ClientModLoader.begin(ClientModLoader.java:103) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraft.client.Minecraft.<init>(Minecraft.java:442) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraft.client.main.Main.main(Main.java:149) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_211]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_211]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_211]
    at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_211]
    at net.minecraftforge.userdev.FMLUserdevClientLaunchProvider.lambda$launchService$0(FMLUserdevClientLaunchProvider.java:52) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-8.0.9.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:54) [modlauncher-8.0.9.jar:?]
    at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:72) [modlauncher-8.0.9.jar:?]
    at cpw.mods.modlauncher.Launcher.run(Launcher.java:82) [modlauncher-8.0.9.jar:?]
    at cpw.mods.modlauncher.Launcher.main(Launcher.java:66) [modlauncher-8.0.9.jar:?]
    at net.minecraftforge.userdev.LaunchTesting.main(LaunchTesting.java:105) [forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
Caused by: java.lang.ExceptionInInitializerError
    at bassebombecraft.item.book.BeastmasterBook.<clinit>(BeastmasterBook.java:42) ~[main/:?]
    at bassebombecraft.config.ModConfiguration.setupBooksConfig(ModConfiguration.java:1790) ~[main/:?]
    at bassebombecraft.config.ModConfiguration.<clinit>(ModConfiguration.java:840) ~[main/:?]
    at bassebombecraft.entity.commander.command.AttackNearestMobCommand.<init>(AttackNearestMobCommand.java:50) ~[main/:?]
    at bassebombecraft.entity.commander.DefaultMobCommanderRepository.<clinit>(DefaultMobCommanderRepository.java:23) ~[main/:?]
    at bassebombecraft.client.proxy.ClientProxy.<init>(ClientProxy.java:187) ~[main/:?]
    at net.minecraftforge.fml.DistExecutor.unsafeRunForDist(DistExecutor.java:174) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.DistExecutor.runForDist(DistExecutor.java:157) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at bassebombecraft.BassebombeCraft.<clinit>(BassebombeCraft.java:67) ~[main/:?]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_211]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_211]
    at net.minecraftforge.fml.javafmlmod.FMLModContainer.<init>(FMLModContainer.java:61) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:36.1]
    ... 41 more
Caused by: java.lang.NullPointerException: Cannot get config value before spec is built
    at com.google.common.base.Preconditions.checkNotNull(Preconditions.java:787) ~[guava-21.0.jar:?]
    at net.minecraftforge.common.ForgeConfigSpec$ConfigValue.get(ForgeConfigSpec.java:822) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at bassebombecraft.item.book.GenericRightClickedBook.<init>(GenericRightClickedBook.java:68) ~[main/:?]
    at bassebombecraft.item.baton.MobCommandersBaton.<init>(MobCommandersBaton.java:15) ~[main/:?]
    at bassebombecraft.item.RegisteredItems.register(RegisteredItems.java:326) ~[main/:?]
    at bassebombecraft.item.RegisteredItems.<clinit>(RegisteredItems.java:165) ~[main/:?]
    at bassebombecraft.item.book.BeastmasterBook.<clinit>(BeastmasterBook.java:42) ~[main/:?]
    at bassebombecraft.config.ModConfiguration.setupBooksConfig(ModConfiguration.java:1790) ~[main/:?]
    at bassebombecraft.config.ModConfiguration.<clinit>(ModConfiguration.java:840) ~[main/:?]
    at bassebombecraft.entity.commander.command.AttackNearestMobCommand.<init>(AttackNearestMobCommand.java:50) ~[main/:?]
    at bassebombecraft.entity.commander.DefaultMobCommanderRepository.<clinit>(DefaultMobCommanderRepository.java:23) ~[main/:?]
    at bassebombecraft.client.proxy.ClientProxy.<init>(ClientProxy.java:187) ~[main/:?]
    at net.minecraftforge.fml.DistExecutor.unsafeRunForDist(DistExecutor.java:174) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at net.minecraftforge.fml.DistExecutor.runForDist(DistExecutor.java:157) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:?]
    at bassebombecraft.BassebombeCraft.<clinit>(BassebombeCraft.java:67) ~[main/:?]
    at java.lang.Class.forName0(Native Method) ~[?:1.8.0_211]
    at java.lang.Class.forName(Class.java:348) ~[?:1.8.0_211]
    at net.minecraftforge.fml.javafmlmod.FMLModContainer.<init>(FMLModContainer.java:61) ~[forge-1.16.5-36.1.0_mapped_snapshot_20210309-1.16.5-recomp.jar:36.1]
    ... 41 more
athrane commented 2 years ago

Solution is to use a function to return registry items: static Supplier<Stream<RegistryObject<Item>>> splComposites = () -> Stream.of(FORMATION1, PROJECTILE3, MODIFIER3);

instead of of an stream: static Stream<RegistryObject<Item>> composites = Stream.of(FORMATION1, PROJECTILE3, MODIFIER3);

athrane commented 2 years ago

Resolved with #1287