下面列出了怎么用net.minecraft.world.gen.feature.Feature的API类实例代码及写法,或者点击链接到github查看源代码。
public MoonCheeseForestBiome() {
super((new Settings())
.configureSurfaceBuilder(SurfaceBuilder.DEFAULT, new TernarySurfaceConfig(GalacticraftBlocks.MOON_TURF.getDefaultState(), GalacticraftBlocks.MOON_DIRT.getDefaultState(), GalacticraftBlocks.MOON_ROCK.getDefaultState()))
.precipitation(Precipitation.NONE)
.category(Category.NONE)
.depth(0.03F)
.scale(0.03F)
.temperature(-100F)
.downfall(0.005F)
.effects(new BiomeEffects.Builder()
.waterColor(9937330)
.waterFogColor(11243183)
.fogColor(0)
.build())
.parent(null));
this.flowerFeatures.clear();
this.addFeature(GenerationStep.Feature.TOP_LAYER_MODIFICATION, Feature.TREE.configure(GalacticraftFeatures.CHEESE_TREE_CONFIG));
}
public PumpkinPatchBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.PLAINS).depth(0.125f).scale(0.07f).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
GRASS_COLOR = 0xC9C92A;
FOLIAGE_COLOR = 0xC9C92A;
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
//is not the same as other biome pumpkins, do not use HallowedBiomeFeatures pumpkins
this.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, HallowedBiomeFeatures.configureFeature(HallowedFeatures.COLORED_PUMPKIN, FeatureConfig.DEFAULT, Decorator.COUNT_HEIGHTMAP_DOUBLE, new CountDecoratorConfig(10)));
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
this.addSpawn(EntityCategory.CREATURE, new SpawnEntry(HallowedEntities.PUMPCOWN, 8, 4, 8));
}
public HallowedForestBiome(float depth, float scale) {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.FOREST).depth(depth).scale(scale).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
GRASS_COLOR = 0x6B6B6B;
FOLIAGE_COLOR = 0x6B6B6B;
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
HallowedBiomeFeatures.addHallowedForestTrees(this);
HallowedBiomeFeatures.addWells(this);
HallowedBiomeFeatures.addLairs(this);
}
@Inject(
method = "getEntitySpawnList",
at = @At(value = "INVOKE", ordinal = 1, shift = At.Shift.BEFORE,
target = "Lnet/minecraft/world/gen/feature/StructureFeature;isApproximatelyInsideStructure(Lnet/minecraft/world/IWorld;Lnet/minecraft/util/math/BlockPos;)Z"),
cancellable = true
)
private void onGetEntitySpawnList(EntityCategory category, BlockPos pos, CallbackInfoReturnable<List<Biome.SpawnEntry>> cir)
{
if (CarpetExtraSettings.straySpawningInIgloos)
{
if (Feature.IGLOO.isApproximatelyInsideStructure(this.world, pos))
{
cir.setReturnValue(Feature.IGLOO.getMonsterSpawns());
}
}
if (CarpetExtraSettings.creeperSpawningInJungleTemples)
{
if (Feature.JUNGLE_TEMPLE.isApproximatelyInsideStructure(this.world, pos))
{
cir.setReturnValue(Feature.JUNGLE_TEMPLE.getMonsterSpawns());
}
}
}
public static void registerOilLake() {
for (Biome biome : Biome.BIOMES) {
if (!biome.getCategory().equals(Biomes.NETHER_WASTES.getCategory()) && !biome.getCategory().equals(Biomes.THE_END.getCategory())) {
biome.addFeature(GenerationStep.Feature.UNDERGROUND_DECORATION, new ConfiguredFeature<>((LakeFeature) Feature.LAKE, new SingleStateFeatureConfig(GalacticraftBlocks.CRUDE_OIL.getDefaultState())));
}
}
}
public HauntedMoorBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.PLAINS).depth(3.15f).scale(0.22f).temperature(0.5f).downfall(0.4f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addExtraLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultUplandsGeneration(this);
}
public HauntedUplandsBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.PLAINS).depth(1.75f).scale(0.03f).temperature(0.5f).downfall(0.4f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultUplandsGeneration(this);
HallowedBiomeFeatures.addWells(this);
HallowedBiomeFeatures.addLairs(this);
}
public HallowedRiverBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.RIVER).depth(-0.5f).scale(0.1f).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
}
public LowlandBarrowsBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.PLAINS).depth(0.15f).scale(0.025f).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
HallowedBiomeFeatures.addWells(this);
HallowedBiomeFeatures.addLairs(this);
HallowedBiomeFeatures.addBarrows(this);
}
public HallowedSeaBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.OCEAN).depth(-1.2f).scale(0.1f).temperature(0.5f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
}
public HallowedSwampBiome() {
super(new Settings().surfaceBuilder(MARSH_SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.SWAMP).depth(-0.2f).scale(0.18f).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
GRASS_COLOR = 0x2A2A2A;
FOLIAGE_COLOR = 0x2A2A2A;
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addGloomshrooms(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addHallowedSwampTrees(this);
HallowedBiomeFeatures.addLairs(this);
}
public HallowedShoreBiome() {
super(new Settings().surfaceBuilder(new ConfiguredSurfaceBuilder<TernarySurfaceConfig>(SurfaceBuilder.DEFAULT, TAINTED_GRAVEL_CONFIG)).precipitation(Precipitation.NONE).category(Category.OCEAN).depth(0.02f).scale(0.025f).temperature(0.5f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
}
public HallowedLowlandsBiome() {
super(new Settings().surfaceBuilder(SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.PLAINS).depth(0.125f).scale(0.08f).temperature(0.7f).downfall(0.8f).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
HallowedBiomeFeatures.addGrass(this);
HallowedBiomeFeatures.addLakes(this);
HallowedBiomeFeatures.addColoredPumpkins(this);
HallowedBiomeFeatures.addDefaultHallowedTrees(this);
HallowedBiomeFeatures.addWells(this);
HallowedBiomeFeatures.addLairs(this);
}
public GhastlyDesert() {
super(new Settings().surfaceBuilder(DESERT_SURFACE_BUILDER).precipitation(Precipitation.NONE).category(Category.DESERT).precipitation(Biome.Precipitation.NONE).category(Biome.Category.DESERT).depth(0.125F).scale(0.05F).temperature(2.0F).downfall(0.0F).waterColor(0x3F76E4).waterFogColor(0x050533));
this.addStructureFeature(Feature.MINESHAFT.configure(new MineshaftFeatureConfig(0.004D, MineshaftFeature.Type.NORMAL)));
this.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, HallowedBiomeFeatures.configureFeature(HallowedFeatures.DEADER_BUSH, FeatureConfig.DEFAULT, Decorator.COUNT_HEIGHTMAP_DOUBLE, new CountDecoratorConfig(2)));
this.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, HallowedBiomeFeatures.configureFeature(HallowedFeatures.RESTLESS_CACTUS, FeatureConfig.DEFAULT, Decorator.COUNT_HEIGHTMAP_DOUBLE, new CountDecoratorConfig(10)));
}
@Inject(method = "getEntitySpawnList", at = @At(value = "INVOKE", ordinal = 1, shift = At.Shift.BEFORE,
target = "Lnet/minecraft/world/gen/feature/StructureFeature;isApproximatelyInsideStructure(Lnet/minecraft/world/IWorld;Lnet/minecraft/util/math/BlockPos;)Z"),
cancellable = true)
private void onGetEntitySpawnList(EntityCategory entityCategory_1, BlockPos blockPos_1,
CallbackInfoReturnable<List<Biome.SpawnEntry>> cir)
{
if (CarpetSettings.huskSpawningInTemples)
{
if (Feature.DESERT_PYRAMID.isApproximatelyInsideStructure(this.world, blockPos_1))
{
cir.setReturnValue(Feature.DESERT_PYRAMID.getMonsterSpawns());
}
}
}
@Override
public List<Biome.SpawnEntry> getEntitySpawnList(EntityCategory entityCategory_1, BlockPos blockPos_1)
{
if (CarpetSettings.shulkerSpawningInEndCities && EntityCategory.MONSTER == entityCategory_1)
{
if (Feature.END_CITY.isInsideStructure(this.world, blockPos_1))
{
return Feature.END_CITY.getMonsterSpawns();
}
}
return this.world.getBiome(blockPos_1).getEntitySpawnList(entityCategory_1);
}
public static <F extends FeatureConfig, D extends DecoratorConfig> ConfiguredFeature<?, ?> configureFeature(Feature<F> feature, F featureConfig, Decorator<D> decorator, D decoratorConfig) {
Feature<DecoratedFeatureConfig> feature2 = feature instanceof FlowerFeature ? Feature.DECORATED_FLOWER : Feature.DECORATED;
return new ConfiguredFeature(feature2, new DecoratedFeatureConfig(feature.configure(featureConfig), decorator.configure(decoratorConfig)));
}
public static void addDefaultHallowedTrees(Biome biome) {
//note: the feature config here is completely irrelevant. The feature ignores it. I've tried to make it at least somewhat similar in case someone does something strange with it.
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(HallowedFeatures.SMALL_SKELETON_TREE, new TreeFeatureConfig.Builder(new SimpleStateProvider(Blocks.BONE_BLOCK.getDefaultState()), new SimpleStateProvider(Blocks.AIR.getDefaultState())).build(), Decorator.COUNT_EXTRA_HEIGHTMAP, (biome instanceof HallowedForestBiome) ? new CountExtraChanceDecoratorConfig(2, 0.2F, 2) : new CountExtraChanceDecoratorConfig(0, 0.1F, 2)));
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(HallowedFeatures.LARGE_SKELETON_TREE, new TreeFeatureConfig.Builder(new SimpleStateProvider(Blocks.BONE_BLOCK.getDefaultState()), new SimpleStateProvider(Blocks.AIR.getDefaultState())).build(), Decorator.COUNT_EXTRA_HEIGHTMAP, (biome instanceof HallowedForestBiome) ? new CountExtraChanceDecoratorConfig(0, 0.5F, 1) : new CountExtraChanceDecoratorConfig(0, 0.01F, 1)));
//Still needs work
}
public static void addHallowedForestTrees(Biome biome) {
//note: the feature config here is completely irrelevant. The feature ignores it. I've tried to make it at least somewhat similar in case someone does something strange with it.
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(HallowedFeatures.LARGE_DEADWOOD_TREE, new MegaTreeFeatureConfig.Builder(new SimpleStateProvider(HallowedBlocks.DEADWOOD_LOG.getDefaultState()), new SimpleStateProvider(HallowedBlocks.DEADWOOD_LEAVES.getDefaultState())).baseHeight(6).build(), Decorator.COUNT_EXTRA_HEIGHTMAP, new CountExtraChanceDecoratorConfig(1, 0.05F, 1)));
}
public static void addHallowedSwampTrees(Biome biome) {
//note: the feature config here is completely irrelevant. The feature ignores it. I've tried to make it at least somewhat similar in case someone does something strange with it.
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(HallowedFeatures.SMALL_DEADWOOD_TREE, new BranchedTreeFeatureConfig.Builder(new SimpleStateProvider(HallowedBlocks.DEADWOOD_LOG.getDefaultState()), new SimpleStateProvider(HallowedBlocks.DEADWOOD_LEAVES.getDefaultState()), new BlobFoliagePlacer(2, 0)).baseHeight(4).heightRandA(2).foliageHeight(3).noVines().build(), Decorator.COUNT_EXTRA_HEIGHTMAP, new CountExtraChanceDecoratorConfig(4, 0.1F, 1)));
// Still needs work as well
}
public static void addDisks(Biome biome) {
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(Feature.DISK, new DiskFeatureConfig(HallowedBlocks.TAINTED_SAND.getDefaultState(), 7, 2, Lists.newArrayList(HallowedBlocks.DECEASED_DIRT.getDefaultState(), HallowedBlocks.DECEASED_GRASS_BLOCK.getDefaultState())), Decorator.COUNT_TOP_SOLID, new CountDecoratorConfig(3)));
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(Feature.DISK, new DiskFeatureConfig(HallowedBlocks.TAINTED_GRAVEL.getDefaultState(), 6, 2, Lists.newArrayList(HallowedBlocks.DECEASED_DIRT.getDefaultState(), HallowedBlocks.DECEASED_GRASS_BLOCK.getDefaultState())), Decorator.COUNT_TOP_SOLID, new CountDecoratorConfig(1)));
}
public static void addDefaultUplandsGeneration(Biome biome) {
biome.addFeature(GenerationStep.Feature.SURFACE_STRUCTURES, configureFeature(HallowedFeatures.STONE_CIRCLE, FeatureConfig.DEFAULT, Decorator.CHANCE_HEIGHTMAP, new ChanceDecoratorConfig(160)));
}
public static void addLakes(Biome biome) {
biome.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, configureFeature(Feature.LAKE, new SingleStateFeatureConfig(HallowedBlocks.WITCH_WATER_BLOCK.getDefaultState()), Decorator.WATER_LAKE, new ChanceDecoratorConfig(4)));
biome.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, configureFeature(Feature.LAKE, new SingleStateFeatureConfig(HallowedBlocks.BLOOD_BLOCK.getDefaultState()), Decorator.WATER_LAKE, new ChanceDecoratorConfig(40)));
}
public static void addExtraLakes(Biome biome) {
biome.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, configureFeature(Feature.LAKE, new SingleStateFeatureConfig(HallowedBlocks.WITCH_WATER_BLOCK.getDefaultState()), Decorator.WATER_LAKE, new ChanceDecoratorConfig(2)));
biome.addFeature(GenerationStep.Feature.LOCAL_MODIFICATIONS, configureFeature(Feature.LAKE, new SingleStateFeatureConfig(HallowedBlocks.BLOOD_BLOCK.getDefaultState()), Decorator.WATER_LAKE, new ChanceDecoratorConfig(20)));
}
public static void addWells(Biome biome) {
biome.addFeature(GenerationStep.Feature.SURFACE_STRUCTURES, configureFeature(HallowedFeatures.WITCH_WELL, FeatureConfig.DEFAULT, Decorator.CHANCE_HEIGHTMAP, new ChanceDecoratorConfig(300)));
}
public static void addLairs(Biome biome) {
biome.addFeature(GenerationStep.Feature.SURFACE_STRUCTURES, configureFeature(HallowedFeatures.SPIDER_LAIR, FeatureConfig.DEFAULT, Decorator.CHANCE_HEIGHTMAP, new ChanceDecoratorConfig(230)));
}
public static void addBarrows(Biome biome) {
biome.addFeature(GenerationStep.Feature.TOP_LAYER_MODIFICATION, configureFeature(HallowedFeatures.BARROW, FeatureConfig.DEFAULT, Decorator.COUNT_EXTRA_HEIGHTMAP, new CountExtraChanceDecoratorConfig(0, 0.35f, 1)));
}
public static void addMineables(Biome biome) {
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(HallowedFeatures.ORE, new HallowedOreFeatureConfig(HallowedBlocks.DECEASED_DIRT.getDefaultState(), 33), Decorator.COUNT_RANGE, new RangeDecoratorConfig(10, 0, 0, 256)));
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(HallowedFeatures.ORE, new HallowedOreFeatureConfig(HallowedBlocks.TAINTED_GRAVEL.getDefaultState(), 33), Decorator.COUNT_RANGE, new RangeDecoratorConfig(8, 0, 0, 256)));
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(HallowedFeatures.ORE, new HallowedOreFeatureConfig(HallowedBlocks.INFESTED_TAINTED_STONE.getDefaultState(), 33), Decorator.COUNT_RANGE, new RangeDecoratorConfig(5, 0, 0, 256)));
}
public static void addOres(Biome biome) {
biome.addFeature(GenerationStep.Feature.UNDERGROUND_ORES, configureFeature(HallowedFeatures.ORE, new HallowedOreFeatureConfig(HallowedBlocks.HALLOWED_ORE.getDefaultState(), 5), Decorator.COUNT_RANGE, new RangeDecoratorConfig(1, 0, 0, 16)));
}
public static void addGrass(Biome biome) {
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(Feature.RANDOM_PATCH, new RandomPatchFeatureConfig.Builder(new SimpleStateProvider(HallowedBlocks.EERIE_GRASS.getDefaultState()), new SimpleBlockPlacer()).tries(32).build(), Decorator.COUNT_HEIGHTMAP_DOUBLE, new CountDecoratorConfig(1)));
biome.addFeature(GenerationStep.Feature.VEGETAL_DECORATION, configureFeature(Feature.RANDOM_PATCH, new RandomPatchFeatureConfig.Builder(new SimpleStateProvider(HallowedBlocks.TALL_EERIE_GRASS.getDefaultState()), new SimpleBlockPlacer()).tries(64).cannotProject().build(), Decorator.COUNT_HEIGHTMAP_DOUBLE, new CountDecoratorConfig(1)));
}