diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/ModernBetaBuiltInProviders.java b/common/src/main/java/mod/bluestaggo/modernerbeta/ModernBetaBuiltInProviders.java index 6223f84d..02c5ea76 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/ModernBetaBuiltInProviders.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/ModernBetaBuiltInProviders.java @@ -5,7 +5,7 @@ import mod.bluestaggo.modernerbeta.api.world.provider.BiomeProviderCreator; import mod.bluestaggo.modernerbeta.api.world.provider.CaveBiomeProviderCreator; import mod.bluestaggo.modernerbeta.api.world.provider.ChunkProviderCreator; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.api.world.blocksource.BlockSource; import mod.bluestaggo.modernerbeta.api.world.chunk.noise.NoisePostProcessor; import mod.bluestaggo.modernerbeta.api.world.chunk.surface.SurfaceConfig; diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java b/common/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java index 50e9d158..c1fa6eee 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java @@ -7,9 +7,12 @@ import me.shedaniel.autoconfig.serializer.GsonConfigSerializer; import mod.bluestaggo.modernerbeta.config.ModernBetaConfig; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistryKeys; import mod.bluestaggo.modernerbeta.util.CodecUtil; import mod.bluestaggo.modernerbeta.world.biome.ModernBetaBiomeSource; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.ConfiguredLayers; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers.LayerType; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.predicates.BiomePredicateType; import mod.bluestaggo.modernerbeta.world.carver.ModernBetaCarvers; import mod.bluestaggo.modernerbeta.world.chunk.ModernBetaChunkGenerator; import mod.bluestaggo.modernerbeta.world.feature.ModernBetaFeatures; @@ -48,25 +51,25 @@ public class ModernerBeta { public static Map, Consumer>> CUSTOM_REGISTRY_HANDLERS; - public static final List, Codec>> DYNAMIC_REGISTRIES = List.of( - new Pair<>(ModernBetaRegistryKeys.CONFIGURED_LAYERS_KEY, ConfiguredLayers.CODEC) - ); + public static final List, Codec>> DYNAMIC_REGISTRIES = List.of(); public static void init() { ModernerBeta.log(Level.INFO, "Initializing Moderner Beta..."); } public static void setupCustomRegistryHandlers() { - CUSTOM_REGISTRY_HANDLERS = Map.of( - ModernBetaRegistries.CHUNK, ModernBetaBuiltInProviders::registerChunkProviders, - ModernBetaRegistries.BIOME, ModernBetaBuiltInProviders::registerBiomeProviders, - ModernBetaRegistries.CAVE_BIOME, ModernBetaBuiltInProviders::registerCaveBiomeProviders, - ModernBetaRegistries.SURFACE_CONFIG, ModernBetaBuiltInProviders::registerSurfaceConfigs, - ModernBetaRegistries.HEIGHT_CONFIG, ModernBetaBuiltInProviders::registerHeightConfigs, - ModernBetaRegistries.NOISE_POST_PROCESSOR, ModernBetaBuiltInProviders::registerNoisePostProcessors, - ModernBetaRegistries.BLOCKSOURCE, ModernBetaBuiltInProviders::registerBlockSources, - ModernBetaRegistries.SETTINGS_PRESET, ModernBetaBuiltInProviders::registerSettingsPresets, - ModernBetaRegistries.SETTINGS_PRESET_CATEGORY, ModernBetaBuiltInProviders::registerSettingsPresetCategories + CUSTOM_REGISTRY_HANDLERS = Map.ofEntries( + Map.entry(ModernBetaRegistries.CHUNK, ModernBetaBuiltInProviders::registerChunkProviders), + Map.entry(ModernBetaRegistries.BIOME, ModernBetaBuiltInProviders::registerBiomeProviders), + Map.entry(ModernBetaRegistries.CAVE_BIOME, ModernBetaBuiltInProviders::registerCaveBiomeProviders), + Map.entry(ModernBetaRegistries.SURFACE_CONFIG, ModernBetaBuiltInProviders::registerSurfaceConfigs), + Map.entry(ModernBetaRegistries.HEIGHT_CONFIG, ModernBetaBuiltInProviders::registerHeightConfigs), + Map.entry(ModernBetaRegistries.NOISE_POST_PROCESSOR, ModernBetaBuiltInProviders::registerNoisePostProcessors), + Map.entry(ModernBetaRegistries.BLOCKSOURCE, ModernBetaBuiltInProviders::registerBlockSources), + Map.entry(ModernBetaRegistries.SETTINGS_PRESET, ModernBetaBuiltInProviders::registerSettingsPresets), + Map.entry(ModernBetaRegistries.SETTINGS_PRESET_CATEGORY, ModernBetaBuiltInProviders::registerSettingsPresetCategories), + Map.entry(ModernBetaRegistries.FRACTAL_LAYER, handler -> LayerType.init()), + Map.entry(ModernBetaRegistries.BIOME_PREDICATE, handler -> BiomePredicateType.init()) ); } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProvider.java b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProvider.java index 636f507c..a09f90ba 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProvider.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProvider.java @@ -1,6 +1,6 @@ package mod.bluestaggo.modernerbeta.api.world.chunk; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.api.world.blocksource.BlockSource; import mod.bluestaggo.modernerbeta.api.world.chunk.surface.SurfaceBuilder; import mod.bluestaggo.modernerbeta.api.world.spawn.SpawnLocator; @@ -72,7 +72,7 @@ public abstract class ChunkProvider { this.randomProvider = chunkGenerator.getGeneratorSettings().value().getRandomProvider(); this.randomSplitter = this.randomProvider.create(this.seed).nextSplitter(); - this.blockSources = ModernBetaBuiltInRegistries.BLOCKSOURCE + this.blockSources = ModernBetaRegistries.BLOCKSOURCE .streamEntries() .map(func -> func.value().apply(this.chunkSettings, this.randomSplitter)) .toList(); diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProviderForcedHeight.java b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProviderForcedHeight.java index f4a94bae..f7aa1d1c 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProviderForcedHeight.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/ChunkProviderForcedHeight.java @@ -1,17 +1,20 @@ package mod.bluestaggo.modernerbeta.api.world.chunk; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.world.biome.HeightConfig; import mod.bluestaggo.modernerbeta.world.biome.ModernBetaBiomeSource; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.ExtendedBiomeId; import mod.bluestaggo.modernerbeta.world.chunk.ModernBetaChunkGenerator; +import net.minecraft.registry.RegistryKey; import net.minecraft.registry.RegistryKeys; +import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; import net.minecraft.util.Identifier; import net.minecraft.util.math.MathHelper; import net.minecraft.world.biome.Biome; import java.util.Map; +import java.util.Optional; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -34,10 +37,11 @@ public abstract class ChunkProviderForcedHeight extends ChunkProviderNoise { this.biomeHeightValues = Stream.concat( this.chunkSettings.releaseBiomeHeightValues.entrySet().stream() .map(entry -> Map.entry(ExtendedBiomeId.of(entry.getKey()), HeightConfig.parse(entry.getValue(), HeightConfig.DEFAULT))), - ModernBetaBuiltInRegistries.HEIGHT_CONFIG.getEntrySet().stream() + ModernBetaRegistries.HEIGHT_CONFIG.streamEntries() + .filter(RegistryEntry::hasKeyAndValue) .flatMap(entry -> { - TagKey heightConfigTag = TagKey.of(RegistryKeys.BIOME, Identifier.of(entry.getKey())); - HeightConfig heightConfig = entry.getValue(); + TagKey heightConfigTag = TagKey.of(RegistryKeys.BIOME, entry.getKey().orElseThrow().getValue()); + HeightConfig heightConfig = entry.value(); return chunkGenerator.getBiomeSource().getBiomes().stream() .filter(biome -> biome.isIn(heightConfigTag)) .map(biome -> ExtendedBiomeId.of(biome.getKey().orElseThrow().getValue(), heightConfig.type())) diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/surface/SurfaceConfig.java b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/surface/SurfaceConfig.java index af7187d6..a2c17b41 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/surface/SurfaceConfig.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/api/world/chunk/surface/SurfaceConfig.java @@ -1,6 +1,6 @@ package mod.bluestaggo.modernerbeta.api.world.chunk.surface; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import net.minecraft.registry.RegistryKeys; import net.minecraft.registry.entry.RegistryEntry; import net.minecraft.registry.tag.TagKey; @@ -35,13 +35,13 @@ public record SurfaceConfig(SurfaceBlocks normal, SurfaceBlocks beachSand, Surfa public static final SurfaceConfig SNOW_STONE = new SurfaceConfig(SurfaceBlocks.SNOW_STONE); public static SurfaceConfig getSurfaceConfig(RegistryEntry biome) { - Optional optionalKey = ModernBetaBuiltInRegistries.SURFACE_CONFIG.getIds() + Optional optionalKey = ModernBetaRegistries.SURFACE_CONFIG.getIds() .stream() .filter(id -> biome.isIn(keyOf(id.getPath()))) .findFirst(); if (optionalKey.isPresent()) { - return ModernBetaBuiltInRegistries.SURFACE_CONFIG.get(optionalKey.get()); + return ModernBetaRegistries.SURFACE_CONFIG.get(optionalKey.get()); } return DEFAULT; diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaBiomePreviewScreen.java b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaBiomePreviewScreen.java index d51ddfe7..2746e2fa 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaBiomePreviewScreen.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaBiomePreviewScreen.java @@ -2,7 +2,7 @@ package mod.bluestaggo.modernerbeta.client.gui.screen; import com.google.common.util.concurrent.AtomicDouble; import mod.bluestaggo.modernerbeta.ModernerBeta; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.api.world.biome.BiomeProvider; import mod.bluestaggo.modernerbeta.api.world.biome.BiomeResolverExtendedId; import mod.bluestaggo.modernerbeta.api.world.biome.BiomeResolverExtendedIdStepped; @@ -41,7 +41,7 @@ public class ModernBetaBiomePreviewScreen extends ModernBetaScreen { public ModernBetaBiomePreviewScreen(Text title, Screen parent, GeneratorOptionsHolder generationOptions, ModernBetaSettingsBiome biomeSettings) { super(title, parent); - this.biomeProvider = ModernBetaBuiltInRegistries.BIOME.get(biomeSettings.biomeProvider) + this.biomeProvider = ModernBetaRegistries.BIOME.get(biomeSettings.biomeProvider) .apply( biomeSettings.toCompound(), generationOptions.getCombinedRegistryManager().getOrThrow(RegistryKeys.BIOME), diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaSettingsPresetScreen.java b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaSettingsPresetScreen.java index 3cf885e2..8ea2f51e 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaSettingsPresetScreen.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaSettingsPresetScreen.java @@ -1,7 +1,8 @@ package mod.bluestaggo.modernerbeta.client.gui.screen; import mod.bluestaggo.modernerbeta.ModernerBeta; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPreset; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPresetCategory; import net.fabricmc.api.EnvType; @@ -127,14 +128,14 @@ public class ModernBetaSettingsPresetScreen extends ModernBetaScreen { presets.forEach(key -> { this.addEntry(new PresetCategoryEntry( key, - ModernBetaBuiltInRegistries.SETTINGS_PRESET_CATEGORY.get(key) + ModernBetaRegistries.SETTINGS_PRESET_CATEGORY.get(key) )); }); } else { presets.forEach(key -> { this.addEntry(new PresetEntry( key, - ModernBetaBuiltInRegistries.SETTINGS_PRESET.get(key) + ModernBetaRegistries.SETTINGS_PRESET.get(key) )); }); } @@ -308,7 +309,7 @@ public class ModernBetaSettingsPresetScreen extends ModernBetaScreen { @Override protected Identifier getPresetTexture(Identifier presetName) { - presetName = ModernBetaBuiltInRegistries.SETTINGS_PRESET_CATEGORY.get(presetName).defaultIcon(); + presetName = ModernBetaRegistries.SETTINGS_PRESET_CATEGORY.get(presetName).defaultIcon(); return super.getPresetTexture(presetName); } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaWorldScreen.java b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaWorldScreen.java index e29917ae..71dcf46d 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaWorldScreen.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/client/gui/screen/ModernBetaWorldScreen.java @@ -118,7 +118,7 @@ public class ModernBetaWorldScreen extends ModernBetaScreen { presetText, button -> this.client.setScreen(new ModernBetaSettingsPresetScreen( this, - ModernBetaBuiltInRegistries.SETTINGS_PRESET_CATEGORY.getIds().stream().sorted().toList(), + ModernBetaRegistries.SETTINGS_PRESET_CATEGORY.getIds().stream().sorted().toList(), this.preset, true )) diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistries.java b/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistries.java index f00e8286..83a429b8 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistries.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistries.java @@ -10,6 +10,8 @@ import mod.bluestaggo.modernerbeta.api.world.provider.ChunkProviderCreator; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPreset; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPresetCategory; import mod.bluestaggo.modernerbeta.world.biome.HeightConfig; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers.LayerType; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.predicates.BiomePredicateType; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; import net.minecraft.util.Identifier; @@ -25,6 +27,8 @@ public final class ModernBetaRegistries { public static Registry BLOCKSOURCE; public static Registry SETTINGS_PRESET; public static Registry SETTINGS_PRESET_CATEGORY; + public static Registry> FRACTAL_LAYER; + public static Registry> BIOME_PREDICATE; private static Registry register(RegistryKey> key) { return registryHelper.createSimple(key).build(); @@ -46,5 +50,7 @@ public final class ModernBetaRegistries { BLOCKSOURCE = register(ModernBetaRegistryKeys.BLOCKSOURCE); SETTINGS_PRESET = registerDefaulted(ModernBetaRegistryKeys.SETTINGS_PRESET, ModernBetaBuiltInTypes.Preset.BETA_1_7_3.id); SETTINGS_PRESET_CATEGORY = registerDefaulted(ModernBetaRegistryKeys.SETTINGS_PRESET_CATEGORY, ModernBetaBuiltInTypes.PresetCategory.BETA.id); + FRACTAL_LAYER = register(ModernBetaRegistryKeys.FRACTAL_LAYER); + BIOME_PREDICATE = register(ModernBetaRegistryKeys.BIOME_PREDICATE); } } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistryKeys.java b/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistryKeys.java index 841e3748..9d5a5965 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistryKeys.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/registry/ModernBetaRegistryKeys.java @@ -11,6 +11,8 @@ import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPreset; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPresetCategory; import mod.bluestaggo.modernerbeta.world.biome.HeightConfig; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.ConfiguredLayers; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers.LayerType; +import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.predicates.BiomePredicateType; import net.minecraft.registry.Registry; import net.minecraft.registry.RegistryKey; @@ -24,5 +26,6 @@ public final class ModernBetaRegistryKeys { public static final RegistryKey> BLOCKSOURCE = RegistryKey.ofRegistry(ModernerBeta.createId("blocksource")); public static final RegistryKey> SETTINGS_PRESET = RegistryKey.ofRegistry(ModernerBeta.createId("settings_preset")); public static final RegistryKey> SETTINGS_PRESET_CATEGORY = RegistryKey.ofRegistry(ModernerBeta.createId("settings_preset_category")); - public static final RegistryKey> CONFIGURED_LAYERS_KEY = RegistryKey.ofRegistry(ModernerBeta.createId("configured_layers")); + public static final RegistryKey>> FRACTAL_LAYER = RegistryKey.ofRegistry(ModernerBeta.createId("fractal_layer")); + public static final RegistryKey>> BIOME_PREDICATE = RegistryKey.ofRegistry(ModernerBeta.createId("biome_predicate_type")); } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/settings/ModernBetaSettingsPreset.java b/common/src/main/java/mod/bluestaggo/modernerbeta/settings/ModernBetaSettingsPreset.java index c21bed64..3a742b12 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/settings/ModernBetaSettingsPreset.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/settings/ModernBetaSettingsPreset.java @@ -1,7 +1,7 @@ package mod.bluestaggo.modernerbeta.settings; import mod.bluestaggo.modernerbeta.ModernerBeta; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import net.minecraft.nbt.NbtCompound; import net.minecraft.util.Pair; import org.slf4j.event.Level; @@ -42,9 +42,9 @@ public record ModernBetaSettingsPreset(ModernBetaSettingsChunk settingsChunk, Mo this.settingsCaveBiome; // Test providers - ModernBetaBuiltInRegistries.CHUNK.get(settingsChunk.chunkProvider); - ModernBetaBuiltInRegistries.BIOME.get(settingsBiome.biomeProvider); - ModernBetaBuiltInRegistries.CAVE_BIOME.get(settingsCaveBiome.biomeProvider); + ModernBetaRegistries.CHUNK.get(settingsChunk.chunkProvider); + ModernBetaRegistries.BIOME.get(settingsBiome.biomeProvider); + ModernBetaRegistries.CAVE_BIOME.get(settingsCaveBiome.biomeProvider); } catch (Exception e) { ModernerBeta.log(Level.ERROR, "Unable to read settings JSON! Reverting to previous settings.."); ModernerBeta.log(Level.ERROR, String.format("Reason: %s", e.getMessage())); @@ -80,9 +80,9 @@ public record ModernBetaSettingsPreset(ModernBetaSettingsChunk settingsChunk, Mo this.settingsCaveBiome; // Test providers - ModernBetaBuiltInRegistries.CHUNK.get(settingsChunk.chunkProvider); - ModernBetaBuiltInRegistries.BIOME.get(settingsBiome.biomeProvider); - ModernBetaBuiltInRegistries.CAVE_BIOME.get(settingsCaveBiome.biomeProvider); + ModernBetaRegistries.CHUNK.get(settingsChunk.chunkProvider); + ModernBetaRegistries.BIOME.get(settingsBiome.biomeProvider); + ModernBetaRegistries.CAVE_BIOME.get(settingsCaveBiome.biomeProvider); } catch (Exception e) { ModernerBeta.log(Level.ERROR, "Unable to read settings NBT! Reverting to previous settings.."); ModernerBeta.log(Level.ERROR, String.format("Reason: %s", e.getMessage())); diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/ModernBetaBiomeSource.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/ModernBetaBiomeSource.java index 8b2b36df..197df9e5 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/ModernBetaBiomeSource.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/ModernBetaBiomeSource.java @@ -5,7 +5,7 @@ import com.mojang.datafixers.util.Pair; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import mod.bluestaggo.modernerbeta.ModernerBeta; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.api.world.biome.*; import mod.bluestaggo.modernerbeta.api.world.cavebiome.CaveBiomeProvider; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; @@ -70,11 +70,11 @@ public class ModernBetaBiomeSource extends BiomeSource { ModernBetaSettingsBiome biomeSettings = ModernBetaSettingsBiome.fromCompound(this.biomeSettings); ModernBetaSettingsCaveBiome caveBiomeSettings = ModernBetaSettingsCaveBiome.fromCompound(this.caveBiomeSettings); - this.biomeProvider = ModernBetaBuiltInRegistries.BIOME + this.biomeProvider = ModernBetaRegistries.BIOME .get(biomeSettings.biomeProvider) .apply(this.biomeSettings, this.biomeRegistry, seed); - this.caveBiomeProvider = ModernBetaBuiltInRegistries.CAVE_BIOME + this.caveBiomeProvider = ModernBetaRegistries.CAVE_BIOME .get(caveBiomeSettings.biomeProvider) .apply(this.caveBiomeSettings, this.biomeRegistry, seed); } @@ -254,11 +254,11 @@ public class ModernBetaBiomeSource extends BiomeSource { ModernBetaSettingsBiome modernBetaBiomeSettings = ModernBetaSettingsBiome.fromCompound(this.biomeSettings); ModernBetaSettingsCaveBiome modernBetaCaveBiomeSettings = ModernBetaSettingsCaveBiome.fromCompound(this.caveBiomeSettings); - BiomeProvider biomeProvider = ModernBetaBuiltInRegistries.BIOME + BiomeProvider biomeProvider = ModernBetaRegistries.BIOME .get(modernBetaBiomeSettings.biomeProvider) .apply(biomeSettings, biomeRegistry, 0L); - CaveBiomeProvider caveBiomeProvider = ModernBetaBuiltInRegistries.CAVE_BIOME + CaveBiomeProvider caveBiomeProvider = ModernBetaRegistries.CAVE_BIOME .get(modernBetaCaveBiomeSettings.biomeProvider) .apply(caveBiomeSettings, biomeRegistry, 0L); diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/Layer.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/Layer.java index 4d717c75..73817839 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/Layer.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/Layer.java @@ -4,12 +4,13 @@ import com.mojang.datafixers.Products; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import it.unimi.dsi.fastutil.longs.Long2ObjectLinkedOpenHashMap; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.ModernerBeta; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.ExtendedBiomeId; +import net.minecraft.util.Identifier; import net.minecraft.util.math.ColumnPos; import net.minecraft.world.biome.source.SeedMixer; -import java.util.Collection; import java.util.Collections; import java.util.List; import java.util.Set; @@ -18,7 +19,7 @@ import java.util.stream.Collectors; public abstract class Layer { private final static int CACHE_CAPACITY = 25; - public static final Codec TYPE_CODEC = ModernBetaBuiltInRegistries.FRACTAL_LAYER.getCodec() + public static final Codec TYPE_CODEC = ModernBetaRegistries.FRACTAL_LAYER.getCodec() .dispatch(Layer::getType, LayerType::codec); public final String id; @@ -127,18 +128,10 @@ public abstract class Layer { return neighbors[0].equals(i) && neighbors[1].equals(i) && neighbors[2].equals(i) && neighbors[3].equals(i); } - public static boolean allNeighborsInSet(ExtendedBiomeId[] neighbors, Collection set) { - return set.contains(neighbors[0]) && set.contains(neighbors[1]) && set.contains(neighbors[2]) && set.contains(neighbors[3]); - } - public static boolean neighborsContain(ExtendedBiomeId[] neighbors, ExtendedBiomeId i) { return neighbors[0].equals(i) || neighbors[1].equals(i) || neighbors[2].equals(i) || neighbors[3].equals(i); } - public static boolean anyNeighborsInSet(ExtendedBiomeId[] neighbors, Collection set) { - return set.contains(neighbors[0]) || set.contains(neighbors[1]) || set.contains(neighbors[2]) || set.contains(neighbors[3]); - } - public final void addPossibleBiomesRecursive(Set biomes) { for (Layer parent : this.getParents()) { parent.addPossibleBiomesRecursive(biomes); @@ -147,12 +140,24 @@ public abstract class Layer { } protected String getName() { - return ModernBetaBuiltInRegistries.FRACTAL_LAYER.getKey(this.getType()); + return ModernBetaRegistries.FRACTAL_LAYER.getKey(this.getType()) + .map(key -> { + Identifier identifier = key.getValue(); + if (ModernerBeta.MOD_ID.equals(identifier.getNamespace())) { + return identifier.getPath(); + } + return identifier.toString(); + }) + .orElse("[unregistered]"); } @Override public String toString() { - String string = this.id + ": " + this.getName() + " " + this.seed; + String string = this.id + ": " + this.getName(); + if (this.seed != 0) { + string += " " + this.seed; + } + List parents = this.getParents(); if (!parents.isEmpty()) { string += " <- " + parents.stream() diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/LayerType.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/LayerType.java index f66e35ce..728e3995 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/LayerType.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/LayerType.java @@ -1,7 +1,9 @@ package mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers; import com.mojang.serialization.MapCodec; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.ModernerBeta; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; +import net.minecraft.registry.Registry; public record LayerType(MapCodec codec) { public static final LayerType ADD_LAND = register("add_land", AddLandLayer.CODEC); @@ -24,7 +26,10 @@ public record LayerType(MapCodec codec) { private static LayerType register(String id, MapCodec codec) { LayerType layerType = new LayerType<>(codec); - ModernBetaBuiltInRegistries.FRACTAL_LAYER.register(id, layerType); + Registry.register(ModernBetaRegistries.FRACTAL_LAYER, ModernerBeta.createId(id), layerType); return layerType; } + + public static void init() { + } } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/PredicateOverlayLayer.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/PredicateOverlayLayer.java index 6d9959c5..83ba7b79 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/PredicateOverlayLayer.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/layers/PredicateOverlayLayer.java @@ -10,6 +10,7 @@ import net.minecraft.util.StringIdentifiable; import java.util.HashSet; import java.util.List; +import java.util.Objects; import java.util.Set; import java.util.function.Function; import java.util.function.Supplier; @@ -23,7 +24,7 @@ public class PredicateOverlayLayer extends SingleParentLayer { ); private final List targets; - private transient List targetLayers; + private transient List configuredTargets; public PredicateOverlayLayer(String id, long seed, String parent, List targets) { super(id, seed, parent); @@ -35,21 +36,28 @@ public class PredicateOverlayLayer extends SingleParentLayer { return LayerType.PREDICATE_OVERLAY; } + @Override + public void configure(Function layerMap) { + super.configure(layerMap); + this.configuredTargets = this.targets.stream() + .map(target -> target.configure(layerMap)) + .toList(); + } + @Override protected List getParents() { return Stream.concat( Stream.of(this.parentLayer), - this.targetLayers.stream() - .filter(target -> target instanceof ConfiguredLayerTarget) - .map(ConfiguredLayerTarget.class::cast) - .map(ConfiguredLayerTarget::layer) + this.configuredTargets.stream() + .map(ConfiguredTarget::layer) + .filter(Objects::nonNull) ).toList(); } @Override protected ExtendedBiomeId generate(int x, int z) { ExtendedBiomeId baseBiome = this.parentLayer.sample(x, z); - for (ConfiguredTarget target : this.targetLayers) { + for (ConfiguredTarget target : this.configuredTargets) { Supplier randomSupplier = Suppliers.memoize(() -> this.getRandom(x, z)); if (target.predicate().matches(baseBiome, this.parentLayer, randomSupplier, x, z)) { ExtendedBiomeId result = target.sample(x, z); @@ -63,11 +71,10 @@ public class PredicateOverlayLayer extends SingleParentLayer { } @Override - public void configure(Function layerMap) { - super.configure(layerMap); - this.targetLayers = this.targets.stream() - .map(target -> target.configure(layerMap)) - .toList(); + protected void addPossibleBiomes(Set biomes) { + for (ConfiguredTarget target : this.configuredTargets) { + target.addPossibleBiomes(biomes); + } } public record Target(BiomePredicate predicate, String result, Type type) { @@ -146,7 +153,9 @@ public class PredicateOverlayLayer extends SingleParentLayer { private interface ConfiguredTarget { BiomePredicate predicate(); + Layer layer(); ExtendedBiomeId sample(int x, int z); + void addPossibleBiomes(Set biomes); } private record ConfiguredLayerTarget(BiomePredicate predicate, Layer layer) implements ConfiguredTarget { @@ -154,12 +163,27 @@ public class PredicateOverlayLayer extends SingleParentLayer { public ExtendedBiomeId sample(int x, int z) { return this.layer.sample(x, z); } + + @Override + public void addPossibleBiomes(Set biomes) { + layer.addPossibleBiomesRecursive(biomes); + } } private record ConfiguredBiomeTarget(BiomePredicate predicate, ExtendedBiomeId biome) implements ConfiguredTarget { + @Override + public Layer layer() { + return null; + } + @Override public ExtendedBiomeId sample(int x, int z) { return this.biome; } + + @Override + public void addPossibleBiomes(Set biomes) { + biomes.add(biome); + } } } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicate.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicate.java index 7a87fdd3..2e7af0ce 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicate.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicate.java @@ -1,7 +1,7 @@ package mod.bluestaggo.modernerbeta.world.biome.provider.fractal.predicates; import com.mojang.serialization.Codec; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.ExtendedBiomeId; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers.Layer; import mod.bluestaggo.modernerbeta.world.biome.provider.fractal.layers.LayerRandom; @@ -11,7 +11,7 @@ import java.util.Set; import java.util.function.Supplier; public abstract class BiomePredicate { - public static final Codec BASE_CODEC = ModernBetaBuiltInRegistries.BIOME_PREDICATE.getCodec() + public static final Codec BASE_CODEC = ModernBetaRegistries.BIOME_PREDICATE.getCodec() .dispatch("condition", BiomePredicate::getType, BiomePredicateType::codec); public static BiomePredicate allDiagonalNeighborsMatch(BiomePredicate predicate) { diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicateType.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicateType.java index 6dc44b63..d12c9830 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicateType.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/biome/provider/fractal/predicates/BiomePredicateType.java @@ -1,7 +1,9 @@ package mod.bluestaggo.modernerbeta.world.biome.provider.fractal.predicates; import com.mojang.serialization.MapCodec; -import mod.bluestaggo.modernerbeta.api.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.ModernerBeta; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; +import net.minecraft.registry.Registry; public record BiomePredicateType(MapCodec codec) { public static final BiomePredicateType ALL_OF = register("all_of", AllOfBiomePredicate.CODEC); @@ -15,7 +17,10 @@ public record BiomePredicateType(MapCodec codec) { private static BiomePredicateType register(String id, MapCodec codec) { BiomePredicateType filterType = new BiomePredicateType<>(codec); - ModernBetaBuiltInRegistries.BIOME_PREDICATE.register(id, filterType); + Registry.register(ModernBetaRegistries.BIOME_PREDICATE, ModernerBeta.createId(id), filterType); return filterType; } + + public static void init() { + } } diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/chunk/ModernBetaChunkGenerator.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/chunk/ModernBetaChunkGenerator.java index 32ac3087..434fbe2f 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/chunk/ModernBetaChunkGenerator.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/chunk/ModernBetaChunkGenerator.java @@ -3,7 +3,7 @@ package mod.bluestaggo.modernerbeta.world.chunk; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import mod.bluestaggo.modernerbeta.ModernerBeta; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.api.world.chunk.ChunkProvider; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsChunk; @@ -78,7 +78,7 @@ public class ModernBetaChunkGenerator extends NoiseChunkGenerator { public void initProvider(long seed) { ModernBetaSettingsChunk chunkSettings = ModernBetaSettingsChunk.fromCompound(this.chunkSettings); - this.chunkProvider = ModernBetaBuiltInRegistries.CHUNK + this.chunkProvider = ModernBetaRegistries.CHUNK .get(chunkSettings.chunkProvider) .apply(this, seed); diff --git a/common/src/main/java/mod/bluestaggo/modernerbeta/world/preset/ModernBetaWorldPresets.java b/common/src/main/java/mod/bluestaggo/modernerbeta/world/preset/ModernBetaWorldPresets.java index f43b7cb4..044ccc76 100644 --- a/common/src/main/java/mod/bluestaggo/modernerbeta/world/preset/ModernBetaWorldPresets.java +++ b/common/src/main/java/mod/bluestaggo/modernerbeta/world/preset/ModernBetaWorldPresets.java @@ -2,7 +2,7 @@ package mod.bluestaggo.modernerbeta.world.preset; import mod.bluestaggo.modernerbeta.ModernerBeta; import mod.bluestaggo.modernerbeta.ModernBetaBuiltInTypes; -import mod.bluestaggo.modernerbeta.registry.ModernBetaBuiltInRegistries; +import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; import mod.bluestaggo.modernerbeta.settings.ModernBetaSettingsPreset; import mod.bluestaggo.modernerbeta.world.biome.ModernBetaBiomeSource; import mod.bluestaggo.modernerbeta.world.chunk.ModernBetaChunkGenerator; @@ -54,7 +54,7 @@ public class ModernBetaWorldPresets { RegistryEntry.Reference dimensionType = registryDimensionType.getOrThrow(DimensionTypes.OVERWORLD); RegistryEntry.Reference settings = registrySettings.getOrThrow(ModernBetaChunkGeneratorSettings.BETA); - ModernBetaSettingsPreset defaultPreset = ModernBetaBuiltInRegistries.SETTINGS_PRESET.get(ModernBetaBuiltInTypes.Chunk.BETA.id); + ModernBetaSettingsPreset defaultPreset = ModernBetaRegistries.SETTINGS_PRESET.get(ModernBetaBuiltInTypes.Chunk.BETA.id); return new DimensionOptions( dimensionType,