fix BiomeProviderHolder NPE

This commit is contained in:
dfsek
2022-06-11 23:56:28 -07:00
parent a33982a432
commit 779834267e
5 changed files with 10 additions and 11 deletions

View File

@@ -4,7 +4,7 @@ import com.dfsek.terra.api.world.biome.generation.BiomeProvider;
public interface BiomeProviderHolder {
void setBiomeProvider(BiomeProvider biomeProvider);
void terra$setHeldBiomeProvider(BiomeProvider biomeProvider);
BiomeProvider getBiomeProvider();
BiomeProvider terra$getHeldBiomeProvider();
}

View File

@@ -94,7 +94,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
if(chunk instanceof net.minecraft.world.chunk.ProtoChunk) {
ChunkPos pos = chunk.getPos();
((BiomeProviderHolder) chunk)
.setBiomeProvider(pack.getBiomeProvider()
.terra$setHeldBiomeProvider(pack.getBiomeProvider()
.caching((ProtoWorld) ((StructureAccessorAccessor) structureAccessor).getWorld(), pos.x, pos.z));
}
return super.populateBiomes(biomeRegistry, executor, noiseConfig, blender, structureAccessor, chunk);
@@ -138,7 +138,7 @@ public class FabricChunkGeneratorWrapper extends net.minecraft.world.gen.chunk.C
ProtoWorld world = (ProtoWorld) ((StructureAccessorAccessor) structureAccessor).getWorld();
BiomeProvider biomeProvider;
if(chunk instanceof BiomeProviderHolder providerHolder) {
biomeProvider = providerHolder.getBiomeProvider();
biomeProvider = providerHolder.terra$getHeldBiomeProvider();
if(biomeProvider == null) {
biomeProvider = pack.getBiomeProvider().caching(world);
}

View File

@@ -7,7 +7,6 @@ import com.dfsek.terra.fabric.generation.BiomeProviderHolder;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.ChunkRegion;
import net.minecraft.world.chunk.ChunkStatus;
import net.minecraft.world.chunk.ProtoChunk;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Implements;
import org.spongepowered.asm.mixin.Interface;
@@ -31,18 +30,18 @@ public class ChunkRegionMixin {
@Inject(method = "<init>", at = @At("RETURN"))
public void addProvider(ServerWorld world, List<Chunk> chunks, ChunkStatus status, int placementRadius, CallbackInfo ci) {
if(centerPos instanceof BiomeProviderHolder providerHolder) {
biomeProvider = providerHolder.getBiomeProvider();
biomeProvider = providerHolder.terra$getHeldBiomeProvider();
}
}
public void provider$setBiomeProvider(BiomeProvider provider) {
public void provider$terra$setHeldBiomeProvider(BiomeProvider provider) {
if(this.biomeProvider != null) {
throw new IllegalStateException("Already set biome provider for chunk " + this);
}
this.biomeProvider = provider;
}
public BiomeProvider provider$getBiomeProvider() {
public BiomeProvider provider$terra$getHeldBiomeProvider() {
return biomeProvider;
}
}

View File

@@ -14,14 +14,14 @@ import org.spongepowered.asm.mixin.Mixin;
public class ProtoChunkMixin {
private BiomeProvider biomeProvider;
public void provider$setBiomeProvider(BiomeProvider provider) {
public void provider$terra$setHeldBiomeProvider(BiomeProvider provider) {
if(this.biomeProvider != null) {
throw new IllegalStateException("Already set biome provider for chunk " + this);
}
this.biomeProvider = provider;
}
public BiomeProvider provider$getBiomeProvider() {
public BiomeProvider provider$terra$getHeldBiomeProvider() {
return biomeProvider;
}
}

View File

@@ -131,7 +131,7 @@ public abstract class ChunkRegionMixin {
}
public BiomeProvider terraWorld$getBiomeProvider() {
BiomeProvider provider = ((BiomeProviderHolder) this).getBiomeProvider();
BiomeProvider provider = ((BiomeProviderHolder) this).terra$getHeldBiomeProvider();
if(provider != null) {
return provider;
}