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.Biome.Category;
import net.minecraft.world.biome.BiomeKeys; import net.minecraft.world.biome.BiomeKeys;
import ru.betterend.world.biome.BiomeChorusForest; import ru.betterend.world.biome.BiomeChorusForest;
import ru.betterend.world.biome.BiomeCrystalMountains;
import ru.betterend.world.biome.BiomeDustWastelands; import ru.betterend.world.biome.BiomeDustWastelands;
import ru.betterend.world.biome.BiomeFoggyMushroomland; import ru.betterend.world.biome.BiomeFoggyMushroomland;
import ru.betterend.world.biome.BiomeMegalake; 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 = 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_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 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 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 FOGGY_MUSHROOMLAND = registerBiome(new BiomeFoggyMushroomland(), BiomeType.LAND);
public static final EndBiome CHORUS_FOREST = registerBiome(new BiomeChorusForest(), 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 DUST_WASTELANDS = registerBiome(new BiomeDustWastelands(), BiomeType.LAND);
public static final EndBiome MEGALAKE = registerBiome(new BiomeMegalake(), 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() {} public static void register() {}
@ -117,4 +120,9 @@ public class BiomeRegistry {
} }
return endBiome; 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) { public static void registerBiomeFeatures(Identifier id, Biome biome, List<List<Supplier<ConfiguredFeature<?, ?>>>> features) {
if (id.getNamespace().equals("minecraft")) { 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(); 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) { 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")) { if (id.getPath().equals("end_highlands")) {
structures.clear(); structures.clear();
addStructure(MOUNTAIN, structures); addStructure(MOUNTAIN, structures);
} }
} }*/
} }
private static void addStructure(EndStructureFeature feature, Collection<Supplier<ConfiguredStructureFeature<?, ?>>> collection) { 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) { if (y > 50) {
float radius = MHelper.randRange(50, 100, random); float radius = MHelper.randRange(50, 100, random);
float height = radius * MHelper.randRange(0.8F, 1.2F, 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.children.add(piece);
} }
this.setBoundingBoxFromChildren(); this.setBoundingBoxFromChildren();

View file

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