Structures

This commit is contained in:
paulevsGitch 2020-09-23 15:42:30 +03:00
parent 2fdad6aee8
commit 35d8c14d20
9 changed files with 134 additions and 48 deletions

View file

@ -26,6 +26,7 @@ import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import net.minecraft.world.gen.surfacebuilder.ConfiguredSurfaceBuilders;
import ru.betterend.BetterEnd;
import ru.betterend.util.MHelper;
import ru.betterend.world.features.EndFeature;
public class BiomeDefinition {
private final List<ConfiguredStructureFeature<?, ?>> structures = Lists.newArrayList();
@ -43,41 +44,12 @@ public class BiomeDefinition {
private int fogColor = 3344392;
private float fogDensity = 1F;
private boolean stalactites = true;
private boolean bnStructures = true;
private final Identifier id;
public BiomeDefinition(String name) {
this.id = new Identifier(BetterEnd.MOD_ID, name);
}
public BiomeDefinition setStalactites(boolean value) {
stalactites = value;
return this;
}
public BiomeDefinition setBNStructures(boolean value) {
bnStructures = value;
return this;
}
public BiomeDefinition setDefaultOres(boolean value) {
return this;
}
public BiomeDefinition setDefaultStructureFeatures(boolean value) {
return this;
}
public BiomeDefinition setDefaultFeatures(boolean value) {
return this;
}
public BiomeDefinition setDefaultMobs(boolean value) {
return this;
}
public BiomeDefinition setParticleConfig(BiomeParticleConfig config) {
this.particleConfig = config;
return this;
@ -97,10 +69,17 @@ public class BiomeDefinition {
}
public BiomeDefinition addStructureFeature(ConfiguredStructureFeature<?, ?> feature) {
System.out.println("Structure " + feature);
structures.add(feature);
return this;
}
public BiomeDefinition addFeature(EndFeature feature) {
FeatureInfo info = new FeatureInfo();
info.featureStep = feature.getFeatureStep();
info.feature = feature.getFeatureConfigured();
features.add(info);
return this;
}
public BiomeDefinition addFeature(Feature featureStep, ConfiguredFeature<?, ?> feature) {
FeatureInfo info = new FeatureInfo();
@ -208,12 +187,4 @@ public class BiomeDefinition {
public float getFodDensity() {
return fogDensity;
}
public boolean hasStalactites() {
return stalactites;
}
public boolean hasBNStructures() {
return bnStructures;
}
}

View file

@ -0,0 +1,12 @@
package ru.betterend.world.biome;
import ru.betterend.registry.FeatureRegistry;
public class BiomeFoggyMushroomland extends EndBiome {
public BiomeFoggyMushroomland() {
super(new BiomeDefinition("foggy_mushroomland")
.setFogColor(41, 122, 173)
.setFogDensity(5)
.addFeature(FeatureRegistry.STONE_SPIRAL));
}
}

View file

@ -0,0 +1,46 @@
package ru.betterend.world.features;
import net.minecraft.util.Identifier;
import net.minecraft.util.registry.BuiltinRegistries;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.gen.GenerationStep;
import net.minecraft.world.gen.decorator.ChanceDecoratorConfig;
import net.minecraft.world.gen.decorator.ConfiguredDecorator;
import net.minecraft.world.gen.decorator.Decorator;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.Feature;
import net.minecraft.world.gen.feature.FeatureConfig;
import ru.betterend.BetterEnd;
public class EndFeature {
private final Feature<DefaultFeatureConfig> feature;
private final ConfiguredFeature<?, ?> featureConfigured;
private final GenerationStep.Feature featureStep;
public EndFeature(String name, Feature<DefaultFeatureConfig> feature, GenerationStep.Feature featureStep, ConfiguredDecorator<?> configuredDecorator) {
Identifier id = new Identifier(BetterEnd.MOD_ID, name);
this.featureStep = featureStep;
this.feature = Registry.register(Registry.FEATURE, id, feature);
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(configuredDecorator));
}
public EndFeature(String name, Feature<DefaultFeatureConfig> feature) {
Identifier id = new Identifier(BetterEnd.MOD_ID, name);
this.featureStep = GenerationStep.Feature.VEGETAL_DECORATION;
this.feature = Registry.register(Registry.FEATURE, id, feature);
this.featureConfigured = Registry.register(BuiltinRegistries.CONFIGURED_FEATURE, id, feature.configure(FeatureConfig.DEFAULT).decorate(Decorator.CHANCE.configure(new ChanceDecoratorConfig(100))));
}
public Feature<DefaultFeatureConfig> getFeature() {
return feature;
}
public ConfiguredFeature<?, ?> getFeatureConfigured() {
return featureConfigured;
}
public GenerationStep.Feature getFeatureStep() {
return featureStep;
}
}

View file

@ -0,0 +1,33 @@
package ru.betterend.world.features;
import java.util.Random;
import net.minecraft.block.Blocks;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
import net.minecraft.world.Heightmap.Type;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.gen.chunk.ChunkGenerator;
import net.minecraft.world.gen.feature.DefaultFeatureConfig;
import net.minecraft.world.gen.feature.Feature;
public class StoneSpiralFeature extends Feature<DefaultFeatureConfig> {
public StoneSpiralFeature() {
super(DefaultFeatureConfig.CODEC);
}
@Override
public boolean generate(StructureWorldAccess world, ChunkGenerator generator, Random random, BlockPos pos, DefaultFeatureConfig config) {
BlockPos topPos = world.getTopPosition(Type.WORLD_SURFACE, pos);
Direction offset = Direction.NORTH;
System.out.println(topPos);
for (int y = 1; y <= 15; y++) {
offset = offset.rotateYClockwise();
world.setBlockState(topPos.up(y).offset(offset), Blocks.STONE.getDefaultState(), 3);
}
return true;
}
}

View file

@ -57,7 +57,7 @@ public class BetterEndBiomeSource extends BiomeSource {
float height = TheEndBiomeSource.getNoiseAt(noise, (int) i * 2 + 1, (int) j * 2 + 1);
EndBiome netherBiome = height < 20.0F ? mapVoid.getBiome(biomeX << 2, biomeZ << 2) : mapLand.getBiome(biomeX << 2, biomeZ << 2);
EndBiome netherBiome = height < -20.0F ? mapVoid.getBiome(biomeX << 2, biomeZ << 2) : mapLand.getBiome(biomeX << 2, biomeZ << 2);
if (biomeX == 0 && biomeZ == 0) {
mapLand.clearCache();
mapVoid.clearCache();