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

74 lines
4 KiB
Java

package net.minecraft.world.level.levelgen.feature.configurations;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.util.valueproviders.FloatProvider;
import net.minecraft.util.valueproviders.IntProvider;
public class DripstoneClusterConfiguration implements FeatureConfiguration {
public static final Codec<DripstoneClusterConfiguration> CODEC = RecordCodecBuilder.create(
instance -> instance.group(
Codec.intRange(1, 512)
.fieldOf("floor_to_ceiling_search_range")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.floorToCeilingSearchRange),
IntProvider.codec(1, 128).fieldOf("height").forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.height),
IntProvider.codec(1, 128).fieldOf("radius").forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.radius),
Codec.intRange(0, 64)
.fieldOf("max_stalagmite_stalactite_height_diff")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.maxStalagmiteStalactiteHeightDiff),
Codec.intRange(1, 64).fieldOf("height_deviation").forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.heightDeviation),
IntProvider.codec(0, 128)
.fieldOf("dripstone_block_layer_thickness")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.dripstoneBlockLayerThickness),
FloatProvider.codec(0.0F, 2.0F).fieldOf("density").forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.density),
FloatProvider.codec(0.0F, 2.0F).fieldOf("wetness").forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.wetness),
Codec.floatRange(0.0F, 1.0F)
.fieldOf("chance_of_dripstone_column_at_max_distance_from_center")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.chanceOfDripstoneColumnAtMaxDistanceFromCenter),
Codec.intRange(1, 64)
.fieldOf("max_distance_from_edge_affecting_chance_of_dripstone_column")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.maxDistanceFromEdgeAffectingChanceOfDripstoneColumn),
Codec.intRange(1, 64)
.fieldOf("max_distance_from_center_affecting_height_bias")
.forGetter(dripstoneClusterConfiguration -> dripstoneClusterConfiguration.maxDistanceFromCenterAffectingHeightBias)
)
.apply(instance, DripstoneClusterConfiguration::new)
);
public final int floorToCeilingSearchRange;
public final IntProvider height;
public final IntProvider radius;
public final int maxStalagmiteStalactiteHeightDiff;
public final int heightDeviation;
public final IntProvider dripstoneBlockLayerThickness;
public final FloatProvider density;
public final FloatProvider wetness;
public final float chanceOfDripstoneColumnAtMaxDistanceFromCenter;
public final int maxDistanceFromEdgeAffectingChanceOfDripstoneColumn;
public final int maxDistanceFromCenterAffectingHeightBias;
public DripstoneClusterConfiguration(
int floorToCeilingSearchRange,
IntProvider height,
IntProvider radius,
int maxStalagmiteStalactiteHeightDiff,
int heightDeviation,
IntProvider dripstoneBlockLayerThickness,
FloatProvider density,
FloatProvider wetness,
float chanceOfDripstoneColumnAtMaxDistanceFromCenter,
int maxDistanceFromEdgeAffectingChanceOfDripstoneColumn,
int maxDistanceFromCenterAffectingHeightBias
) {
this.floorToCeilingSearchRange = floorToCeilingSearchRange;
this.height = height;
this.radius = radius;
this.maxStalagmiteStalactiteHeightDiff = maxStalagmiteStalactiteHeightDiff;
this.heightDeviation = heightDeviation;
this.dripstoneBlockLayerThickness = dripstoneBlockLayerThickness;
this.density = density;
this.wetness = wetness;
this.chanceOfDripstoneColumnAtMaxDistanceFromCenter = chanceOfDripstoneColumnAtMaxDistanceFromCenter;
this.maxDistanceFromEdgeAffectingChanceOfDripstoneColumn = maxDistanceFromEdgeAffectingChanceOfDripstoneColumn;
this.maxDistanceFromCenterAffectingHeightBias = maxDistanceFromCenterAffectingHeightBias;
}
}