Moved features from Highlands into separate biome

This commit is contained in:
paulevsGitch 2020-10-24 15:00:02 +03:00
parent ad6a29936a
commit f7b1f6baff
6 changed files with 36 additions and 8 deletions

View file

@ -14,6 +14,7 @@ import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biome.Category;
import net.minecraft.world.biome.BiomeKeys;
import ru.betterend.world.biome.BiomeChorusForest;
import ru.betterend.world.biome.BiomeCrystalMountains;
import ru.betterend.world.biome.BiomeDustWastelands;
import ru.betterend.world.biome.BiomeFoggyMushroomland;
import ru.betterend.world.biome.BiomeMegalake;
@ -33,13 +34,15 @@ public class BiomeRegistry {
public static final EndBiome END = registerBiome(BiomeKeys.THE_END, BiomeType.LAND, true);
public static final EndBiome END_BARRENS = registerBiome(BiomeKeys.END_BARRENS, BiomeType.VOID, true);
public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND, true);
public static final EndBiome END_HIGHLANDS = registerBiome(BiomeKeys.END_HIGHLANDS, BiomeType.LAND, false);
public static final EndBiome END_MIDLANDS = registerBiome(BiomeKeys.END_MIDLANDS, BiomeType.LAND, false);
public static final EndBiome SMALL_END_ISLANDS = registerBiome(BiomeKeys.SMALL_END_ISLANDS, BiomeType.VOID, true);
public static final EndBiome FOGGY_MUSHROOMLAND = registerBiome(new BiomeFoggyMushroomland(), BiomeType.LAND);
public static final EndBiome CHORUS_FOREST = registerBiome(new BiomeChorusForest(), BiomeType.LAND);
public static final EndBiome DUST_WASTELANDS = registerBiome(new BiomeDustWastelands(), BiomeType.LAND);
public static final EndBiome MEGALAKE = registerBiome(new BiomeMegalake(), BiomeType.LAND);
public static final EndBiome CRYSTAL_MOUNTAINS = registerBiome(new BiomeCrystalMountains(), BiomeType.LAND);
public static void register() {}
@ -117,4 +120,9 @@ public class BiomeRegistry {
}
return endBiome;
}
public static Identifier getBiomeID(Biome biome) {
Identifier id = biomeRegistry.getId(biome);
return id == null ? END.getID() : id;
}
}

View file

@ -69,9 +69,9 @@ public class FeatureRegistry {
public static void registerBiomeFeatures(Identifier id, Biome biome, List<List<Supplier<ConfiguredFeature<?, ?>>>> features) {
if (id.getNamespace().equals("minecraft")) {
if (id.getPath().equals("end_highlands")) {
String path = id.getPath();
if (path.equals("end_highlands") || path.equals("end_midlands") || path.equals("small_end_islands")) {
features.get(GenerationStep.Feature.VEGETAL_DECORATION.ordinal()).clear();
addFeature(ROUND_CAVE, features);
}
}

View file

@ -36,12 +36,12 @@ public class StructureRegistry {
}
public static void registerBiomeStructures(Identifier id, Biome biome, Collection<Supplier<ConfiguredStructureFeature<?, ?>>> structures) {
if (id.getNamespace().equals("minecraft")) {
/*if (id.getNamespace().equals("minecraft")) {
if (id.getPath().equals("end_highlands")) {
structures.clear();
addStructure(MOUNTAIN, structures);
}
}
}*/
}
private static void addStructure(EndStructureFeature feature, Collection<Supplier<ConfiguredStructureFeature<?, ?>>> collection) {

View file

@ -0,0 +1,14 @@
package ru.betterend.world.biome;
import net.minecraft.entity.EntityType;
import ru.betterend.registry.FeatureRegistry;
import ru.betterend.registry.StructureRegistry;
public class BiomeCrystalMountains extends EndBiome {
public BiomeCrystalMountains() {
super(new BiomeDefinition("crystal_mountains")
.addStructureFeature(StructureRegistry.MOUNTAIN)
.addFeature(FeatureRegistry.ROUND_CAVE)
.addMobSpawn(EntityType.ENDERMAN, 50, 1, 2));
}
}

View file

@ -32,7 +32,7 @@ public class StructureMountain extends StructureFeatureBase {
if (y > 50) {
float radius = MHelper.randRange(50, 100, random);
float height = radius * MHelper.randRange(0.8F, 1.2F, random);
MountainPiece piece = new MountainPiece(new BlockPos(x, y, z), radius, height, random.nextInt());
MountainPiece piece = new MountainPiece(new BlockPos(x, y, z), radius, height, random.nextInt(), biome);
this.children.add(piece);
}
this.setBoundingBoxFromChildren();

View file

@ -9,6 +9,7 @@ import net.minecraft.block.Blocks;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.nbt.NbtHelper;
import net.minecraft.structure.StructureManager;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockBox;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.BlockPos.Mutable;
@ -17,6 +18,7 @@ import net.minecraft.util.math.MathHelper;
import net.minecraft.world.Heightmap;
import net.minecraft.world.Heightmap.Type;
import net.minecraft.world.StructureWorldAccess;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.gen.StructureAccessor;
import net.minecraft.world.gen.chunk.ChunkGenerator;
@ -34,14 +36,16 @@ public class MountainPiece extends BasePiece {
private float radius;
private float height;
private float r2;
private Identifier biomeID;
public MountainPiece(BlockPos center, float radius, float height, int id) {
public MountainPiece(BlockPos center, float radius, float height, int id, Biome biome) {
super(StructureRegistry.MOUNTAIN_PIECE, id);
this.center = center;
this.radius = radius;
this.height = height;
this.r2 = radius * radius;
this.noise = new OpenSimplexNoise(MHelper.getSeed(534, center.getX(), center.getZ()));
this.biomeID = BiomeRegistry.getBiomeID(biome);
makeBoundingBox();
}
@ -55,6 +59,7 @@ public class MountainPiece extends BasePiece {
tag.put("center", NbtHelper.fromBlockPos(center));
tag.putFloat("radius", radius);
tag.putFloat("height", height);
tag.putString("biome", biomeID.toString());
}
@Override
@ -62,6 +67,7 @@ public class MountainPiece extends BasePiece {
center = NbtHelper.toBlockPos(tag.getCompound("center"));
radius = tag.getFloat("radius");
height = tag.getFloat("height");
biomeID = new Identifier(tag.getString("biome"));
r2 = radius * radius;
noise = new OpenSimplexNoise(MHelper.getSeed(534, center.getX(), center.getZ()));
}
@ -151,7 +157,7 @@ public class MountainPiece extends BasePiece {
return h;
}
if (BiomeRegistry.getFromBiome(world.getBiome(pos)) != BiomeRegistry.END_HIGHLANDS) {
if (!BiomeRegistry.getBiomeID(world.getBiome(pos)).equals(biomeID)) {
heightmap.put(p, -4);
return -4;
}