mirror of
https://github.com/PolyhedralDev/Terra.git
synced 2026-02-16 10:30:42 +00:00
fix BiomeProviderHolder NPE
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user