minecraft-source/src/net/minecraft/world/level/biome/FixedBiomeSource.java

60 lines
2.0 KiB
Java
Raw Normal View History

2020-07-22 06:23:34 +01:00
package net.minecraft.world.level.biome;
import com.google.common.collect.Sets;
import net.minecraft.world.level.block.state.BlockState;
import java.util.Set;
import java.util.function.Function;
import net.minecraft.world.level.levelgen.feature.StructureFeature;
import javax.annotation.Nullable;
import net.minecraft.core.BlockPos;
import java.util.Random;
import java.util.List;
import java.util.Arrays;
public class FixedBiomeSource extends BiomeSource {
private final Biome biome;
public FixedBiomeSource(final FixedBiomeSourceSettings bjo) {
this.biome = bjo.getBiome();
}
@Override
public Biome getBiome(final int integer1, final int integer2) {
return this.biome;
}
@Override
public Biome[] getBiomeBlock(final int integer1, final int integer2, final int integer3, final int integer4, final boolean boolean5) {
final Biome[] arr7 = new Biome[integer3 * integer4];
Arrays.fill(arr7, 0, integer3 * integer4, this.biome);
return arr7;
}
@Nullable
@Override
public BlockPos findBiome(final int integer1, final int integer2, final int integer3, final List<Biome> list, final Random random) {
if (list.contains(this.biome)) {
return new BlockPos(integer1 - integer3 + random.nextInt(integer3 * 2 + 1), 0, integer2 - integer3 + random.nextInt(integer3 * 2 + 1));
}
return null;
}
@Override
public boolean canGenerateStructure(final StructureFeature<?> ceu) {
return this.supportedStructures.computeIfAbsent(ceu, this.biome::isValidStart);
}
@Override
public Set<BlockState> getSurfaceBlocks() {
if (this.surfaceBlocks.isEmpty()) {
this.surfaceBlocks.add(this.biome.getSurfaceBuilderConfig().getTopMaterial());
}
return this.surfaceBlocks;
}
@Override
public Set<Biome> getBiomesWithin(final int integer1, final int integer2, final int integer3) {
return Sets.<Biome>newHashSet(this.biome);
}
}