Code/net/minecraft/world/level/levelgen/carver/NetherWorldCarver.java

63 lines
2.0 KiB
Java

package net.minecraft.world.level.levelgen.carver;
import com.google.common.collect.ImmutableSet;
import com.mojang.serialization.Codec;
import java.util.function.Function;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Holder;
import net.minecraft.util.RandomSource;
import net.minecraft.world.level.biome.Biome;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.chunk.CarvingMask;
import net.minecraft.world.level.chunk.ChunkAccess;
import net.minecraft.world.level.levelgen.Aquifer;
import net.minecraft.world.level.material.Fluids;
import org.apache.commons.lang3.mutable.MutableBoolean;
public class NetherWorldCarver extends CaveWorldCarver {
public NetherWorldCarver(Codec<CaveCarverConfiguration> p_64873_) {
super(p_64873_);
this.liquids = ImmutableSet.of(Fluids.LAVA, Fluids.WATER);
}
@Override
protected int getCaveBound() {
return 10;
}
@Override
protected float getThickness(RandomSource p_224907_) {
return (p_224907_.nextFloat() * 2.0F + p_224907_.nextFloat()) * 2.0F;
}
@Override
protected double getYScale() {
return 5.0;
}
protected boolean carveBlock(
CarvingContext p_190731_,
CaveCarverConfiguration p_190732_,
ChunkAccess p_190733_,
Function<BlockPos, Holder<Biome>> p_190734_,
CarvingMask p_190735_,
BlockPos.MutableBlockPos p_190736_,
BlockPos.MutableBlockPos p_190737_,
Aquifer p_190738_,
MutableBoolean p_190739_
) {
if (this.canReplaceBlock(p_190732_, p_190733_.getBlockState(p_190736_))) {
BlockState blockstate;
if (p_190736_.getY() <= p_190731_.getMinGenY() + 31) {
blockstate = LAVA.createLegacyBlock();
} else {
blockstate = CAVE_AIR;
}
p_190733_.setBlockState(p_190736_, blockstate);
return true;
} else {
return false;
}
}
}