From f7b1f6baff103e0509f72e0727cc64e074aba568 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Sat, 24 Oct 2020 15:00:02 +0300 Subject: [PATCH] Moved features from Highlands into separate biome --- .../java/ru/betterend/registry/BiomeRegistry.java | 10 +++++++++- .../ru/betterend/registry/FeatureRegistry.java | 4 ++-- .../ru/betterend/registry/StructureRegistry.java | 4 ++-- .../world/biome/BiomeCrystalMountains.java | 14 ++++++++++++++ .../structures/features/StructureMountain.java | 2 +- .../world/structures/piece/MountainPiece.java | 10 ++++++++-- 6 files changed, 36 insertions(+), 8 deletions(-) create mode 100644 src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java diff --git a/src/main/java/ru/betterend/registry/BiomeRegistry.java b/src/main/java/ru/betterend/registry/BiomeRegistry.java index dda737d0..f373f09a 100644 --- a/src/main/java/ru/betterend/registry/BiomeRegistry.java +++ b/src/main/java/ru/betterend/registry/BiomeRegistry.java @@ -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; + } } diff --git a/src/main/java/ru/betterend/registry/FeatureRegistry.java b/src/main/java/ru/betterend/registry/FeatureRegistry.java index b0140432..32bd84a5 100644 --- a/src/main/java/ru/betterend/registry/FeatureRegistry.java +++ b/src/main/java/ru/betterend/registry/FeatureRegistry.java @@ -69,9 +69,9 @@ public class FeatureRegistry { public static void registerBiomeFeatures(Identifier id, Biome biome, List>>> 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); } } diff --git a/src/main/java/ru/betterend/registry/StructureRegistry.java b/src/main/java/ru/betterend/registry/StructureRegistry.java index 88d4f649..fddb73de 100644 --- a/src/main/java/ru/betterend/registry/StructureRegistry.java +++ b/src/main/java/ru/betterend/registry/StructureRegistry.java @@ -36,12 +36,12 @@ public class StructureRegistry { } public static void registerBiomeStructures(Identifier id, Biome biome, Collection>> 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>> collection) { diff --git a/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java b/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java new file mode 100644 index 00000000..c7ffa1f9 --- /dev/null +++ b/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java @@ -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)); + } +} diff --git a/src/main/java/ru/betterend/world/structures/features/StructureMountain.java b/src/main/java/ru/betterend/world/structures/features/StructureMountain.java index 0da944b9..aa02497f 100644 --- a/src/main/java/ru/betterend/world/structures/features/StructureMountain.java +++ b/src/main/java/ru/betterend/world/structures/features/StructureMountain.java @@ -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(); diff --git a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java index 913fae5a..736eda01 100644 --- a/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java +++ b/src/main/java/ru/betterend/world/structures/piece/MountainPiece.java @@ -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; }