Mod fails to start with error: NullPointerException: Cannot get config value before spec is built
athrane opened this issue ยท 3 comments
Stacktrace:
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:714) ~[forge-1.15.2-31.1.0_mapped_snapshot_20200210-1.15.1-recomp.jar:?] {re:classloading}
at bassebombecraft.operator.projectile.path.AccelerateProjectilePath.<init>(AccelerateProjectilePath.java:46) ~[main/:?] {re:classloading}
at bassebombecraft.operator.projectile.path.AccelerateProjectilePath.<init>(AccelerateProjectilePath.java:55) ~[main/:?] {re:classloading}
at bassebombecraft.projectile.GenericProjectileEntity.<clinit>(GenericProjectileEntity.java:52) ~[main/:?] {re:classloading}
at bassebombecraft.config.ModConfiguration.setupEntitiesConfig(ModConfiguration.java:1978) ~[main/:?] {re:classloading}
at bassebombecraft.config.ModConfiguration.<clinit>(ModConfiguration.java:657) ~[main/:?] {re:classloading}
at bassebombecraft.entity.commander.command.AttackNearestMobCommand.<init>(AttackNearestMobCommand.java:50) ~[main/:?] {re:classloading}
at bassebombecraft.entity.commander.DefaultMobCommanderRepository.<clinit>(DefaultMobCommanderRepository.java:23) ~[main/:?] {re:classloading}
at bassebombecraft.client.proxy.ClientProxy.<init>(ClientProxy.java:163) ~[main/:?] {re:classloading}
Solution is to move resolution of propety from constructor:
/**
* Constructor.
*
* @param fnGetProjectile function to get projectile entity.
*/
public AccelerateProjectilePath(Function<Ports, Entity> fnGetProjectile) {
this.fnGetProjectile = fnGetProjectile;
acceleration = accelerateProjectilePathAcceleration.get();
}
To execution of the operator:
@Override
public Ports run(Ports ports) {
....
double targetLength = length * accelerateProjectilePathAcceleration.get();
Resolved with commit: 9ca2002