minecraft-src/net/minecraft/world/level/levelgen/carver/CaveCarverConfiguration.java
2025-07-04 01:41:11 +03:00

70 lines
2.6 KiB
Java

package net.minecraft.world.level.levelgen.carver;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.core.HolderSet;
import net.minecraft.util.valueproviders.FloatProvider;
import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.levelgen.VerticalAnchor;
import net.minecraft.world.level.levelgen.heightproviders.HeightProvider;
public class CaveCarverConfiguration extends CarverConfiguration {
public static final Codec<CaveCarverConfiguration> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
CarverConfiguration.CODEC.forGetter(caveCarverConfiguration -> caveCarverConfiguration),
FloatProvider.CODEC.fieldOf("horizontal_radius_multiplier").forGetter(caveCarverConfiguration -> caveCarverConfiguration.horizontalRadiusMultiplier),
FloatProvider.CODEC.fieldOf("vertical_radius_multiplier").forGetter(caveCarverConfiguration -> caveCarverConfiguration.verticalRadiusMultiplier),
FloatProvider.codec(-1.0F, 1.0F).fieldOf("floor_level").forGetter(caveCarverConfiguration -> caveCarverConfiguration.floorLevel)
)
.apply(instance, CaveCarverConfiguration::new)
);
public final FloatProvider horizontalRadiusMultiplier;
public final FloatProvider verticalRadiusMultiplier;
final FloatProvider floorLevel;
public CaveCarverConfiguration(
float probability,
HeightProvider y,
FloatProvider yScale,
VerticalAnchor lavaLevel,
CarverDebugSettings debugSettings,
HolderSet<Block> replaceable,
FloatProvider horizontalRadiusMultiplier,
FloatProvider verticalRadiusMultiplier,
FloatProvider floorLevel
) {
super(probability, y, yScale, lavaLevel, debugSettings, replaceable);
this.horizontalRadiusMultiplier = horizontalRadiusMultiplier;
this.verticalRadiusMultiplier = verticalRadiusMultiplier;
this.floorLevel = floorLevel;
}
public CaveCarverConfiguration(
float probability,
HeightProvider y,
FloatProvider yScale,
VerticalAnchor lavaLevel,
HolderSet<Block> replaceable,
FloatProvider horizontalRadiusMultiplier,
FloatProvider verticalRadiusMultiplier,
FloatProvider floorLevel
) {
this(probability, y, yScale, lavaLevel, CarverDebugSettings.DEFAULT, replaceable, horizontalRadiusMultiplier, verticalRadiusMultiplier, floorLevel);
}
public CaveCarverConfiguration(
CarverConfiguration config, FloatProvider horizontalRadiusMultiplier, FloatProvider verticalRadiusMultiplier, FloatProvider floorLevel
) {
this(
config.probability,
config.y,
config.yScale,
config.lavaLevel,
config.debugSettings,
config.replaceable,
horizontalRadiusMultiplier,
verticalRadiusMultiplier,
floorLevel
);
}
}