Code/net/minecraft/world/level/levelgen/feature/configurations/OreConfiguration.java

62 lines
2.9 KiB
Java
Raw Permalink Normal View History

2025-07-01 06:20:03 +00:00
package net.minecraft.world.level.levelgen.feature.configurations;
import com.google.common.collect.ImmutableList;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import com.mojang.serialization.codecs.RecordCodecBuilder.Instance;
import java.util.List;
import net.minecraft.world.level.block.state.BlockState;
import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest;
public class OreConfiguration implements FeatureConfiguration {
public static final Codec<OreConfiguration> CODEC = RecordCodecBuilder.create(
p_67849_ -> p_67849_.group(
Codec.list(OreConfiguration.TargetBlockState.CODEC).fieldOf("targets").forGetter(p_161027_ -> p_161027_.targetStates),
Codec.intRange(0, 64).fieldOf("size").forGetter(p_161025_ -> p_161025_.size),
Codec.floatRange(0.0F, 1.0F).fieldOf("discard_chance_on_air_exposure").forGetter(p_161020_ -> p_161020_.discardChanceOnAirExposure)
)
.apply(p_67849_, OreConfiguration::new)
);
public final List<OreConfiguration.TargetBlockState> targetStates;
public final int size;
public final float discardChanceOnAirExposure;
public OreConfiguration(List<OreConfiguration.TargetBlockState> p_161016_, int p_161017_, float p_161018_) {
this.size = p_161017_;
this.targetStates = p_161016_;
this.discardChanceOnAirExposure = p_161018_;
}
public OreConfiguration(List<OreConfiguration.TargetBlockState> p_161013_, int p_161014_) {
this(p_161013_, p_161014_, 0.0F);
}
public OreConfiguration(RuleTest p_161008_, BlockState p_161009_, int p_161010_, float p_161011_) {
this(ImmutableList.of(new OreConfiguration.TargetBlockState(p_161008_, p_161009_)), p_161010_, p_161011_);
}
public OreConfiguration(RuleTest p_67843_, BlockState p_67844_, int p_67845_) {
this(ImmutableList.of(new OreConfiguration.TargetBlockState(p_67843_, p_67844_)), p_67845_, 0.0F);
}
public static OreConfiguration.TargetBlockState target(RuleTest p_161022_, BlockState p_161023_) {
return new OreConfiguration.TargetBlockState(p_161022_, p_161023_);
}
public static class TargetBlockState {
public static final Codec<OreConfiguration.TargetBlockState> CODEC = RecordCodecBuilder.create(
p_161039_ -> p_161039_.group(
RuleTest.CODEC.fieldOf("target").forGetter(p_161043_ -> p_161043_.target),
BlockState.CODEC.fieldOf("state").forGetter(p_161041_ -> p_161041_.state)
)
.apply(p_161039_, OreConfiguration.TargetBlockState::new)
);
public final RuleTest target;
public final BlockState state;
TargetBlockState(RuleTest p_161036_, BlockState p_161037_) {
this.target = p_161036_;
this.state = p_161037_;
}
}
}