BCLFeature enhancements and javadocs
This commit is contained in:
parent
2708eb989a
commit
c734f83c13
1 changed files with 99 additions and 52 deletions
|
@ -4,7 +4,7 @@ import net.minecraft.core.Registry;
|
||||||
import net.minecraft.data.BuiltinRegistries;
|
import net.minecraft.data.BuiltinRegistries;
|
||||||
import net.minecraft.resources.ResourceLocation;
|
import net.minecraft.resources.ResourceLocation;
|
||||||
import net.minecraft.world.level.block.Block;
|
import net.minecraft.world.level.block.Block;
|
||||||
import net.minecraft.world.level.levelgen.GenerationStep;
|
import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
|
||||||
import net.minecraft.world.level.levelgen.VerticalAnchor;
|
import net.minecraft.world.level.levelgen.VerticalAnchor;
|
||||||
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
|
||||||
import net.minecraft.world.level.levelgen.feature.Feature;
|
import net.minecraft.world.level.levelgen.feature.Feature;
|
||||||
|
@ -15,58 +15,80 @@ import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguratio
|
||||||
import net.minecraft.world.level.levelgen.placement.ChanceDecoratorConfiguration;
|
import net.minecraft.world.level.levelgen.placement.ChanceDecoratorConfiguration;
|
||||||
import net.minecraft.world.level.levelgen.placement.FeatureDecorator;
|
import net.minecraft.world.level.levelgen.placement.FeatureDecorator;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest;
|
import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest;
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest;
|
|
||||||
import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest;
|
|
||||||
import ru.bclib.api.TagAPI;
|
|
||||||
|
|
||||||
public class BCLFeature {
|
public class BCLFeature {
|
||||||
private static final RuleTest ANY_TERRAIN = new TagMatchTest(TagAPI.BLOCK_GEN_TERRAIN);
|
|
||||||
private ConfiguredFeature<?, ?> featureConfigured;
|
private ConfiguredFeature<?, ?> featureConfigured;
|
||||||
private GenerationStep.Decoration featureStep;
|
private Decoration featureStep;
|
||||||
private Feature<?> feature;
|
private Feature<?> feature;
|
||||||
|
|
||||||
public BCLFeature(Feature<?> feature, ConfiguredFeature<?, ?> configuredFeature, GenerationStep.Decoration featureStep) {
|
public BCLFeature(Feature<?> feature, ConfiguredFeature<?, ?> configuredFeature, Decoration featureStep) {
|
||||||
this.featureConfigured = configuredFeature;
|
this.featureConfigured = configuredFeature;
|
||||||
this.featureStep = featureStep;
|
this.featureStep = featureStep;
|
||||||
this.feature = feature;
|
this.feature = feature;
|
||||||
}
|
}
|
||||||
|
|
||||||
public BCLFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, GenerationStep.Decoration featureStep, ConfiguredFeature<?, ?> configuredFeature) {
|
public BCLFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, Decoration featureStep, ConfiguredFeature<?, ?> configuredFeature) {
|
||||||
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, configuredFeature);
|
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, configuredFeature);
|
||||||
this.feature = Registry.register(Registry.FEATURE, id, feature);
|
this.feature = Registry.register(Registry.FEATURE, id, feature);
|
||||||
this.featureStep = featureStep;
|
this.featureStep = featureStep;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get raw feature.
|
||||||
|
* @return {@link Feature}.
|
||||||
|
*/
|
||||||
|
public Feature<?> getFeature() {
|
||||||
|
return feature;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get configured feature.
|
||||||
|
* @return {@link ConfiguredFeature}.
|
||||||
|
*/
|
||||||
|
public ConfiguredFeature<?, ?> getFeatureConfigured() {
|
||||||
|
return featureConfigured;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get feature decoration step.
|
||||||
|
* @return {@link Decoration}.
|
||||||
|
*/
|
||||||
|
public Decoration getFeatureStep() {
|
||||||
|
return featureStep;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will create a basic plant feature.
|
||||||
|
* @param id {@link ResourceLocation} feature ID.
|
||||||
|
* @param feature {@link Feature} with {@link NoneFeatureConfiguration} config.
|
||||||
|
* @param density iterations per chunk.
|
||||||
|
* @return new BCLFeature instance.
|
||||||
|
*/
|
||||||
public static BCLFeature makeVegetationFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int density) {
|
public static BCLFeature makeVegetationFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int density) {
|
||||||
ConfiguredFeature<?, ?> configured = feature
|
ConfiguredFeature<?, ?> configured = feature
|
||||||
.configured(FeatureConfiguration.NONE)
|
.configured(FeatureConfiguration.NONE)
|
||||||
.decorated(BCLDecorators.HEIGHTMAP_SQUARE)
|
.decorated(BCLDecorators.HEIGHTMAP_SQUARE)
|
||||||
.countRandom(density);
|
.countRandom(density);
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.VEGETAL_DECORATION, configured);
|
return new BCLFeature(id, feature, Decoration.VEGETAL_DECORATION, configured);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BCLFeature makeRawGenFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
/**
|
||||||
ConfiguredFeature<?, ?> configured = feature
|
* Will create a basic ore feature.
|
||||||
.configured(FeatureConfiguration.NONE)
|
* @param id {@link ResourceLocation} feature ID.
|
||||||
.decorated(FeatureDecorator.CHANCE.configured(new ChanceDecoratorConfiguration(chance)));
|
* @param blockOre {@link Decoration} feature step.
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.RAW_GENERATION, configured);
|
* @param hostBlock {@link Block} to generate feature in.
|
||||||
}
|
* @param veins iterations per chunk.
|
||||||
|
* @param veinSize size of ore vein.
|
||||||
@Deprecated
|
* @param minY minimum height.
|
||||||
public static BCLFeature makeLakeFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
* @param maxY maximum height.
|
||||||
ConfiguredFeature<?, ?> configured = feature
|
* @return new BCLFeature instance.
|
||||||
.configured(FeatureConfiguration.NONE)
|
*/
|
||||||
.decorated(FeatureDecorator.LAVA_LAKE.configured(new ChanceDecoratorConfiguration(chance)));
|
public static BCLFeature makeOreFeature(ResourceLocation id, Block blockOre, Block hostBlock, int veins, int veinSize, int minY, int maxY) {
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.LAKES, configured);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static BCLFeature makeOreFeature(ResourceLocation id, Block blockOre, Block hostBlock, int veins, int veinSize, int offset, int minY, int maxY) {
|
|
||||||
OreConfiguration featureConfig = new OreConfiguration(
|
OreConfiguration featureConfig = new OreConfiguration(
|
||||||
new BlockMatchTest(hostBlock),
|
new BlockMatchTest(hostBlock),
|
||||||
blockOre.defaultBlockState(),
|
blockOre.defaultBlockState(),
|
||||||
veinSize
|
veinSize
|
||||||
);
|
);
|
||||||
//OreConfiguration config = new OreConfiguration(ANY_TERRAIN, blockOre.defaultBlockState(), 33);
|
|
||||||
ConfiguredFeature<?, ?> oreFeature = Feature.ORE
|
ConfiguredFeature<?, ?> oreFeature = Feature.ORE
|
||||||
.configured(featureConfig)
|
.configured(featureConfig)
|
||||||
.rangeUniform(
|
.rangeUniform(
|
||||||
|
@ -78,56 +100,81 @@ public class BCLFeature {
|
||||||
return new BCLFeature(
|
return new BCLFeature(
|
||||||
Feature.ORE,
|
Feature.ORE,
|
||||||
Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, oreFeature),
|
Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, oreFeature),
|
||||||
GenerationStep.Decoration.UNDERGROUND_ORES
|
Decoration.UNDERGROUND_ORES
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Will create feature which will be generated once in each chunk.
|
* Will create feature which will be generated once in each chunk.
|
||||||
* @param id {@link ResourceLocation} feature ID.
|
* @param id {@link ResourceLocation} feature ID.
|
||||||
* @param step {@link GenerationStep.Decoration} feature step.
|
* @param step {@link Decoration} feature step.
|
||||||
* @param feature {@link Feature} with {@link NoneFeatureConfiguration} config.
|
* @param feature {@link Feature} with {@link NoneFeatureConfiguration} config.
|
||||||
* @return new BCLFeature instance.
|
* @return new BCLFeature instance.
|
||||||
*/
|
*/
|
||||||
public static BCLFeature makeChunkFeature(ResourceLocation id, GenerationStep.Decoration step, Feature<NoneFeatureConfiguration> feature) {
|
public static BCLFeature makeChunkFeature(ResourceLocation id, Decoration step, Feature<NoneFeatureConfiguration> feature) {
|
||||||
ConfiguredFeature<?, ?> configured = feature
|
ConfiguredFeature<?, ?> configured = feature
|
||||||
.configured(FeatureConfiguration.NONE)
|
.configured(FeatureConfiguration.NONE)
|
||||||
.decorated(FeatureDecorator.COUNT.configured(new CountConfiguration(1)));
|
.decorated(FeatureDecorator.COUNT.configured(new CountConfiguration(1)));
|
||||||
return new BCLFeature(id, feature, step, configured);
|
return new BCLFeature(id, feature, step, configured);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated(forRemoval = true)
|
/**
|
||||||
public static BCLFeature makeChunkFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature) {
|
* Will create feature with chanced decoration, chance for feature to generate per chunk is 1 / chance.
|
||||||
return makeChunkFeature(id, GenerationStep.Decoration.LOCAL_MODIFICATIONS, feature);
|
* @param id {@link ResourceLocation} feature ID.
|
||||||
}
|
* @param step {@link Decoration} feature step.
|
||||||
|
* @param feature {@link Feature} with {@link NoneFeatureConfiguration} config.
|
||||||
public static BCLFeature makeChansedFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
* @param chance chance for feature to be generated in.
|
||||||
|
* @return new BCLFeature instance.
|
||||||
|
*/
|
||||||
|
public static BCLFeature makeChancedFeature(ResourceLocation id, Decoration step, Feature<NoneFeatureConfiguration> feature, int chance) {
|
||||||
ConfiguredFeature<?, ?> configured = feature
|
ConfiguredFeature<?, ?> configured = feature
|
||||||
.configured(FeatureConfiguration.NONE)
|
.configured(FeatureConfiguration.NONE)
|
||||||
.decorated(FeatureDecorator.CHANCE.configured(new ChanceDecoratorConfiguration(chance)));
|
.decorated(FeatureDecorator.CHANCE.configured(new ChanceDecoratorConfiguration(chance)));
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.SURFACE_STRUCTURES, configured);
|
return new BCLFeature(id, feature, step, configured);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Will create feature with specified generation iterations per chunk.
|
||||||
|
* @param id {@link ResourceLocation} feature ID.
|
||||||
|
* @param step {@link Decoration} feature step.
|
||||||
|
* @param feature {@link Feature} with {@link NoneFeatureConfiguration} config.
|
||||||
|
* @param count iterations steps.
|
||||||
|
* @return new BCLFeature instance.
|
||||||
|
*/
|
||||||
|
public static BCLFeature makeCountFeature(ResourceLocation id, Decoration step, Feature<NoneFeatureConfiguration> feature, int count) {
|
||||||
|
ConfiguredFeature<?, ?> configured = feature
|
||||||
|
.configured(FeatureConfiguration.NONE)
|
||||||
|
.decorated(FeatureDecorator.COUNT.configured(new CountConfiguration(count)));
|
||||||
|
return new BCLFeature(id, feature, step, configured);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
|
public static BCLFeature makeOreFeature(ResourceLocation id, Block blockOre, Block hostBlock, int veins, int veinSize, int offset, int minY, int maxY) {
|
||||||
|
return makeOreFeature(id, blockOre, hostBlock, veins, veinSize, minY, maxY);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
|
public static BCLFeature makeRawGenFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
||||||
|
return makeChancedFeature(id, Decoration.RAW_GENERATION, feature, chance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
|
public static BCLFeature makeChunkFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature) {
|
||||||
|
return makeChunkFeature(id, Decoration.LOCAL_MODIFICATIONS, feature);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
|
public static BCLFeature makeChansedFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
||||||
|
return makeChancedFeature(id, Decoration.SURFACE_STRUCTURES, feature, chance);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Deprecated(forRemoval = true)
|
||||||
public static BCLFeature makeCountRawFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
public static BCLFeature makeCountRawFeature(ResourceLocation id, Feature<NoneFeatureConfiguration> feature, int chance) {
|
||||||
ConfiguredFeature<?, ?> configured = feature.configured(FeatureConfiguration.NONE)
|
return makeCountFeature(id, Decoration.RAW_GENERATION, feature, chance);
|
||||||
.decorated(FeatureDecorator.COUNT.configured(new CountConfiguration(chance)));
|
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.RAW_GENERATION, configured);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static BCLFeature makeFeatureConfigured(ResourceLocation id, Feature<NoneFeatureConfiguration> feature) {
|
public static BCLFeature makeFeatureConfigured(ResourceLocation id, Feature<NoneFeatureConfiguration> feature) {
|
||||||
ConfiguredFeature<?, ?> configured = feature.configured(FeatureConfiguration.NONE);
|
ConfiguredFeature<?, ?> configured = feature.configured(FeatureConfiguration.NONE);
|
||||||
return new BCLFeature(id, feature, GenerationStep.Decoration.RAW_GENERATION, configured);
|
return new BCLFeature(id, feature, Decoration.RAW_GENERATION, configured);
|
||||||
}
|
|
||||||
|
|
||||||
public Feature<?> getFeature() {
|
|
||||||
return feature;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ConfiguredFeature<?, ?> getFeatureConfigured() {
|
|
||||||
return featureConfigured;
|
|
||||||
}
|
|
||||||
|
|
||||||
public GenerationStep.Decoration getFeatureStep() {
|
|
||||||
return featureStep;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue