Bassebombecraft

Bassebombecraft

18.5k Downloads

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

athrane opened this issue ยท 3 comments

commented

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}

commented

See SpawnDecoy2 for another example..

commented

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();

commented

Resolved with commit: 9ca2002