diff --git a/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java b/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java index a6c61257..302de18f 100644 --- a/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java +++ b/src/main/java/ru/bclib/api/biomes/BCLBiomeBuilder.java @@ -6,8 +6,8 @@ import net.fabricmc.fabric.api.biome.v1.BiomeModifications; import net.minecraft.core.Holder; import net.minecraft.core.HolderSet; import net.minecraft.core.particles.ParticleOptions; -import net.minecraft.data.BuiltinRegistries; import net.minecraft.data.worldgen.BiomeDefaultFeatures; +import net.minecraft.resources.ResourceKey; import net.minecraft.resources.ResourceLocation; import net.minecraft.sounds.Music; import net.minecraft.sounds.SoundEvent; @@ -15,16 +15,10 @@ import net.minecraft.tags.TagKey; import net.minecraft.util.Mth; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; -import net.minecraft.world.level.biome.AmbientAdditionsSettings; -import net.minecraft.world.level.biome.AmbientMoodSettings; -import net.minecraft.world.level.biome.AmbientParticleSettings; -import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.*; import net.minecraft.world.level.biome.Biome.BiomeBuilder; import net.minecraft.world.level.biome.Biome.BiomeCategory; import net.minecraft.world.level.biome.Biome.Precipitation; -import net.minecraft.world.level.biome.BiomeGenerationSettings; -import net.minecraft.world.level.biome.BiomeSpecialEffects; -import net.minecraft.world.level.biome.MobSpawnSettings; import net.minecraft.world.level.biome.MobSpawnSettings.SpawnerData; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.state.BlockState; @@ -33,7 +27,6 @@ import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.Noises; import net.minecraft.world.level.levelgen.SurfaceRules; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; -import net.minecraft.world.level.levelgen.feature.ConfiguredStructureFeature; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import ru.bclib.api.surface.SurfaceRuleBuilder; import ru.bclib.entity.BCLEntityWrapper; @@ -45,7 +38,9 @@ import ru.bclib.world.biomes.BCLBiomeSettings; import ru.bclib.world.features.BCLFeature; import ru.bclib.world.structures.BCLStructureFeature; -import java.util.*; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; import java.util.function.BiFunction; import java.util.function.Consumer; import java.util.stream.Collectors; @@ -566,11 +561,9 @@ public class BCLBiomeBuilder { * @param carver {@link ConfiguredWorldCarver} to add. * @return same {@link BCLBiomeBuilder} instance. */ - public BCLBiomeBuilder carver(GenerationStep.Carving step, ConfiguredWorldCarver carver) { + public BCLBiomeBuilder carver(GenerationStep.Carving step, Holder> carver) { final ResourceLocation immutableID = biomeID; - BuiltinRegistries.CONFIGURED_CARVER - .getResourceKey(carver) - .ifPresent(key -> BiomeModifications.addCarver(ctx -> ctx.getBiomeKey().location().equals(immutableID), step, key)); + carver.unwrapKey().ifPresent(key -> BiomeModifications.addCarver( ctx -> ctx.getBiomeKey().location().equals(immutableID), step, (ResourceKey>) key)); return this; } diff --git a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java index 51b00b9f..be55d0b1 100644 --- a/src/main/java/ru/bclib/api/biomes/BiomeAPI.java +++ b/src/main/java/ru/bclib/api/biomes/BiomeAPI.java @@ -302,14 +302,14 @@ public class BiomeAPI { /** * Get {@link BCLBiome} from {@link Biome} instance on server. Used to convert world biomes to BCLBiomes. - * @param biome - {@link Biome} from world. + * @param biome - {@link Holder} from world. * @return {@link BCLBiome} or {@code BiomeAPI.EMPTY_BIOME}. */ - public static BCLBiome getFromBiome(Biome biome) { + public static BCLBiome getFromBiome(Holder biome) { if (biomeRegistry == null) { return EMPTY_BIOME; } - return ID_MAP.getOrDefault(biomeRegistry.getKey(biome), EMPTY_BIOME); + return ID_MAP.getOrDefault(biome.unwrapKey().orElseThrow().location(), EMPTY_BIOME); } /** @@ -738,7 +738,7 @@ public class BiomeAPI { * @param minGroupCount minimum mobs in group. * @param maxGroupCount maximum mobs in group. */ - public static void addBiomeMobSpawn(Biome biome, BCLEntityWrapper entityType, int weight, int minGroupCount, int maxGroupCount) { + public static void addBiomeMobSpawn(Holder biome, BCLEntityWrapper entityType, int weight, int minGroupCount, int maxGroupCount) { if (entityType.canSpawn()){ addBiomeMobSpawn(biome, entityType.type(), weight, minGroupCount, maxGroupCount); } @@ -752,9 +752,9 @@ public class BiomeAPI { * @param minGroupCount minimum mobs in group. * @param maxGroupCount maximum mobs in group. */ - public static void addBiomeMobSpawn(Biome biome, EntityType entityType, int weight, int minGroupCount, int maxGroupCount) { + public static void addBiomeMobSpawn(Holder biome, EntityType entityType, int weight, int minGroupCount, int maxGroupCount) { final MobCategory category = entityType.getCategory(); - MobSpawnSettingsAccessor accessor = (MobSpawnSettingsAccessor) biome.getMobSettings(); + MobSpawnSettingsAccessor accessor = (MobSpawnSettingsAccessor) biome.value().getMobSettings(); Map> spawners = CollectionsUtil.getMutable(accessor.bcl_getSpawners()); List mobs = spawners.containsKey(category) ? CollectionsUtil.getMutable(spawners.get(category).unwrap()) : Lists.newArrayList(); mobs.add(new SpawnerData(entityType, weight, minGroupCount, maxGroupCount)); diff --git a/src/main/java/ru/bclib/world/structures/BCLStructureFeature.java b/src/main/java/ru/bclib/world/structures/BCLStructureFeature.java index 7b021944..0894ae89 100644 --- a/src/main/java/ru/bclib/world/structures/BCLStructureFeature.java +++ b/src/main/java/ru/bclib/world/structures/BCLStructureFeature.java @@ -38,6 +38,9 @@ public class BCLStructureFeature { public final ResourceKey structureSetKey; public BCLStructureFeature(ResourceLocation id, StructureFeature structure, GenerationStep.Decoration step, int spacing, int separation) { + this(id, structure, step, spacing, separation, false); + } + public BCLStructureFeature(ResourceLocation id, StructureFeature structure, GenerationStep.Decoration step, int spacing, int separation, boolean adaptNoise) { this.id = id; this.featureStep = step; //parts from vanilla for Structure generation @@ -57,7 +60,7 @@ public class BCLStructureFeature { this.biomeTag = TagAPI.makeBiomeTag(id.getNamespace(), "has_structure/"+id.getPath()); this.structure = StructureFeatureAccessor.callRegister(id.toString(), structure, step); - this.featureConfigured = StructureFeaturesAccessor.callRegister(structureKey, this.structure.configured(NoneFeatureConfiguration.NONE, biomeTag)); + this.featureConfigured = StructureFeaturesAccessor.callRegister(structureKey, this.structure.configured(NoneFeatureConfiguration.NONE, biomeTag, adaptNoise)); StructureSets.register(structureSetKey, featureConfigured, spreadConfig); //TODO: 1.18 check if structures are added correctly //FlatChunkGeneratorConfigAccessor.getStructureToFeatures().put(this.structure, this.featureConfigured);