diff --git a/src/main/java/ru/betterend/entity/EndSlimeEntity.java b/src/main/java/ru/betterend/entity/EndSlimeEntity.java index b9b6118c..eef8605b 100644 --- a/src/main/java/ru/betterend/entity/EndSlimeEntity.java +++ b/src/main/java/ru/betterend/entity/EndSlimeEntity.java @@ -42,7 +42,7 @@ import ru.betterend.interfaces.ISlime; import ru.betterend.registry.EndBiomes; import ru.betterend.util.BlocksHelper; import ru.betterend.util.MHelper; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class EndSlimeEntity extends SlimeEntity { private static final TrackedData VARIANT = DataTracker.registerData(EndSlimeEntity.class, TrackedDataHandlerRegistry.BYTE); diff --git a/src/main/java/ru/betterend/integration/byg/BYGIntegration.java b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java index ffa7d743..98a7ade2 100644 --- a/src/main/java/ru/betterend/integration/byg/BYGIntegration.java +++ b/src/main/java/ru/betterend/integration/byg/BYGIntegration.java @@ -14,7 +14,7 @@ import ru.betterend.integration.byg.features.BYGFeatures; import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndTags; import ru.betterend.util.TagHelper; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BYGIntegration extends ModIntegration { public BYGIntegration() { diff --git a/src/main/java/ru/betterend/integration/byg/biomes/BYGBiomes.java b/src/main/java/ru/betterend/integration/byg/biomes/BYGBiomes.java index 0211415c..6a47013c 100644 --- a/src/main/java/ru/betterend/integration/byg/biomes/BYGBiomes.java +++ b/src/main/java/ru/betterend/integration/byg/biomes/BYGBiomes.java @@ -2,7 +2,7 @@ package ru.betterend.integration.byg.biomes; import ru.betterend.integration.Integrations; import ru.betterend.registry.EndBiomes; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BYGBiomes { // New Biomes diff --git a/src/main/java/ru/betterend/integration/byg/biomes/EterialGrove.java b/src/main/java/ru/betterend/integration/byg/biomes/EterialGrove.java index cec4f4c5..8e33136e 100644 --- a/src/main/java/ru/betterend/integration/byg/biomes/EterialGrove.java +++ b/src/main/java/ru/betterend/integration/byg/biomes/EterialGrove.java @@ -10,8 +10,8 @@ import net.minecraft.world.biome.SpawnSettings.SpawnEntry; import ru.betterend.BetterEnd; import ru.betterend.integration.Integrations; import ru.betterend.integration.byg.features.BYGFeatures; -import ru.betterend.world.biome.BiomeDefinition; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; public class EterialGrove extends EndBiome { public EterialGrove() { diff --git a/src/main/java/ru/betterend/integration/byg/biomes/NightshadeRedwoods.java b/src/main/java/ru/betterend/integration/byg/biomes/NightshadeRedwoods.java index 525b433a..af9ac202 100644 --- a/src/main/java/ru/betterend/integration/byg/biomes/NightshadeRedwoods.java +++ b/src/main/java/ru/betterend/integration/byg/biomes/NightshadeRedwoods.java @@ -13,8 +13,8 @@ import ru.betterend.BetterEnd; import ru.betterend.integration.Integrations; import ru.betterend.integration.byg.features.BYGFeatures; import ru.betterend.registry.EndFeatures; -import ru.betterend.world.biome.BiomeDefinition; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; public class NightshadeRedwoods extends EndBiome { public NightshadeRedwoods() { diff --git a/src/main/java/ru/betterend/integration/byg/biomes/OldBulbisGardens.java b/src/main/java/ru/betterend/integration/byg/biomes/OldBulbisGardens.java index ec711c80..ae7eed1d 100644 --- a/src/main/java/ru/betterend/integration/byg/biomes/OldBulbisGardens.java +++ b/src/main/java/ru/betterend/integration/byg/biomes/OldBulbisGardens.java @@ -20,8 +20,8 @@ import ru.betterend.BetterEnd; import ru.betterend.integration.Integrations; import ru.betterend.integration.byg.features.BYGFeatures; import ru.betterend.registry.EndFeatures; -import ru.betterend.world.biome.BiomeDefinition; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; public class OldBulbisGardens extends EndBiome { public OldBulbisGardens() { diff --git a/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java b/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java index 26d59d3a..3b24d00f 100644 --- a/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java +++ b/src/main/java/ru/betterend/mixin/client/BackgroundRendererMixin.java @@ -25,7 +25,7 @@ import net.minecraft.world.biome.Biome.Category; import ru.betterend.client.ClientOptions; import ru.betterend.registry.EndBiomes; import ru.betterend.util.BackgroundInfo; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; @Mixin(BackgroundRenderer.class) public class BackgroundRendererMixin { diff --git a/src/main/java/ru/betterend/mixin/common/BoneMealItemMixin.java b/src/main/java/ru/betterend/mixin/common/BoneMealItemMixin.java index 1eff0099..bfba167c 100644 --- a/src/main/java/ru/betterend/mixin/common/BoneMealItemMixin.java +++ b/src/main/java/ru/betterend/mixin/common/BoneMealItemMixin.java @@ -23,7 +23,7 @@ import ru.betterend.registry.EndBlocks; import ru.betterend.registry.EndTags; import ru.betterend.util.BlocksHelper; import ru.betterend.util.BonemealUtil; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; @Mixin(BoneMealItem.class) public class BoneMealItemMixin { diff --git a/src/main/java/ru/betterend/registry/EndBiomes.java b/src/main/java/ru/betterend/registry/EndBiomes.java index f961837a..15e92272 100644 --- a/src/main/java/ru/betterend/registry/EndBiomes.java +++ b/src/main/java/ru/betterend/registry/EndBiomes.java @@ -31,25 +31,26 @@ import ru.betterend.BetterEnd; import ru.betterend.config.Configs; import ru.betterend.integration.Integrations; import ru.betterend.util.JsonFactory; -import ru.betterend.world.biome.BiomeAmberLand; -import ru.betterend.world.biome.BiomeBlossomingSpires; -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.BiomeIceStarfield; -import ru.betterend.world.biome.BiomeMegalake; -import ru.betterend.world.biome.BiomeMegalakeGrove; -import ru.betterend.world.biome.BiomePaintedMountains; -import ru.betterend.world.biome.BiomeShadowForest; -import ru.betterend.world.biome.BiomeSulphurSprings; -import ru.betterend.world.biome.BiomeUmbrellaJungle; -import ru.betterend.world.biome.DragonGraveyardsBiome; -import ru.betterend.world.biome.DryShrublandBiome; -import ru.betterend.world.biome.EmptyEndCaveBiome; -import ru.betterend.world.biome.EndBiome; -import ru.betterend.world.biome.EndCaveBiome; -import ru.betterend.world.biome.GlowingGrasslandsBiome; +import ru.betterend.world.biome.air.BiomeIceStarfield; +import ru.betterend.world.biome.cave.EmptyEndCaveBiome; +import ru.betterend.world.biome.cave.EmptySmaragdantCaveBiome; +import ru.betterend.world.biome.cave.EndCaveBiome; +import ru.betterend.world.biome.land.BiomeAmberLand; +import ru.betterend.world.biome.land.BiomeBlossomingSpires; +import ru.betterend.world.biome.land.BiomeChorusForest; +import ru.betterend.world.biome.land.BiomeCrystalMountains; +import ru.betterend.world.biome.land.BiomeDustWastelands; +import ru.betterend.world.biome.land.BiomeFoggyMushroomland; +import ru.betterend.world.biome.land.BiomeMegalake; +import ru.betterend.world.biome.land.BiomeMegalakeGrove; +import ru.betterend.world.biome.land.BiomePaintedMountains; +import ru.betterend.world.biome.land.BiomeShadowForest; +import ru.betterend.world.biome.land.BiomeSulphurSprings; +import ru.betterend.world.biome.land.BiomeUmbrellaJungle; +import ru.betterend.world.biome.land.DragonGraveyardsBiome; +import ru.betterend.world.biome.land.DryShrublandBiome; +import ru.betterend.world.biome.land.EndBiome; +import ru.betterend.world.biome.land.GlowingGrasslandsBiome; import ru.betterend.world.generator.BELayerRandomSource; import ru.betterend.world.generator.BiomePicker; import ru.betterend.world.generator.BiomeType; @@ -98,7 +99,8 @@ public class EndBiomes { public static final EndBiome ICE_STARFIELD = registerBiome(new BiomeIceStarfield(), BiomeType.VOID); // Better End Caves - public static final EndCaveBiome EMPTY_CAVE = registerCaveBiome(new EmptyEndCaveBiome()); + public static final EndCaveBiome EMPTY_END_CAVE = registerCaveBiome(new EmptyEndCaveBiome()); + public static final EndCaveBiome EMPTY_SMARAGDANT_CAVE = registerCaveBiome(new EmptySmaragdantCaveBiome()); public static void register() {} diff --git a/src/main/java/ru/betterend/registry/EndFeatures.java b/src/main/java/ru/betterend/registry/EndFeatures.java index 060799e6..f66047a4 100644 --- a/src/main/java/ru/betterend/registry/EndFeatures.java +++ b/src/main/java/ru/betterend/registry/EndFeatures.java @@ -10,11 +10,12 @@ import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.GenerationStep; import net.minecraft.world.gen.feature.ConfiguredFeature; import ru.betterend.BetterEnd; -import ru.betterend.world.biome.BiomeDefinition; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; import ru.betterend.world.features.BlueVineFeature; import ru.betterend.world.features.CharniaFeature; import ru.betterend.world.features.CrashedShipFeature; +import ru.betterend.world.features.DefaultFeature; import ru.betterend.world.features.DoublePlantFeature; import ru.betterend.world.features.EndFeature; import ru.betterend.world.features.EndLilyFeature; @@ -43,6 +44,8 @@ import ru.betterend.world.features.terrain.GeyserFeature; import ru.betterend.world.features.terrain.IceStarFeature; import ru.betterend.world.features.terrain.ObsidianBoulderFeature; import ru.betterend.world.features.terrain.ObsidianPillarBasementFeature; +import ru.betterend.world.features.terrain.SmaragdantCrystalFeature; +import ru.betterend.world.features.terrain.SmaragdantCrystalShardFeature; import ru.betterend.world.features.terrain.SpireFeature; import ru.betterend.world.features.terrain.SulphurHillFeature; import ru.betterend.world.features.terrain.SulphuricCaveFeature; @@ -185,6 +188,10 @@ public class EndFeatures { // Mobs public static final EndFeature SILK_MOTH_NEST = EndFeature.makeChansedFeature("silk_moth_nest", new SilkMothNestFeature(), 2); + // Caves + public static final DefaultFeature SMARAGDANT_CRYSTAL = new SmaragdantCrystalFeature(); + public static final DefaultFeature SMARAGDANT_CRYSTAL_SHARD = new SmaragdantCrystalShardFeature(); + public static void registerBiomeFeatures(Identifier id, Biome biome, List>>> features) { if (id.getNamespace().equals(BetterEnd.MOD_ID)) { return; diff --git a/src/main/java/ru/betterend/util/BlocksHelper.java b/src/main/java/ru/betterend/util/BlocksHelper.java index 89006734..2708d51c 100644 --- a/src/main/java/ru/betterend/util/BlocksHelper.java +++ b/src/main/java/ru/betterend/util/BlocksHelper.java @@ -196,6 +196,17 @@ public class BlocksHelper { } } } + else if (state.isOf(EndBlocks.SMARAGDANT_CRYSTAL)) { + POS.setY(POS.getY() - 1); + if (world.isAir(POS)) { + POS.setY(POS.getY() + 1); + while (state.isOf(EndBlocks.SMARAGDANT_CRYSTAL)) { + setWithoutUpdate(world, POS, AIR); + POS.setY(POS.getY() + 1); + state = world.getBlockState(POS); + } + } + } else if (!state.canPlaceAt(world, POS)) { // Chorus if (state.isOf(Blocks.CHORUS_PLANT)) { diff --git a/src/main/java/ru/betterend/util/BonemealUtil.java b/src/main/java/ru/betterend/util/BonemealUtil.java index 72a6c66f..5d288dd0 100644 --- a/src/main/java/ru/betterend/util/BonemealUtil.java +++ b/src/main/java/ru/betterend/util/BonemealUtil.java @@ -11,7 +11,7 @@ import net.minecraft.block.Block; import net.minecraft.util.Identifier; import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndBlocks; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BonemealUtil { private static final Map> GRASS_BIOMES = Maps.newHashMap(); diff --git a/src/main/java/ru/betterend/world/biome/EmptyEndCaveBiome.java b/src/main/java/ru/betterend/world/biome/EmptyEndCaveBiome.java deleted file mode 100644 index 6ebe900a..00000000 --- a/src/main/java/ru/betterend/world/biome/EmptyEndCaveBiome.java +++ /dev/null @@ -1,18 +0,0 @@ -package ru.betterend.world.biome; - -import ru.betterend.registry.EndBlocks; -import ru.betterend.registry.EndParticles; -import ru.betterend.registry.EndSounds; - -public class EmptyEndCaveBiome extends EndCaveBiome { - public EmptyEndCaveBiome() { - super(new BiomeDefinition("empty_end_cave") - .setFogColor(255, 184, 71) - .setFogDensity(2.0F) - .setPlantsColor(219, 115, 38) - .setWaterAndFogColor(145, 108, 72) - .setMusic(EndSounds.MUSIC_FOREST) - .setParticles(EndParticles.AMBER_SPHERE, 0.001F) - .setSurface(EndBlocks.AMBER_MOSS)); - } -} diff --git a/src/main/java/ru/betterend/world/biome/EndCaveBiome.java b/src/main/java/ru/betterend/world/biome/EndCaveBiome.java deleted file mode 100644 index 769398bd..00000000 --- a/src/main/java/ru/betterend/world/biome/EndCaveBiome.java +++ /dev/null @@ -1,33 +0,0 @@ -package ru.betterend.world.biome; - -import java.util.List; -import java.util.Random; - -import com.google.common.collect.Lists; - -import net.minecraft.world.gen.feature.Feature; - -public class EndCaveBiome extends EndBiome { - private List> floorFeatures = Lists.newArrayList(); - private List> ceilFeatures = Lists.newArrayList(); - - public EndCaveBiome(BiomeDefinition definition) { - super(definition.setCaveBiome()); - } - - public void addFloorFeature(Feature feature) { - floorFeatures.add(feature); - } - - public void addCeilFeature(Feature feature) { - ceilFeatures.add(feature); - } - - public Feature getFloorFeature(Random random) { - return floorFeatures.isEmpty() ? null : floorFeatures.get(random.nextInt(floorFeatures.size())); - } - - public Feature getCeilFeature(Random random) { - return ceilFeatures.isEmpty() ? null : ceilFeatures.get(random.nextInt(ceilFeatures.size())); - } -} diff --git a/src/main/java/ru/betterend/world/biome/BiomeIceStarfield.java b/src/main/java/ru/betterend/world/biome/air/BiomeIceStarfield.java similarity index 80% rename from src/main/java/ru/betterend/world/biome/BiomeIceStarfield.java rename to src/main/java/ru/betterend/world/biome/air/BiomeIceStarfield.java index 36df8654..5f33b989 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeIceStarfield.java +++ b/src/main/java/ru/betterend/world/biome/air/BiomeIceStarfield.java @@ -1,9 +1,11 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.air; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndFeatures; import ru.betterend.registry.EndParticles; import ru.betterend.registry.EndStructures; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; public class BiomeIceStarfield extends EndBiome { public BiomeIceStarfield() { diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java new file mode 100644 index 00000000..1a99264e --- /dev/null +++ b/src/main/java/ru/betterend/world/biome/cave/EmptyEndCaveBiome.java @@ -0,0 +1,12 @@ +package ru.betterend.world.biome.cave; + +import ru.betterend.registry.EndSounds; +import ru.betterend.world.biome.land.BiomeDefinition; + +public class EmptyEndCaveBiome extends EndCaveBiome { + public EmptyEndCaveBiome() { + super(new BiomeDefinition("empty_end_cave") + .setFogDensity(2.0F) + .setMusic(EndSounds.MUSIC_FOREST)); + } +} diff --git a/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java new file mode 100644 index 00000000..27997f02 --- /dev/null +++ b/src/main/java/ru/betterend/world/biome/cave/EmptySmaragdantCaveBiome.java @@ -0,0 +1,25 @@ +package ru.betterend.world.biome.cave; + +import ru.betterend.registry.EndFeatures; +import ru.betterend.registry.EndParticles; +import ru.betterend.registry.EndSounds; +import ru.betterend.world.biome.land.BiomeDefinition; + +public class EmptySmaragdantCaveBiome extends EndCaveBiome { + public EmptySmaragdantCaveBiome() { + super(new BiomeDefinition("empty_smaragdant_cave") + .setFogColor(0, 253, 182) + .setFogDensity(2.0F) + .setPlantsColor(0, 131, 145) + .setWaterAndFogColor(31, 167, 212) + .setMusic(EndSounds.MUSIC_FOREST) + .setParticles(EndParticles.FIREFLY, 0.001F)); + this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL, 1); + this.addFloorFeature(EndFeatures.SMARAGDANT_CRYSTAL_SHARD, 20); + } + + @Override + public float getFloorDensity() { + return 0.1F; + } +} diff --git a/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java new file mode 100644 index 00000000..f5464047 --- /dev/null +++ b/src/main/java/ru/betterend/world/biome/cave/EndCaveBiome.java @@ -0,0 +1,37 @@ +package ru.betterend.world.biome.cave; + +import java.util.Random; + +import net.minecraft.util.collection.WeightedList; +import net.minecraft.world.gen.feature.Feature; +import ru.betterend.world.biome.land.BiomeDefinition; +import ru.betterend.world.biome.land.EndBiome; + +public class EndCaveBiome extends EndBiome { + private WeightedList> floorFeatures = new WeightedList>(); + private WeightedList> ceilFeatures = new WeightedList>(); + + public EndCaveBiome(BiomeDefinition definition) { + super(definition.setCaveBiome()); + } + + public void addFloorFeature(Feature feature, int weight) { + floorFeatures.add(feature, weight); + } + + public void addCeilFeature(Feature feature, int weight) { + ceilFeatures.add(feature, weight); + } + + public Feature getFloorFeature(Random random) { + return floorFeatures.isEmpty() ? null : floorFeatures.pickRandom(random); + } + + public Feature getCeilFeature(Random random) { + return ceilFeatures.isEmpty() ? null : ceilFeatures.pickRandom(random); + } + + public float getFloorDensity() { + return 0; + } +} diff --git a/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java b/src/main/java/ru/betterend/world/biome/land/BiomeAmberLand.java similarity index 94% rename from src/main/java/ru/betterend/world/biome/BiomeAmberLand.java rename to src/main/java/ru/betterend/world/biome/land/BiomeAmberLand.java index 142d9337..f7e28782 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeAmberLand.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeAmberLand.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; diff --git a/src/main/java/ru/betterend/world/biome/BiomeBlossomingSpires.java b/src/main/java/ru/betterend/world/biome/land/BiomeBlossomingSpires.java similarity index 94% rename from src/main/java/ru/betterend/world/biome/BiomeBlossomingSpires.java rename to src/main/java/ru/betterend/world/biome/land/BiomeBlossomingSpires.java index 08630fbf..e61b2ef4 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeBlossomingSpires.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeBlossomingSpires.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java b/src/main/java/ru/betterend/world/biome/land/BiomeChorusForest.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/BiomeChorusForest.java rename to src/main/java/ru/betterend/world/biome/land/BiomeChorusForest.java index d9ce594f..64c24aec 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeChorusForest.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeChorusForest.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.particle.ParticleTypes; diff --git a/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java b/src/main/java/ru/betterend/world/biome/land/BiomeCrystalMountains.java similarity index 91% rename from src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java rename to src/main/java/ru/betterend/world/biome/land/BiomeCrystalMountains.java index cd6c80f5..7f0a1176 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeCrystalMountains.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeCrystalMountains.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/biome/BiomeDefinition.java b/src/main/java/ru/betterend/world/biome/land/BiomeDefinition.java similarity index 96% rename from src/main/java/ru/betterend/world/biome/BiomeDefinition.java rename to src/main/java/ru/betterend/world/biome/land/BiomeDefinition.java index a3ce12fa..378b1902 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeDefinition.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeDefinition.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import java.util.List; diff --git a/src/main/java/ru/betterend/world/biome/BiomeDustWastelands.java b/src/main/java/ru/betterend/world/biome/land/BiomeDustWastelands.java similarity index 92% rename from src/main/java/ru/betterend/world/biome/BiomeDustWastelands.java rename to src/main/java/ru/betterend/world/biome/land/BiomeDustWastelands.java index c663cf09..8baa3564 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeDustWastelands.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeDustWastelands.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.particle.ParticleTypes; diff --git a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java b/src/main/java/ru/betterend/world/biome/land/BiomeFoggyMushroomland.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java rename to src/main/java/ru/betterend/world/biome/land/BiomeFoggyMushroomland.java index 4158875e..bffa77dc 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeFoggyMushroomland.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeFoggyMushroomland.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; diff --git a/src/main/java/ru/betterend/world/biome/BiomeMegalake.java b/src/main/java/ru/betterend/world/biome/land/BiomeMegalake.java similarity index 94% rename from src/main/java/ru/betterend/world/biome/BiomeMegalake.java rename to src/main/java/ru/betterend/world/biome/land/BiomeMegalake.java index 9b740291..01853bbe 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeMegalake.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeMegalake.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java b/src/main/java/ru/betterend/world/biome/land/BiomeMegalakeGrove.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java rename to src/main/java/ru/betterend/world/biome/land/BiomeMegalakeGrove.java index dc6d76f5..03fc5dc3 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeMegalakeGrove.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeMegalakeGrove.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/biome/BiomePaintedMountains.java b/src/main/java/ru/betterend/world/biome/land/BiomePaintedMountains.java similarity index 92% rename from src/main/java/ru/betterend/world/biome/BiomePaintedMountains.java rename to src/main/java/ru/betterend/world/biome/land/BiomePaintedMountains.java index 49aa5c47..bef86311 100644 --- a/src/main/java/ru/betterend/world/biome/BiomePaintedMountains.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomePaintedMountains.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.particle.ParticleTypes; diff --git a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java b/src/main/java/ru/betterend/world/biome/land/BiomeShadowForest.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/BiomeShadowForest.java rename to src/main/java/ru/betterend/world/biome/land/BiomeShadowForest.java index a2d917a0..62060cdb 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeShadowForest.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeShadowForest.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.particle.ParticleTypes; diff --git a/src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java b/src/main/java/ru/betterend/world/biome/land/BiomeSulphurSprings.java similarity index 94% rename from src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java rename to src/main/java/ru/betterend/world/biome/land/BiomeSulphurSprings.java index c2df018e..e370e5e7 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeSulphurSprings.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeSulphurSprings.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndEntities; diff --git a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java b/src/main/java/ru/betterend/world/biome/land/BiomeUmbrellaJungle.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java rename to src/main/java/ru/betterend/world/biome/land/BiomeUmbrellaJungle.java index a18bc64e..5e969919 100644 --- a/src/main/java/ru/betterend/world/biome/BiomeUmbrellaJungle.java +++ b/src/main/java/ru/betterend/world/biome/land/BiomeUmbrellaJungle.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; diff --git a/src/main/java/ru/betterend/world/biome/DragonGraveyardsBiome.java b/src/main/java/ru/betterend/world/biome/land/DragonGraveyardsBiome.java similarity index 93% rename from src/main/java/ru/betterend/world/biome/DragonGraveyardsBiome.java rename to src/main/java/ru/betterend/world/biome/land/DragonGraveyardsBiome.java index 07c0dc74..7688869a 100644 --- a/src/main/java/ru/betterend/world/biome/DragonGraveyardsBiome.java +++ b/src/main/java/ru/betterend/world/biome/land/DragonGraveyardsBiome.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import ru.betterend.registry.EndBlocks; diff --git a/src/main/java/ru/betterend/world/biome/DryShrublandBiome.java b/src/main/java/ru/betterend/world/biome/land/DryShrublandBiome.java similarity index 92% rename from src/main/java/ru/betterend/world/biome/DryShrublandBiome.java rename to src/main/java/ru/betterend/world/biome/land/DryShrublandBiome.java index 89f4253f..be304161 100644 --- a/src/main/java/ru/betterend/world/biome/DryShrublandBiome.java +++ b/src/main/java/ru/betterend/world/biome/land/DryShrublandBiome.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; diff --git a/src/main/java/ru/betterend/world/biome/EndBiome.java b/src/main/java/ru/betterend/world/biome/land/EndBiome.java similarity index 95% rename from src/main/java/ru/betterend/world/biome/EndBiome.java rename to src/main/java/ru/betterend/world/biome/land/EndBiome.java index 478bc398..a1266cc3 100644 --- a/src/main/java/ru/betterend/world/biome/EndBiome.java +++ b/src/main/java/ru/betterend/world/biome/land/EndBiome.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import java.io.InputStream; import java.util.List; diff --git a/src/main/java/ru/betterend/world/biome/GlowingGrasslandsBiome.java b/src/main/java/ru/betterend/world/biome/land/GlowingGrasslandsBiome.java similarity index 94% rename from src/main/java/ru/betterend/world/biome/GlowingGrasslandsBiome.java rename to src/main/java/ru/betterend/world/biome/land/GlowingGrasslandsBiome.java index 379b9a45..ab3639f1 100644 --- a/src/main/java/ru/betterend/world/biome/GlowingGrasslandsBiome.java +++ b/src/main/java/ru/betterend/world/biome/land/GlowingGrasslandsBiome.java @@ -1,4 +1,4 @@ -package ru.betterend.world.biome; +package ru.betterend.world.biome.land; import net.minecraft.entity.EntityType; import net.minecraft.world.gen.feature.ConfiguredStructureFeatures; diff --git a/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java new file mode 100644 index 00000000..a4e4f799 --- /dev/null +++ b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalFeature.java @@ -0,0 +1,56 @@ +package ru.betterend.world.features.terrain; + +import java.util.Random; + +import net.minecraft.block.BlockState; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.BlockPos.Mutable; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndTags; +import ru.betterend.util.BlocksHelper; +import ru.betterend.util.MHelper; +import ru.betterend.world.features.DefaultFeature; + +public class SmaragdantCrystalFeature extends DefaultFeature { + @Override + public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { + if (!world.getBlockState(pos.down()).isIn(EndTags.GEN_TERRAIN)) { + return false; + } + + Mutable mut = new Mutable(); + int count = MHelper.randRange(15, 30, random); + BlockState crystal = EndBlocks.SMARAGDANT_CRYSTAL.getDefaultState(); + BlockState shard = EndBlocks.SMARAGDANT_CRYSTAL_SHARD.getDefaultState(); + for (int i = 0; i < count; i++) { + mut.set(pos).move(MHelper.floor(random.nextGaussian() * 2 + 0.5), 5, MHelper.floor(random.nextGaussian() * 2 + 0.5)); + int dist = MHelper.floor(1.5F - MHelper.length(mut.getX() - pos.getX(), mut.getZ() - pos.getZ())) + random.nextInt(3); + if (dist > 0) { + BlockState state = world.getBlockState(mut); + for (int n = 0; n < 10 && state.isAir(); n++) { + mut.setY(mut.getY() - 1); + state = world.getBlockState(mut); + } + if (state.isIn(EndTags.GEN_TERRAIN) && !world.getBlockState(mut.up()).isOf(crystal.getBlock())) { + for (int j = 0; j <= dist; j++) { + BlocksHelper.setWithoutUpdate(world, mut, crystal); + mut.setY(mut.getY() + 1); + } + if (random.nextBoolean()) { + boolean waterlogged = !world.getFluidState(mut).isEmpty(); + BlocksHelper.setWithoutUpdate(world, mut, shard.with(Properties.WATERLOGGED, waterlogged)); + } + else { + BlocksHelper.setWithoutUpdate(world, mut, crystal); + } + } + } + } + + return true; + } +} diff --git a/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalShardFeature.java b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalShardFeature.java new file mode 100644 index 00000000..38b4a5f5 --- /dev/null +++ b/src/main/java/ru/betterend/world/features/terrain/SmaragdantCrystalShardFeature.java @@ -0,0 +1,29 @@ +package ru.betterend.world.features.terrain; + +import java.util.Random; + +import net.minecraft.block.BlockState; +import net.minecraft.state.property.Properties; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.gen.chunk.ChunkGenerator; +import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import ru.betterend.registry.EndBlocks; +import ru.betterend.registry.EndTags; +import ru.betterend.util.BlocksHelper; +import ru.betterend.world.features.DefaultFeature; + +public class SmaragdantCrystalShardFeature extends DefaultFeature { + @Override + public boolean generate(StructureWorldAccess world, ChunkGenerator chunkGenerator, Random random, BlockPos pos, DefaultFeatureConfig config) { + if (!world.getBlockState(pos.down()).isIn(EndTags.GEN_TERRAIN)) { + return false; + } + + BlockState shard = EndBlocks.SMARAGDANT_CRYSTAL_SHARD.getDefaultState(); + boolean waterlogged = !world.getFluidState(pos).isEmpty(); + BlocksHelper.setWithoutUpdate(world, pos, shard.with(Properties.WATERLOGGED, waterlogged)); + + return true; + } +} diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java index a8d59265..dc07b6a5 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/EndCaveFeature.java @@ -9,16 +9,20 @@ import net.minecraft.block.BlockState; import net.minecraft.block.Blocks; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos.Mutable; +import net.minecraft.util.math.Direction; import net.minecraft.world.Heightmap; import net.minecraft.world.StructureWorldAccess; +import net.minecraft.world.biome.Biome; import net.minecraft.world.gen.chunk.ChunkGenerator; import net.minecraft.world.gen.feature.DefaultFeatureConfig; +import net.minecraft.world.gen.feature.Feature; import ru.betterend.interfaces.IBiomeArray; import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndTags; import ru.betterend.util.BlocksHelper; import ru.betterend.util.MHelper; -import ru.betterend.world.biome.EndCaveBiome; +import ru.betterend.world.biome.cave.EndCaveBiome; +import ru.betterend.world.biome.land.EndBiome; import ru.betterend.world.features.DefaultFeature; import ru.betterend.world.generator.GeneratorOptions; @@ -33,6 +37,10 @@ public abstract class EndCaveFeature extends DefaultFeature { return false; } + if (biomeMissingCaves(world, pos)) { + return false; + } + int radius = MHelper.randRange(10, 30, random); BlockPos center = findPos(world, pos, radius, random); @@ -42,29 +50,31 @@ public abstract class EndCaveFeature extends DefaultFeature { EndCaveBiome biome = EndBiomes.getCaveBiome(random); Set caveBlocks = generate(world, center, radius, random); - if (biome != null && !caveBlocks.isEmpty()) { - setBiomes(world, biome, caveBlocks); - Set floorPositions = Sets.newHashSet(); - Set ceilPositions = Sets.newHashSet(); - Mutable mut = new Mutable(); - caveBlocks.forEach((bpos) -> { - mut.set(bpos); - if (world.getBlockState(mut).getMaterial().isReplaceable()) { - mut.setY(bpos.getY() - 1); - if (world.getBlockState(mut).isIn(EndTags.GEN_TERRAIN)) { - floorPositions.add(mut.toImmutable()); + if (!caveBlocks.isEmpty()) { + if (biome != null) { + setBiomes(world, biome, caveBlocks); + Set floorPositions = Sets.newHashSet(); + Set ceilPositions = Sets.newHashSet(); + Mutable mut = new Mutable(); + caveBlocks.forEach((bpos) -> { + mut.set(bpos); + if (world.getBlockState(mut).getMaterial().isReplaceable()) { + mut.setY(bpos.getY() - 1); + if (world.getBlockState(mut).isIn(EndTags.GEN_TERRAIN)) { + floorPositions.add(mut.toImmutable()); + } + mut.setY(bpos.getY() + 1); + if (world.getBlockState(mut).isIn(EndTags.GEN_TERRAIN)) { + ceilPositions.add(mut.toImmutable()); + } } - mut.setY(bpos.getY() + 1); - if (world.getBlockState(mut).isIn(EndTags.GEN_TERRAIN)) { - ceilPositions.add(mut.toImmutable()); - } - } - }); - BlockState surfaceBlock = biome.getBiome().getGenerationSettings().getSurfaceConfig().getTopMaterial(); - placeFloor(world, biome, floorPositions, random, surfaceBlock); - placeCeil(world, biome, ceilPositions, random); + }); + BlockState surfaceBlock = biome.getBiome().getGenerationSettings().getSurfaceConfig().getTopMaterial(); + placeFloor(world, biome, floorPositions, random, surfaceBlock); + placeCeil(world, biome, ceilPositions, random); + } + fixBlocks(world, caveBlocks); } - fixBlocks(world, center, radius); return true; } @@ -75,6 +85,18 @@ public abstract class EndCaveFeature extends DefaultFeature { floorPositions.forEach((pos) -> { BlocksHelper.setWithoutUpdate(world, pos, surfaceBlock); }); + + float density = biome.getFloorDensity(); + if (density > 0) { + floorPositions.forEach((pos) -> { + if (random.nextFloat() <= density) { + Feature feature = biome.getFloorFeature(random); + if (feature != null) { + feature.generate(world, null, random, pos.up(), null); + } + } + }); + } } protected void placeCeil(StructureWorldAccess world, EndCaveBiome biome, Set ceilPositions, Random random) { @@ -122,13 +144,54 @@ public abstract class EndCaveFeature extends DefaultFeature { return new BlockPos(pos.getX(), MHelper.randRange(bottom, top, random), pos.getZ()); } - private void fixBlocks(StructureWorldAccess world, BlockPos pos, int radius) { - int x1 = pos.getX() - radius - 5; - int y1 = pos.getY() - radius - 5; - int z1 = pos.getZ() - radius - 5; - int x2 = pos.getX() + radius + 5; - int y2 = pos.getY() + radius + 5; - int z2 = pos.getZ() + radius + 5; - BlocksHelper.fixBlocks(world, new BlockPos(x1, y1, z1), new BlockPos(x2, y2, z2)); + private void fixBlocks(StructureWorldAccess world, Set caveBlocks) { + BlockPos pos = caveBlocks.iterator().next(); + Mutable start = new Mutable().set(pos); + Mutable end = new Mutable().set(pos); + caveBlocks.forEach((bpos) -> { + if (bpos.getX() < start.getX()) { + start.setX(bpos.getX()); + } + if (bpos.getX() > end.getX()) { + end.setX(bpos.getX()); + } + + if (bpos.getY() < start.getY()) { + start.setY(bpos.getY()); + } + if (bpos.getY() > end.getY()) { + end.setY(bpos.getY()); + } + + if (bpos.getZ() < start.getZ()) { + start.setZ(bpos.getZ()); + } + if (bpos.getZ() > end.getZ()) { + end.setZ(bpos.getZ()); + } + }); + BlocksHelper.fixBlocks(world, start.add(-5, -5, -5), end.add(5, 5, 5)); + } + + protected boolean isWaterNear(StructureWorldAccess world, BlockPos pos) { + for (Direction dir: BlocksHelper.DIRECTIONS) { + if (!world.getFluidState(pos.offset(dir, 5)).isEmpty()) { + return true; + } + } + return false; + } + + protected boolean biomeMissingCaves(StructureWorldAccess world, BlockPos pos) { + for (int x = -2; x < 3; x++) { + for (int z = -2; z < 3; z++) { + Biome biome = world.getBiome(pos.add(x << 4, 0, z << 4)); + EndBiome endBiome = EndBiomes.getFromBiome(biome); + if (!endBiome.hasCaves()) { + return true; + } + } + } + return false; } } diff --git a/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java b/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java index 5f32e5e4..55636096 100644 --- a/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java +++ b/src/main/java/ru/betterend/world/features/terrain/caves/RoundCaveFeature.java @@ -47,11 +47,10 @@ public class RoundCaveFeature extends EndCaveFeature { ysq *= ysq; bpos.setY(y); double r = noise.eval(x * 0.1, y * 0.1, z * 0.1) * nr + hr; - //double r2 = r + 5; double dist = xsq + ysq + zsq; if (dist < r * r) { state = world.getBlockState(bpos); - if (isReplaceable(state)) { + if (isReplaceable(state) && !isWaterNear(world, bpos)) { BlocksHelper.setWithoutUpdate(world, bpos, CAVE_AIR); blocks.add(bpos.toImmutable()); diff --git a/src/main/java/ru/betterend/world/generator/BetterEndBiomeSource.java b/src/main/java/ru/betterend/world/generator/BetterEndBiomeSource.java index a2eb7c0a..e33ddf6a 100644 --- a/src/main/java/ru/betterend/world/generator/BetterEndBiomeSource.java +++ b/src/main/java/ru/betterend/world/generator/BetterEndBiomeSource.java @@ -19,7 +19,7 @@ import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.registry.EndBiomes; import ru.betterend.registry.EndTags; import ru.betterend.util.FeaturesHelper; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BetterEndBiomeSource extends BiomeSource { public static final Codec CODEC = RecordCodecBuilder.create((instance) -> { diff --git a/src/main/java/ru/betterend/world/generator/BiomeChunk.java b/src/main/java/ru/betterend/world/generator/BiomeChunk.java index 96dd258f..a3c3efe7 100644 --- a/src/main/java/ru/betterend/world/generator/BiomeChunk.java +++ b/src/main/java/ru/betterend/world/generator/BiomeChunk.java @@ -2,7 +2,7 @@ package ru.betterend.world.generator; import java.util.Random; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BiomeChunk { diff --git a/src/main/java/ru/betterend/world/generator/BiomeMap.java b/src/main/java/ru/betterend/world/generator/BiomeMap.java index bcc73d85..b400be59 100644 --- a/src/main/java/ru/betterend/world/generator/BiomeMap.java +++ b/src/main/java/ru/betterend/world/generator/BiomeMap.java @@ -8,7 +8,7 @@ import net.minecraft.util.math.ChunkPos; import net.minecraft.world.gen.ChunkRandom; import ru.betterend.noise.OpenSimplexNoise; import ru.betterend.util.MHelper; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BiomeMap { private static final ChunkRandom RANDOM = new ChunkRandom(); diff --git a/src/main/java/ru/betterend/world/generator/BiomePicker.java b/src/main/java/ru/betterend/world/generator/BiomePicker.java index 050ab133..339a0ab6 100644 --- a/src/main/java/ru/betterend/world/generator/BiomePicker.java +++ b/src/main/java/ru/betterend/world/generator/BiomePicker.java @@ -8,7 +8,7 @@ import com.google.common.collect.Lists; import com.google.common.collect.Sets; import net.minecraft.util.Identifier; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class BiomePicker { private final Set immutableIDs = Sets.newHashSet(); diff --git a/src/main/java/ru/betterend/world/generator/WeighTree.java b/src/main/java/ru/betterend/world/generator/WeighTree.java index 50cf39aa..2d55c364 100644 --- a/src/main/java/ru/betterend/world/generator/WeighTree.java +++ b/src/main/java/ru/betterend/world/generator/WeighTree.java @@ -2,7 +2,7 @@ package ru.betterend.world.generator; import java.util.List; -import ru.betterend.world.biome.EndBiome; +import ru.betterend.world.biome.land.EndBiome; public class WeighTree { private final Node root;