New feature system for vanilla and datapack biomes

This commit is contained in:
paulevsGitch 2020-10-19 00:11:51 +03:00
parent 6b846b5bb7
commit a06e3287d4
10 changed files with 127 additions and 59 deletions

View file

@ -5,5 +5,5 @@ import ru.betterend.world.structures.EndStructureFeature;
import ru.betterend.world.structures.features.StructureMountain;
public class DefaultBiomeFeatureRegistry {
public static final EndStructureFeature MOUNTAINS = new EndStructureFeature("mountains", new StructureMountain(), Feature.RAW_GENERATION, 3, 2);
//public static final EndStructureFeature MOUNTAINS = new EndStructureFeature("mountains", new StructureMountain(), Feature.RAW_GENERATION, 3, 2);
}

View file

@ -5,7 +5,6 @@ import java.util.function.Supplier;
import com.google.common.collect.Lists;
import net.minecraft.world.gen.GenerationStep.Feature;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import ru.betterend.world.features.BlueVineFeature;
import ru.betterend.world.features.DoublePlantFeature;
@ -18,8 +17,6 @@ import ru.betterend.world.features.PythadendronTreeFeature;
import ru.betterend.world.features.SinglePlantFeature;
import ru.betterend.world.features.UnderwaterPlantFeature;
import ru.betterend.world.features.VineFeature;
import ru.betterend.world.structures.EndStructureFeature;
import ru.betterend.world.structures.features.StructureMegaLake;
public class FeatureRegistry {
private final static List<EndFeature> GLOBAL_FEATURES = Lists.newArrayList();
@ -51,9 +48,6 @@ public class FeatureRegistry {
public static final EndFeature VIOLECITE_LAYER = EndFeature.makeLayerFeature("violecite_layer", BlockRegistry.VIOLECITE, 15, 4, 96, 8);
public static final EndFeature FLAVOLITE_LAYER = EndFeature.makeLayerFeature("flavolite_layer", BlockRegistry.FLAVOLITE, 12, 4, 96, 6);
// Structures //
public static final EndStructureFeature MEGALAKE = new EndStructureFeature("megalake", new StructureMegaLake(), Feature.RAW_GENERATION, 4, 1);
public static void registerGlobals(List<List<Supplier<ConfiguredFeature<?, ?>>>> features) {
GLOBAL_FEATURES.forEach(feature -> {
int index = feature.getFeatureStep().ordinal();

View file

@ -1,11 +1,22 @@
package ru.betterend.registry;
import java.util.Collection;
import java.util.List;
import java.util.function.Supplier;
import com.google.common.collect.Lists;
import net.minecraft.structure.StructurePieceType;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.gen.GenerationStep.Feature;
import net.minecraft.world.gen.feature.ConfiguredFeature;
import net.minecraft.world.gen.feature.ConfiguredStructureFeature;
import ru.betterend.BetterEnd;
import ru.betterend.world.structures.EndStructureFeature;
import ru.betterend.world.structures.features.StructureGiantMossyGlowshroom;
import ru.betterend.world.structures.features.StructureMegaLake;
import ru.betterend.world.structures.features.StructureMountain;
import ru.betterend.world.structures.piece.CavePiece;
import ru.betterend.world.structures.piece.LakePiece;
import ru.betterend.world.structures.piece.MountainPiece;
@ -18,10 +29,22 @@ public class StructureRegistry {
public static final StructurePieceType LAKE_PIECE = register("lake_piece", LakePiece::new);
public static final EndStructureFeature GIANT_MOSSY_GLOWSHROOM = new EndStructureFeature("giant_mossy_glowshroom", new StructureGiantMossyGlowshroom(), Feature.SURFACE_STRUCTURES, 16, 8);
public static final EndStructureFeature MEGALAKE = new EndStructureFeature("megalake", new StructureMegaLake(), Feature.RAW_GENERATION, 4, 1);
public static final EndStructureFeature MOUNTAINS = new EndStructureFeature("mountains", new StructureMountain(), Feature.RAW_GENERATION, 3, 2);
public static void register() {}
private static StructurePieceType register(String id, StructurePieceType pieceType) {
return Registry.register(Registry.STRUCTURE_PIECE, BetterEnd.makeID(id), pieceType);
}
public static void registerBiomeStructures(Biome biome, Collection<Supplier<ConfiguredStructureFeature<?, ?>>> collection) {
if (BiomeRegistry.getFromBiome(biome) == BiomeRegistry.END_HIGHLANDS) {
addFeature(MOUNTAINS, collection);
}
}
private static void addFeature(EndStructureFeature feature, Collection<Supplier<ConfiguredStructureFeature<?, ?>>> collection) {
collection.add(() -> { return feature.getFeatureConfigured(); });
}
}