From 8ab2d2d815e71f1fa1b146a0a2cecaeebcdce77a Mon Sep 17 00:00:00 2001 From: icanttellyou Date: Tue, 23 Jun 2026 20:58:42 +0300 Subject: [PATCH] port: 26.3-snapshot-1 initial port TODO: Rework all custom surface rules code. All of it. --- buildSrc/build.gradle.kts | 2 +- .../ModernBetaDataGeneratorEntrypoint.java | 1 + .../data/ModernBetaSettingsPresets.java | 17 ++ .../provider/ModernBetaWorldGenProvider.java | 6 + .../tag/ModernBetaTagProviderBiome.java | 2 + ...odernBetaTagProviderConfiguredFeature.java | 6 + .../ModernBetaDeepslateBlobsDataProvider.java | 6 + .../ModernBetaReducedHeightDataProvider.java | 37 +++-- gradle.properties | 2 +- settings.gradle.kts | 2 +- .../bluestaggo/modernerbeta/ModernerBeta.java | 3 +- .../modernerbeta/compat/ModCompat.java | 12 +- .../levelgen/SurfaceRuleCompatHelper.java | 2 + .../compat/levelgen/TerraBlenderCompat.java | 2 + .../level/biome/HeightConfig.java | 5 + .../level/chunk/ModernBetaChunkGenerator.java | 33 +++- .../ModernBetaNoiseGeneratorSettings.java | 41 ++++- .../chunk/ModernBetaSurfaceRuleData.java | 2 + .../level/feature/BetaOreClayFeature.java | 55 +++++-- .../feature/BetaSnowAndFreezeFeature.java | 35 ++++- .../level/feature/CaveInfdev325Feature.java | 53 ++++++- .../level/feature/ModernBetaFeatures.java | 16 ++ .../ModernBetaConfiguredFeatures.java | 10 +- .../ModernBetaMiscConfiguredFeatures.java | 20 ++- .../ModernBetaOreConfiguredFeatures.java | 30 ++-- .../ModernBetaTreeConfiguredFeatures.java | 21 ++- ...odernBetaVegetationConfiguredFeatures.java | 146 +++++++++++------- .../foliage/BetaLargeOakFoliagePlacer.java | 9 +- .../foliage/Oak14a08FoliagePlacer.java | 12 +- .../placed/ModernBetaMiscPlacedFeatures.java | 5 + .../placed/ModernBetaOrePlacedFeatures.java | 28 ++-- .../placed/ModernBetaTreePlacedFeatures.java | 6 + .../ModernBetaVegetationPlacedFeatures.java | 22 ++- .../trunk/BetaLargeOakTrunkPlacer.java | 27 ++-- .../ChunkGeneratorStructureStateAccessor.java | 10 +- .../mixin/SnowAndFreezeFeatureMixin.java | 26 +++- .../terrablender/SurfaceRuleManagerMixin.java | 2 + .../resources/moderner_beta.accesswidener | 4 + versions/26.3/gradle.properties | 17 ++ 39 files changed, 584 insertions(+), 151 deletions(-) create mode 100644 versions/26.3/gradle.properties diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index c3aea1eb..ac184016 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -12,7 +12,7 @@ repositories { dependencies { fun plugin(id: String, version: String) = "$id:$id.gradle.plugin:$version" //FIXME: This is hardcoded! Bad! - implementation("dev.kikugie:stonecutter:0.9.5") + implementation("dev.kikugie:stonecutter:0.10-alpha.2") implementation(plugin("me.modmuss50.mod-publish-plugin", "2.0.1")) implementation("org.ow2.asm:asm:9.9") diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaDataGeneratorEntrypoint.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaDataGeneratorEntrypoint.java index e4266142..1ac22de1 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaDataGeneratorEntrypoint.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaDataGeneratorEntrypoint.java @@ -57,6 +57,7 @@ public class ModernBetaDataGeneratorEntrypoint implements DataGeneratorEntrypoin @Override public void buildRegistry(RegistrySetBuilder registryBuilder) { registryBuilder.add(Registries.PLACED_FEATURE, ModernBetaPlacedFeatures::bootstrap); + //~ if >=26.3 'CONFIGURED_FEATURE' -> 'FEATURE' registryBuilder.add(Registries.CONFIGURED_FEATURE, ModernBetaConfiguredFeatures::bootstrap); registryBuilder.add(Registries.CONFIGURED_CARVER, ModernBetaConfiguredCarvers::bootstrap); registryBuilder.add(Registries.BIOME, ModernBetaBiomes::bootstrap); diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaSettingsPresets.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaSettingsPresets.java index 5599f772..d1d44bdc 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaSettingsPresets.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/ModernBetaSettingsPresets.java @@ -1028,8 +1028,13 @@ public final class ModernBetaSettingsPresets { //?} new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.PLAINS), 0.5, 0.1, 0.8), + //? if >=26.3 { + /*new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.DAPPLED_FOREST), 0.5, 0.3, 0.8), + new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.DAPPLED_FOREST), 0.5, 0.5, 0.8), + *///? } else { new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.PLAINS), 0.5, 0.3, 0.8), new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.OLD_GROWTH_BIRCH_FOREST), 0.5, 0.5, 0.8), + //? } new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.OLD_GROWTH_BIRCH_FOREST), 0.5, 0.7, 0.8), new VoronoiPointBiome(biomeRegistry.getOrThrow(Biomes.MANGROVE_SWAMP), 0.5, 0.9, 0.8), @@ -1541,6 +1546,8 @@ public final class ModernBetaSettingsPresets { ExtendedIdentifier.of("minecraft:dark_forest").mapTo("minecraft:pale_garden"), ExtendedIdentifier.of("minecraft:windswept_hills").mapTo("minecraft:meadow"), ExtendedIdentifier.of("minecraft:taiga").mapTo("minecraft:cherry_grove"), + //? if >=26.3 + //ExtendedIdentifier.of("minecraft:birch_forest").mapTo("minecraft:dappled_forest"), ExtendedIdentifier.of("minecraft:swamp").mapTo("minecraft:mangrove_swamp") ); @@ -1566,6 +1573,8 @@ public final class ModernBetaSettingsPresets { "~minecraft:old_growth_birch_forest", //? if >=1.21.4 "~minecraft:pale_garden", + //? if >=26.3 + //"~minecraft:dappled_forest", "~minecraft:cherry_grove" )), Map.entry("snowy_plains", ExtendedIdentifier.setOf( @@ -2142,6 +2151,8 @@ public final class ModernBetaSettingsPresets { ExtendedIdentifier.of("minecraft:savanna").mapTo("minecraft:savanna_plateau"), ExtendedIdentifier.of("minecraft:dark_forest").mapTo("minecraft:plains"), ExtendedIdentifier.of("minecraft:birch_forest").mapTo("*hills"), + //? if >=26.3 + //ExtendedIdentifier.of("minecraft:dappled_forest").mapTo("*hills"), ExtendedIdentifier.of("minecraft:old_growth_birch_forest").mapTo("*hills"), ExtendedIdentifier.of("minecraft:wooded_badlands").mapTo("minecraft:badlands"), ExtendedIdentifier.of("minecraft:mangrove_swamp").mapTo("*hills"), @@ -2182,6 +2193,8 @@ public final class ModernBetaSettingsPresets { //? if >=1.21.4 Map.entry(ExtendedIdentifier.of("minecraft:pale_garden*hills"), new HeightConfig(0.3f, 0.7f)), Map.entry(ExtendedIdentifier.of("minecraft:birch_forest*hills"), new HeightConfig(0.3f, 0.7f)), + //? if >=26.3 + //Map.entry(ExtendedIdentifier.of("minecraft:dappled_forest*hills"), new HeightConfig(0.3f, 0.7f)), Map.entry(ExtendedIdentifier.of("minecraft:old_growth_birch_forest"), new HeightConfig(0.1f, 0.8f)), Map.entry(ExtendedIdentifier.of("minecraft:old_growth_birch_forest*hills"), new HeightConfig(0.3f, 1.3f)), Map.entry(ExtendedIdentifier.of("minecraft:flower_forest"), new HeightConfig(0.1f, 0.8f)), @@ -2243,7 +2256,11 @@ public final class ModernBetaSettingsPresets { // Forests "minecraft:forest", "minecraft:forest", + //? if >=26.3 { + /*"minecraft:dappled_forest", + *///? } else { "minecraft:forest", + //? } "minecraft:dark_forest", "minecraft:birch_forest", "minecraft:cherry_grove", diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/ModernBetaWorldGenProvider.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/ModernBetaWorldGenProvider.java index c6d2f1e7..8c77d019 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/ModernBetaWorldGenProvider.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/ModernBetaWorldGenProvider.java @@ -13,7 +13,11 @@ import net.minecraft.core.registries.Registries; import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.levelgen.NoiseGeneratorSettings; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.presets.WorldPreset; import net.minecraft.world.level.levelgen.structure.Structure; @@ -30,6 +34,8 @@ public class ModernBetaWorldGenProvider extends FabricDynamicRegistryProvider { @Override protected void configure(HolderLookup.Provider provider, Entries entries) { HolderLookup.RegistryLookup registryBiome = provider.lookupOrThrow(Registries.BIOME); + + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' HolderLookup.RegistryLookup> registryConfiguredFeature = provider.lookupOrThrow(Registries.CONFIGURED_FEATURE); HolderLookup.RegistryLookup registryPlacedFeature = provider.lookupOrThrow(Registries.PLACED_FEATURE); HolderLookup.RegistryLookup> registryConfiguredCarver = provider.lookupOrThrow(Registries.CONFIGURED_CARVER); diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderBiome.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderBiome.java index 76d7794e..98b88b79 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderBiome.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderBiome.java @@ -455,6 +455,8 @@ public class ModernBetaTagProviderBiome extends FabricTagsProvider { Biomes.DARK_FOREST, //? if >=1.21.4 Biomes.PALE_GARDEN, + //? if >=26.3 + //Biomes.DAPPLED_FOREST, Biomes.OLD_GROWTH_BIRCH_FOREST, Biomes.SNOWY_BEACH ); diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderConfiguredFeature.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderConfiguredFeature.java index baca7a90..826a597f 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderConfiguredFeature.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/provider/tag/ModernBetaTagProviderConfiguredFeature.java @@ -7,12 +7,18 @@ import net.fabricmc.fabric.api.datagen.v1.provider.FabricTagsProvider; import net.minecraft.core.HolderLookup; import net.minecraft.core.registries.Registries; import net.minecraft.tags.FeatureTags; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import java.util.concurrent.CompletableFuture; +//~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' public class ModernBetaTagProviderConfiguredFeature extends FabricTagsProvider> { public ModernBetaTagProviderConfiguredFeature(FabricPackOutput output, CompletableFuture registryLookupFuture) { + //~ if >=26.3 'CONFIGURED_FEATURE' -> 'FEATURE' super(output, Registries.CONFIGURED_FEATURE, registryLookupFuture); } diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaDeepslateBlobsDataProvider.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaDeepslateBlobsDataProvider.java index c875bb08..8a3c72f8 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaDeepslateBlobsDataProvider.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaDeepslateBlobsDataProvider.java @@ -8,7 +8,11 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.data.worldgen.placement.OrePlacements; import net.minecraft.world.level.levelgen.VerticalAnchor; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; + //? } import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; import net.minecraft.world.level.levelgen.placement.PlacedFeature; @@ -24,9 +28,11 @@ public class ModernBetaDeepslateBlobsDataProvider extends FabricDynamicRegistryP @Override protected void configure(HolderLookup.Provider provider, Entries entries) { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderLookup.RegistryLookup> registryConfiguredFeature = provider.lookupOrThrow(Registries.CONFIGURED_FEATURE); Holder> deepslate = alwaysSerializableHolder(entries.ref(ModernBetaReducedHeightDataProvider.ORE_DEEPSLATE_OLD)); Holder> tuff = registryConfiguredFeature.getOrThrow(OreFeatures.ORE_TUFF); + //~ } entries.add(OrePlacements.ORE_COAL_UPPER, new PlacedFeature(deepslate, modifiersWithCount(2, HeightRangePlacement.uniform(VerticalAnchor.aboveBottom(0), VerticalAnchor.aboveBottom(16))))); diff --git a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaReducedHeightDataProvider.java b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaReducedHeightDataProvider.java index 1e5c197b..9213d25b 100644 --- a/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaReducedHeightDataProvider.java +++ b/fabric/src/main/java/mod/bluestaggo/modernerbeta/fabric/data/reduced_height/provider/ModernBetaReducedHeightDataProvider.java @@ -10,6 +10,7 @@ import net.fabricmc.fabric.api.datagen.v1.provider.FabricDynamicRegistryProvider import net.minecraft.core.*; import net.minecraft.core.HolderLookup.Provider; import net.minecraft.core.registries.Registries; +//? if <26.3 import net.minecraft.data.worldgen.SurfaceRuleData; import net.minecraft.data.worldgen.features.OreFeatures; import net.minecraft.data.worldgen.placement.OrePlacements; @@ -30,10 +31,11 @@ import net.minecraft.world.level.levelgen.*; import net.minecraft.world.level.levelgen.carver.CarverDebugSettings; import net.minecraft.world.level.levelgen.carver.CaveCarverConfiguration; import net.minecraft.world.level.levelgen.carver.WorldCarver; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.3 { import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +//? } import net.minecraft.world.level.levelgen.heightproviders.ConstantHeight; import net.minecraft.world.level.levelgen.placement.*; import net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest; @@ -50,8 +52,10 @@ import java.util.stream.Stream; import static mod.bluestaggo.modernerbeta.level.chunk.ModernBetaNoiseGeneratorSettings.*; public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryProvider { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' { public static final ResourceKey> ORE_DEEPSLATE_OLD = ModernBetaConfiguredFeatures.of("ore_deepslate_old"); public static final ResourceKey> ORE_DIAMOND_OLD = ModernBetaConfiguredFeatures.of("ore_diamond_old"); + //~ } private static boolean isGeneratingData; @@ -143,20 +147,22 @@ public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryPr RuleTest overworldStone = new TagMatchTest(BlockTags.BASE_STONE_OVERWORLD); RuleTest deepslateReplacers = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); + //~ if >=26.3 'new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(' -> '(new OreFeature(' { entries.add(OreFeatures.ORE_GRANITE, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(overworldStone, Blocks.GRANITE.defaultBlockState(), 33))); entries.add(OreFeatures.ORE_DIORITE, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(overworldStone, Blocks.DIORITE.defaultBlockState(), 33))); entries.add(OreFeatures.ORE_ANDESITE, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(overworldStone, Blocks.ANDESITE.defaultBlockState(), 33))); entries.add(OreFeatures.ORE_TUFF, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(overworldStone, Blocks.TUFF.defaultBlockState(), 33))); entries.add(ORE_DEEPSLATE_OLD, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration(overworldStone, Blocks.DEEPSLATE.defaultBlockState(), 64))); - entries.add(ORE_DIAMOND_OLD, new ConfiguredFeature<>(Feature.ORE, - new OreConfiguration( - List.of( - OreConfiguration.target(overworldStone, Blocks.DIAMOND_ORE.defaultBlockState()), - OreConfiguration.target(deepslateReplacers, Blocks.DEEPSLATE_DIAMOND_ORE.defaultBlockState()) - ), 8 - ) - )); + entries.add(ORE_DIAMOND_OLD, new ConfiguredFeature<>(Feature.ORE, new OreConfiguration( + List.of( + //~ if >=26.3 'OreConfiguration.target' -> 'BlockReplacement.replace' { + OreConfiguration.target(overworldStone, Blocks.DIAMOND_ORE.defaultBlockState()), + OreConfiguration.target(deepslateReplacers, Blocks.DEEPSLATE_DIAMOND_ORE.defaultBlockState()) + //~ } + ), 8 + ))); + //~ } //Chunk generator settings entries.add(NoiseGeneratorSettings.OVERWORLD, createVanillaSurfaceSettings(provider, false, false)); @@ -177,7 +183,9 @@ public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryPr entries.add(NoiseRouterDataAccessor.getNoodleKey(), createCavesNoodleOverworldFunction(densityFunctionLookup, noiseParametersLookup)); //Placed features + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderGetter> registryConfiguredFeature = provider.lookupOrThrow(Registries.CONFIGURED_FEATURE); + //~ if >=26.3 'new ConfiguredFeature<>(Feature.NO_OP, NoneFeatureConfiguration.NONE)' -> 'new NoOpFeature()' Holder> noOp = Holder.direct(new ConfiguredFeature<>(Feature.NO_OP, NoneFeatureConfiguration.NONE)); Holder> dirt = registryConfiguredFeature.getOrThrow(OreFeatures.ORE_DIRT); Holder> gravel = registryConfiguredFeature.getOrThrow(OreFeatures.ORE_GRAVEL); @@ -191,6 +199,7 @@ public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryPr Holder> diamond = alwaysSerializableHolder(entries.ref(ORE_DIAMOND_OLD)); Holder> lapis = registryConfiguredFeature.getOrThrow(OreFeatures.ORE_LAPIS); Holder> copperSmall = registryConfiguredFeature.getOrThrow(OreFeatures.ORE_COPPPER_SMALL); + //~ } entries.add(OrePlacements.ORE_ANDESITE_UPPER, new PlacedFeature(noOp, List.of(CountPlacement.of(0)))); entries.add(OrePlacements.ORE_ANDESITE_LOWER, new PlacedFeature(andesite, @@ -243,7 +252,11 @@ public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryPr Blocks.WATER.defaultBlockState(), mod.bluestaggo.modernerbeta.fabric.mixin.NoiseRouterDataAccessor.invokeOverworld(provider.lookupOrThrow(Registries.DENSITY_FUNCTION), provider.lookupOrThrow(Registries.NOISE), largeBiomes, amplified), + //? if >=26.3 { + /*provider.lookupOrThrow(Registries.MATERIAL_RULE).getOrThrow(net.minecraft.data.worldgen.material.OverworldMaterialRules.OVERWORLD), + *///? } else { SurfaceRuleData.overworld(/*? >=26.2 {*//*provider.lookupOrThrow(Registries.BIOME)*//*?}*/), + //? } (new OverworldBiomeBuilder()).spawnTarget(), 63, false, @@ -260,7 +273,11 @@ public class ModernBetaReducedHeightDataProvider extends FabricDynamicRegistryPr Blocks.WATER.defaultBlockState(), mod.bluestaggo.modernerbeta.fabric.mixin.NoiseRouterDataAccessor.invokeNether(provider.lookupOrThrow(Registries.DENSITY_FUNCTION), provider.lookupOrThrow(Registries.NOISE)), + //? if >=26.3 { + /*provider.lookupOrThrow(Registries.MATERIAL_RULE).getOrThrow(net.minecraft.data.worldgen.material.OverworldMaterialRules.OVERWORLD_CAVES), + *///? } else { SurfaceRuleData.overworldLike(/*? >=26.2 {*//*provider.lookupOrThrow(Registries.BIOME), *//*?}*/ false, true, true), + //? } List.of(), 32, false, diff --git a/gradle.properties b/gradle.properties index d95f5a4c..712931fe 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx4G # Build tool properties -stonecutter_version=0.9.5 +stonecutter_version=0.10-alpha.2 loom_version=1.17.+ mdg_version=2.0.140 diff --git a/settings.gradle.kts b/settings.gradle.kts index 37886887..46dc3e19 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -64,7 +64,7 @@ stonecutter { create(getRootProject()) { versions("1.20.1", "1.21.1") - versions("26.1", "26.2").buildscript("build-unobf.gradle.kts") + versions("26.1", "26.2", "26.3").buildscript("build-unobf.gradle.kts") branch("fabric") branch("forgelike") { versions("1.20.1").buildscript("build-lexforge.gradle.kts") diff --git a/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java b/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java index 2e14c384..6b258fbc 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/ModernerBeta.java @@ -10,6 +10,7 @@ import com.mojang.serialization.JsonOps; import mod.bluestaggo.modernerbeta.api.level.chunk.surface.SurfaceConfig; import mod.bluestaggo.modernerbeta.level.biome.injection.injector.BiomeInjectorType; import mod.bluestaggo.modernerbeta.level.biome.injection.predicates.InjectionPredicateType; +import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures; import mod.bluestaggo.modernerbeta.network.INetworkHelper; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; import mod.bluestaggo.modernerbeta.registry.ModernBetaRegistries; @@ -26,7 +27,6 @@ import mod.bluestaggo.modernerbeta.level.biome.provider.fractal.layers.LayerType import mod.bluestaggo.modernerbeta.level.biome.provider.fractal.predicates.BiomePredicateType; import mod.bluestaggo.modernerbeta.level.carver.ModernBetaCarvers; import mod.bluestaggo.modernerbeta.level.chunk.ModernBetaChunkGenerator; -import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures; import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFoliagePlacers; import mod.bluestaggo.modernerbeta.level.feature.ModernBetaTrunkPlacers; import mod.bluestaggo.modernerbeta.level.feature.placement.ModernBetaPlacementTypes; @@ -66,6 +66,7 @@ public class ModernerBeta { new Pair<>(BuiltInRegistries.PLACEMENT_MODIFIER_TYPE, ModernBetaPlacementTypes::register), new Pair<>(BuiltInRegistries.STRUCTURE_TYPE, ModernBetaStructureTypes::register), new Pair<>(BuiltInRegistries.STRUCTURE_PIECE, ModernBetaStructurePieceTypes::register), + //~ if >=26.3 'FEATURE' -> 'FEATURE_TYPE' new Pair<>(BuiltInRegistries.FEATURE, ModernBetaFeatures::register), new Pair<>(BuiltInRegistries.CARVER, ModernBetaCarvers::register), new Pair<>(BuiltInRegistries.BIOME_SOURCE, ModernBetaBiomeSource::register), diff --git a/src/main/java/mod/bluestaggo/modernerbeta/compat/ModCompat.java b/src/main/java/mod/bluestaggo/modernerbeta/compat/ModCompat.java index 46cb0029..0de4413e 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/compat/ModCompat.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/compat/ModCompat.java @@ -1,22 +1,26 @@ package mod.bluestaggo.modernerbeta.compat; +//? if <26.3 import com.google.common.collect.ImmutableList; -import mod.bluestaggo.modernerbeta.compat.levelgen.SurfaceRuleCompatHelper; -import mod.bluestaggo.modernerbeta.compat.levelgen.TerraBlenderCompat; +import mod.bluestaggo.modernerbeta.compat.levelgen.*; import mod.bluestaggo.modernerbeta.compat.levelgen.ValkyrienSkiesCompat; import mod.bluestaggo.modernerbeta.compat.levelgen.LevelGenCompatHelper; +//? if <26.3 import net.minecraft.world.level.levelgen.SurfaceRules; import java.util.HashSet; +//? if <26.3 import java.util.List; import java.util.Set; import java.util.function.Function; public class ModCompat { public static Set worldGenHelpers = new HashSet<>(); + //? if <26.3 public static Set surfaceRuleHelpers = new HashSet<>(); private static boolean compatChecked; + //? if <26.3 public static boolean useModernBetaSurfaceRules; public static void initialise(Function modPresenceFunction) { @@ -26,8 +30,10 @@ public class ModCompat { if (modPresenceFunction.apply("valkyrienskies")) worldGenHelpers.add(new ValkyrienSkiesCompat()); + //? if <26.3 { if (modPresenceFunction.apply("terrablender")) surfaceRuleHelpers.add(new TerraBlenderCompat()); + //? } compatChecked = true; } @@ -44,6 +50,7 @@ public class ModCompat { return false; } + //? if <26.3 { public static List getPreBedrockCustomRules() { if (surfaceRuleHelpers.isEmpty()) return List.of(); @@ -67,4 +74,5 @@ public class ModCompat { return builder.build(); } + //? } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/SurfaceRuleCompatHelper.java b/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/SurfaceRuleCompatHelper.java index 37d8eb30..8abce196 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/SurfaceRuleCompatHelper.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/SurfaceRuleCompatHelper.java @@ -1,3 +1,4 @@ +//? if <26.3 { package mod.bluestaggo.modernerbeta.compat.levelgen; import net.minecraft.world.level.levelgen.SurfaceRules; @@ -8,3 +9,4 @@ public interface SurfaceRuleCompatHelper { List getPreBedrockCustomRules(); List getPostBedrockCustomRules(); } +//? } \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/TerraBlenderCompat.java b/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/TerraBlenderCompat.java index 423e095b..1dc1daff 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/TerraBlenderCompat.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/compat/levelgen/TerraBlenderCompat.java @@ -1,3 +1,4 @@ +//? if <26.3 { package mod.bluestaggo.modernerbeta.compat.levelgen; import mod.bluestaggo.modernerbeta.util.LoggingUtil; @@ -55,3 +56,4 @@ public class TerraBlenderCompat implements SurfaceRuleCompatHelper { return List.of(); } } +//? } \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/biome/HeightConfig.java b/src/main/java/mod/bluestaggo/modernerbeta/level/biome/HeightConfig.java index 61a872db..86b8510c 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/biome/HeightConfig.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/biome/HeightConfig.java @@ -250,6 +250,11 @@ public record HeightConfig(float depth, float scale, String type) { ExtendedIdentifier.of("minecraft:pale_garden"), new HeightConfig(1.5f, 0.6f)); //?} + //? if >=26.3 { + /*majorReleaseHeightConfigs.put( + ExtendedIdentifier.of("minecraft:dappled_forest"), + new HeightConfig(0.1f, 0.4f)); + *///? } majorReleaseHeightConfigs.put( ExtendedIdentifier.of("minecraft:mangrove_swamp"), new HeightConfig(-0.2f, 0.2f)); diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaChunkGenerator.java b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaChunkGenerator.java index d42e88e8..41b7f2fc 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaChunkGenerator.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaChunkGenerator.java @@ -143,6 +143,7 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { if (noiseSettings == null && seaLevel == null && !deepslateEnabled) return unboxed; + //~ if >=26.3 '.surfaceRule()' -> '.materialRule().value()' SurfaceRules.RuleSource surfaceRules = unboxed.surfaceRule(); if (deepslateEnabled) { SurfaceRules.RuleSource deepslateRule = SurfaceRules.ifTrue( @@ -164,13 +165,16 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { } } + //? if >=26.3 + //Holder boxedSurfaceRules = Holder.direct(surfaceRules); + //noinspection deprecation unboxed = new NoiseGeneratorSettings( noiseSettings != null ? noiseSettings : unboxed.noiseSettings(), unboxed.defaultBlock(), unboxed.defaultFluid(), unboxed.noiseRouter(), - surfaceRules, + /*? >=26.3 {*/ /*boxedSurfaceRules *//*? } else {*/ surfaceRules /*? }*/, unboxed.spawnTarget(), seaLevel != null ? seaLevel : unboxed.seaLevel(), unboxed.disableMobGeneration(), @@ -219,7 +223,15 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { list.add(Holder.direct(override.getValue())); } - return ChunkGeneratorStructureStateAccessor.invokeInit(randomState, biomeSource, seed, seed, list); + return ChunkGeneratorStructureStateAccessor.invokeInit( + randomState, + biomeSource, + seed, + //? if >=26.3 + //this.getOrigin(randomState), + seed, + list + ); } @Override @@ -230,7 +242,7 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { ) { return CompletableFuture.supplyAsync(Util.name(() -> { NoiseChunk noiseSampler = chunk.getOrCreateNoiseChunk(c -> this.createNoiseChunk(c, structureAccessor, blender, noiseConfig)); - chunk.fillBiomesFromNoise(this.biomeSource, noiseSampler.cachedClimateSampler(noiseConfig.router(), this.generatorSettings().value().spawnTarget())); + chunk.fillBiomesFromNoise(this.biomeSource, noiseSampler.cachedClimateSampler(noiseConfig.router() /*? <26.3 {*/, this.generatorSettings().value().spawnTarget() /*? }*/)); return chunk; }, () -> "init_biomes"), Util.backgroundExecutor()); @@ -297,6 +309,7 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { } } + //? if <26.3 ModCompat.useModernBetaSurfaceRules = true; random.surfaceSystem() .buildSurface( @@ -308,10 +321,12 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { context, chunk, noiseChunk, + //~ if >=26.3 '.surfaceRule()' -> '.materialRule().value()' noiseGeneratorSettings.surfaceRule() //? if >=26.2 //, possibleBiomes ); + //? if <26.3 ModCompat.useModernBetaSurfaceRules = false; } @@ -341,8 +356,18 @@ public class ModernBetaChunkGenerator extends NoiseBasedChunkGenerator { NoiseChunk chunkNoiseSampler = chunk.getOrCreateNoiseChunk(c -> this.createNoiseChunk(c, structureAccessor, Blender.of(chunkRegion), noiseConfig)); Registry> configuredCarverRegistry = chunkRegion.registryAccess().lookupOrThrow(Registries.CONFIGURED_CARVER); + //? if <26.3 ModCompat.useModernBetaSurfaceRules = true; - CarvingContext carverContext = new CarvingContext(this, chunkRegion.registryAccess(), chunk.getHeightAccessorForGeneration(), chunkNoiseSampler, noiseConfig, this.generatorSettings().value().surfaceRule()); + CarvingContext carverContext = new CarvingContext( + this, + chunkRegion.registryAccess(), + chunk.getHeightAccessorForGeneration(), + chunkNoiseSampler, + noiseConfig, + //~ if >=26.3 '.surfaceRule()' -> '.materialRule().value()' + this.generatorSettings().value().surfaceRule() + ); + //? if <26.3 ModCompat.useModernBetaSurfaceRules = false; CarvingMask carvingMask = ((ProtoChunk)chunk).getOrCreateCarvingMask( //? if <1.21.2 diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaNoiseGeneratorSettings.java b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaNoiseGeneratorSettings.java index dea8ee32..1fdde6f0 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaNoiseGeneratorSettings.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaNoiseGeneratorSettings.java @@ -101,9 +101,24 @@ public class ModernBetaNoiseGeneratorSettings { ) { HolderGetter densityFunctionLookup = context.lookup(Registries.DENSITY_FUNCTION); HolderGetter noiseParametersLookup = context.lookup(Registries.NOISE); + //? if >=26.3 { + /*HolderGetter materialRuleLookup = context.lookup(Registries.MATERIAL_RULE); + *///? } else { HolderGetter biomeLookup = context.lookup(Registries.BIOME); + //? } - return createNoiseGeneratorSettings(densityFunctionLookup, noiseParametersLookup, biomeLookup, shapeConfig, seaLevel, useAquifers); + return createNoiseGeneratorSettings( + densityFunctionLookup, + noiseParametersLookup, + //? if >=26.3 { + /*materialRuleLookup, + *///? } else { + biomeLookup, + //? } + shapeConfig, + seaLevel, + useAquifers + ); } public static NoiseGeneratorSettings createNoiseGeneratorSettings( @@ -114,19 +129,39 @@ public class ModernBetaNoiseGeneratorSettings { ) { HolderGetter densityFunctionLookup = lookup.lookupOrThrow(Registries.DENSITY_FUNCTION); HolderGetter noiseParametersLookup = lookup.lookupOrThrow(Registries.NOISE); + //? if >=26.3 { + /*HolderGetter materialRuleLookup = lookup.lookupOrThrow(Registries.MATERIAL_RULE); + *///? } else { HolderGetter biomeLookup = lookup.lookupOrThrow(Registries.BIOME); + //? } - return createNoiseGeneratorSettings(densityFunctionLookup, noiseParametersLookup, biomeLookup, shapeConfig, seaLevel, useAquifers); + return createNoiseGeneratorSettings( + densityFunctionLookup, + noiseParametersLookup, + //? if >=26.3 { + /*materialRuleLookup, + *///? } else { + biomeLookup, + //? } + shapeConfig, + seaLevel, + useAquifers + ); } private static NoiseGeneratorSettings createNoiseGeneratorSettings( HolderGetter densityFunctionLookup, HolderGetter noiseParametersLookup, + //? if >=26.3 { + /*HolderGetter materialRuleLookup, + *///? } else { HolderGetter biomeLookup, + //? } NoiseSettings shapeConfig, int seaLevel, boolean useAquifers ) { + //? if <26.3 SurfaceRules.RuleSource materialRule = ModernBetaSurfaceRuleData.overworldLike(biomeLookup, true, false, false, false); return new NoiseGeneratorSettings( @@ -134,7 +169,7 @@ public class ModernBetaNoiseGeneratorSettings { BlockStates.STONE, BlockStates.WATER, createDensityFunctions(densityFunctionLookup, noiseParametersLookup), - materialRule, + /*? >=26.3 {*/ /*materialRuleLookup.getOrThrow(net.minecraft.data.worldgen.material.OverworldMaterialRules.OVERWORLD) *//*? } else {*/ materialRule /*? }*/, List.of(), seaLevel, false, diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaSurfaceRuleData.java b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaSurfaceRuleData.java index b1530057..d325dd5d 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaSurfaceRuleData.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/chunk/ModernBetaSurfaceRuleData.java @@ -1,3 +1,4 @@ +//? if <26.3 { package mod.bluestaggo.modernerbeta.level.chunk; import com.google.common.collect.ImmutableList; @@ -348,3 +349,4 @@ public class ModernBetaSurfaceRuleData { return SurfaceRules.noiseCondition(noise, minRange, maxRange); } } +//? } \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaOreClayFeature.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaOreClayFeature.java index 3faf9cbd..0c236177 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaOreClayFeature.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaOreClayFeature.java @@ -1,6 +1,5 @@ package mod.bluestaggo.modernerbeta.level.feature; -import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.util.Mth; @@ -10,27 +9,62 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.BulkSectionAccess; import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; -import net.minecraft.world.level.levelgen.feature.OreFeature; +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.3 import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import java.util.List; + +//~ if >=26.3 'Feature' -> 'AbstractOreFeature' public class BetaOreClayFeature extends Feature { - public BetaOreClayFeature(Codec configCodec) { + //? if >=26.3 { + /*public static final com.mojang.serialization.MapCodec CODEC = makeCodec(BetaOreClayFeature::new); + + public BetaOreClayFeature(List targetStates, int size, float discardChanceOnAirExposure) { + super(targetStates, size, discardChanceOnAirExposure); + } + + public BetaOreClayFeature( + net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest target, + BlockState state, + int size + ) { + this(List.of(new BlockReplacement(target, state)), size, 0.0F); + } + + @Override + public com.mojang.serialization.MapCodec codec() { + return CODEC; + } + *///? } else { + public BetaOreClayFeature(com.mojang.serialization.Codec configCodec) { super(configCodec); } + //? } @Override - public boolean place(FeaturePlaceContext context) { + public boolean place( + //? if >=26.3 { + /*WorldGenLevel level, + net.minecraft.world.level.chunk.ChunkGenerator chunkGenerator, + RandomSource random, + BlockPos pos + *///? } else { + FeaturePlaceContext context + //? } + ) { + //? if <26.3 { WorldGenLevel level = context.level(); BlockPos pos = context.origin(); OreConfiguration config = context.config(); RandomSource random = context.random(); + //? } int baseX = pos.getX(); int baseY = pos.getY(); int baseZ = pos.getZ(); - + + //~ if >=26.3 'config.' -> 'this.' int numberOfBlocks = config.size; BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); @@ -86,9 +120,12 @@ public class BetaOreClayFeature extends Feature { int localY = SectionPos.sectionRelative(y); int localZ = SectionPos.sectionRelative(z); BlockState state = chunkSection.getBlockState(localX, localY, localZ); - + + //~ if >=26.3 'OreConfiguration.TargetBlockState' -> 'BlockReplacement', 'config.' -> 'this.' for (final OreConfiguration.TargetBlockState target : config.targetStates) { - if (OreFeature.canPlaceOre(state, chunkSectionCache::getBlockState, random, config, target, mutablePos)) { + //~ if >=26.3 'OreFeature.' -> 'this.' + if (OreFeature.canPlaceOre(state, chunkSectionCache::getBlockState, random, /*? <26.3 {*/config, /*? }*/ target, mutablePos)) { + //~ if >=26.3 '.state' -> '.state()' chunkSection.setBlockState(localX, localY, localZ, target.state, false); } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaSnowAndFreezeFeature.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaSnowAndFreezeFeature.java index 27ead454..de21b9c0 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaSnowAndFreezeFeature.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/BetaSnowAndFreezeFeature.java @@ -1,6 +1,5 @@ package mod.bluestaggo.modernerbeta.level.feature; -import com.mojang.serialization.Codec; import mod.bluestaggo.modernerbeta.api.level.biome.climate.TemperatureHeightScaling; import mod.bluestaggo.modernerbeta.api.level.biome.climate.ClimateSampler; import mod.bluestaggo.modernerbeta.level.biome.ClimateHelper; @@ -18,20 +17,48 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.feature.Feature; +//? if <26.3 { import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; +//? } +//~ if >=26.3 'extends Feature' -> 'implements Feature' public class BetaSnowAndFreezeFeature extends Feature { - public BetaSnowAndFreezeFeature(Codec codec) { + //? if >=26.3 { + /*public static final BetaSnowAndFreezeFeature INSTANCE = new BetaSnowAndFreezeFeature(); + public static final com.mojang.serialization.MapCodec CODEC = + com.mojang.serialization.MapCodec.unit(INSTANCE); + + public BetaSnowAndFreezeFeature() { + } + + @Override + public com.mojang.serialization.MapCodec codec() { + return CODEC; + } + *///? } else { + public BetaSnowAndFreezeFeature(com.mojang.serialization.Codec codec) { super(codec); } + //? } @Override - public boolean place(FeaturePlaceContext context) { + public boolean place( + //? if >=26.3 { + /*WorldGenLevel level, + ChunkGenerator chunkGenerator, + net.minecraft.util.RandomSource random, + BlockPos pos + *///? } else { + FeaturePlaceContext context + //? } + ) { + //? if <26.3 { WorldGenLevel level = context.level(); BlockPos pos = context.origin(); - ChunkGenerator chunkGenerator = context.chunkGenerator(); + //? } + BiomeSource biomeSource = chunkGenerator.getBiomeSource(); setFreezeTopLayer(level, pos, biomeSource, false); diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/CaveInfdev325Feature.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/CaveInfdev325Feature.java index 9563dd1e..286ef574 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/CaveInfdev325Feature.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/CaveInfdev325Feature.java @@ -1,6 +1,5 @@ package mod.bluestaggo.modernerbeta.level.feature; -import com.mojang.serialization.Codec; import net.minecraft.core.BlockPos; import net.minecraft.core.SectionPos; import net.minecraft.util.Mth; @@ -10,27 +9,62 @@ import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.chunk.BulkSectionAccess; import net.minecraft.world.level.chunk.LevelChunkSection; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; -import net.minecraft.world.level.levelgen.feature.OreFeature; +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.3 import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +import java.util.List; + +//~ if >=26.3 'Feature' -> 'AbstractOreFeature' public class CaveInfdev325Feature extends Feature { - public CaveInfdev325Feature(Codec codec) { - super(codec); + //? if >=26.3 { + /*public static final com.mojang.serialization.MapCodec CODEC = makeCodec(CaveInfdev325Feature::new); + + public CaveInfdev325Feature(List targetStates, int size, float discardChanceOnAirExposure) { + super(targetStates, size, discardChanceOnAirExposure); + } + + public CaveInfdev325Feature( + net.minecraft.world.level.levelgen.structure.templatesystem.RuleTest target, + BlockState state, + int size + ) { + this(List.of(new BlockReplacement(target, state)), size, 0.0F); + } + + @Override + public com.mojang.serialization.MapCodec codec() { + return CODEC; + } + *///? } else { + public CaveInfdev325Feature(com.mojang.serialization.Codec configCodec) { + super(configCodec); } + //? } @Override - public boolean place(FeaturePlaceContext context) { + public boolean place( + //? if >=26.3 { + /*WorldGenLevel level, + net.minecraft.world.level.chunk.ChunkGenerator chunkGenerator, + RandomSource random, + BlockPos pos + *///? } else { + FeaturePlaceContext context + //? } + ) { + //? if <26.3 { WorldGenLevel level = context.level(); BlockPos pos = context.origin(); OreConfiguration config = context.config(); RandomSource random = context.random(); + //? } int baseX = pos.getX(); int baseY = pos.getY(); int baseZ = pos.getZ(); + //~ if >=26.3 'config.' -> 'this.' int numberOfBlocks = config.size; BlockPos.MutableBlockPos mutablePos = new BlockPos.MutableBlockPos(); @@ -90,8 +124,11 @@ public class CaveInfdev325Feature extends Feature { int localZ = SectionPos.sectionRelative(z); BlockState state = chunkSection.getBlockState(localX, localY, localZ); + //~ if >=26.3 'OreConfiguration.TargetBlockState' -> 'BlockReplacement', 'config.' -> 'this.' for (final OreConfiguration.TargetBlockState target : config.targetStates) { - if (OreFeature.canPlaceOre(state, chunkSectionCache::getBlockState, random, config, target, mutablePos)) { + //~ if >=26.3 'OreFeature.' -> 'this.' + if (OreFeature.canPlaceOre(state, chunkSectionCache::getBlockState, random, /*? <26.3 {*/config, /*? }*/ target, mutablePos)) { + //~ if >=26.3 '.state' -> '.state()' chunkSection.setBlockState(localX, localY, localZ, target.state, false); } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/ModernBetaFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/ModernBetaFeatures.java index 1b9cf9c0..8e11f339 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/ModernBetaFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/ModernBetaFeatures.java @@ -1,23 +1,38 @@ package mod.bluestaggo.modernerbeta.level.feature; +//? if >=26.3 +//import com.mojang.serialization.MapCodec; import mod.bluestaggo.modernerbeta.ModernerBeta; import mod.bluestaggo.modernerbeta.registry.IRegistryHandler; import net.minecraft.world.level.levelgen.feature.Feature; +//? if <26.3 { import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; +//? } public class ModernBetaFeatures { + //~ if >=26.3 'Feature' -> 'MapCodec' private static IRegistryHandler> registryHandler; + //? if <26.3 { public static BetaSnowAndFreezeFeature SNOW_AND_FREEZE; public static BetaOreClayFeature ORE_CLAY; public static CaveInfdev325Feature CAVE_INFDEV_325; + //? } + //~ if >=26.3 '> F' -> ' MapCodec', 'F' -> 'MapCodec' private static > F register(String id, F feature) { return registryHandler.register(ModernerBeta.createId(id), feature); } @SuppressWarnings("unchecked") public static void register(IRegistryHandler handler) { + //? if >=26.3 { + /*registryHandler = (IRegistryHandler>) handler ; + + register(ModernBetaFeatureTags.SNOW_AND_FREEZE, BetaSnowAndFreezeFeature.CODEC); + register(ModernBetaFeatureTags.ORE_CLAY, BetaOreClayFeature.CODEC); + register(ModernBetaFeatureTags.CAVE_INFDEV_325, CaveInfdev325Feature.CODEC); + *///? } else { registryHandler = (IRegistryHandler>) handler; SNOW_AND_FREEZE = register( ModernBetaFeatureTags.SNOW_AND_FREEZE, new BetaSnowAndFreezeFeature(NoneFeatureConfiguration.CODEC) @@ -30,5 +45,6 @@ public class ModernBetaFeatures { CAVE_INFDEV_325 = register( ModernBetaFeatureTags.CAVE_INFDEV_325, new CaveInfdev325Feature(OreConfiguration.CODEC) ); + //? } } } \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaConfiguredFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaConfiguredFeatures.java index 5fd80010..8e7aea50 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaConfiguredFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaConfiguredFeatures.java @@ -4,7 +4,11 @@ import mod.bluestaggo.modernerbeta.ModernerBeta; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.resources.ResourceKey; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } public class ModernBetaConfiguredFeatures { public static void bootstrap(BootstrapContext context) { @@ -13,8 +17,10 @@ public class ModernBetaConfiguredFeatures { ModernBetaTreeConfiguredFeatures.bootstrap(context); ModernBetaVegetationConfiguredFeatures.bootstrap(context); } - + + //~ if >=26.3 'ConfiguredFeature' -> 'Feature' public static ResourceKey> of(String id) { + //~ if >=26.3 'CONFIGURED_FEATURE' -> 'FEATURE' return ResourceKey.create(Registries.CONFIGURED_FEATURE, ModernerBeta.createId(id)); } -} +} \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaMiscConfiguredFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaMiscConfiguredFeatures.java index ba3f16c1..98063a3a 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaMiscConfiguredFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaMiscConfiguredFeatures.java @@ -1,19 +1,29 @@ package mod.bluestaggo.modernerbeta.level.feature.configured; import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatureTags; -import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures; import net.minecraft.data.worldgen.BootstrapContext; -import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.resources.ResourceKey; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } public class ModernBetaMiscConfiguredFeatures { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' public static final ResourceKey> FREEZE_TOP_LAYER = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.SNOW_AND_FREEZE); @SuppressWarnings("unchecked") public static void bootstrap(BootstrapContext context) { + + //? if >=26.3 { + /*BootstrapContext featureContext = (BootstrapContext)context; + + featureContext.register(FREEZE_TOP_LAYER, mod.bluestaggo.modernerbeta.level.feature.BetaSnowAndFreezeFeature.INSTANCE); + *///? } else { BootstrapContext> featureContext = (BootstrapContext>)context; - - FeatureUtils.register(featureContext, FREEZE_TOP_LAYER, ModernBetaFeatures.SNOW_AND_FREEZE); + + net.minecraft.data.worldgen.features.FeatureUtils.register(featureContext, FREEZE_TOP_LAYER, mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures.SNOW_AND_FREEZE); + //? } } -} +} \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaOreConfiguredFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaOreConfiguredFeatures.java index e571beee..c2d54502 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaOreConfiguredFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaOreConfiguredFeatures.java @@ -2,14 +2,14 @@ package mod.bluestaggo.modernerbeta.level.feature.configured; import mod.bluestaggo.modernerbeta.util.BlockStates; import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatureTags; -import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures; import net.minecraft.data.worldgen.BootstrapContext; +//? if <26.3 import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.tags.BlockTags; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.Feature; +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.3 import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration; import net.minecraft.world.level.levelgen.structure.templatesystem.AlwaysTrueTest; import net.minecraft.world.level.levelgen.structure.templatesystem.BlockMatchTest; @@ -18,17 +18,18 @@ import net.minecraft.world.level.levelgen.structure.templatesystem.TagMatchTest; import java.util.List; public class ModernBetaOreConfiguredFeatures { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' { public static final ResourceKey> ORE_CLAY = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.ORE_CLAY); public static final ResourceKey> ORE_EMERALD_Y95 = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.ORE_EMERALD_Y95); public static final ResourceKey> CAVE_INFDEV_325 = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.CAVE_INFDEV_325); + //~ } @SuppressWarnings("unchecked") public static void bootstrap(BootstrapContext context) { - BootstrapContext> featureContext = (BootstrapContext>)context; - TagMatchTest ruleStone = new TagMatchTest(BlockTags.STONE_ORE_REPLACEABLES); TagMatchTest ruleDeepslate = new TagMatchTest(BlockTags.DEEPSLATE_ORE_REPLACEABLES); + //~ if >=26.3 'OreConfiguration.TargetBlockState' -> 'BlockReplacement', 'OreConfiguration.target' -> 'BlockReplacement.replace' { List emeraldTargets = List.of( OreConfiguration.target(ruleStone, Blocks.EMERALD_ORE.defaultBlockState()), OreConfiguration.target(ruleDeepslate, Blocks.DEEPSLATE_EMERALD_ORE.defaultBlockState()) @@ -38,9 +39,20 @@ public class ModernBetaOreConfiguredFeatures { OreConfiguration.target(new BlockMatchTest(Blocks.WATER), BlockStates.WATER), OreConfiguration.target(new BlockMatchTest(Blocks.LAVA), BlockStates.LAVA) ); - - FeatureUtils.register(featureContext, ORE_CLAY, ModernBetaFeatures.ORE_CLAY, new OreConfiguration(new BlockMatchTest(Blocks.SAND), Blocks.CLAY.defaultBlockState(), 33)); + //~ } + + //? if >=26.3 { + /*BootstrapContext featureContext = (BootstrapContext)context; + + featureContext.register(ORE_CLAY, new mod.bluestaggo.modernerbeta.level.feature.BetaOreClayFeature(new BlockMatchTest(Blocks.SAND), Blocks.CLAY.defaultBlockState(), 33)); + featureContext.register(ORE_EMERALD_Y95, new OreFeature(emeraldTargets, 8, 0.9f)); + featureContext.register(CAVE_INFDEV_325, new mod.bluestaggo.modernerbeta.level.feature.CaveInfdev325Feature(caveTargets, 16, 0.0f)); + *///? } else { + BootstrapContext> featureContext = (BootstrapContext>)context; + + FeatureUtils.register(featureContext, ORE_CLAY, mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures.ORE_CLAY, new OreConfiguration(new BlockMatchTest(Blocks.SAND), Blocks.CLAY.defaultBlockState(), 33)); FeatureUtils.register(featureContext, ORE_EMERALD_Y95, Feature.ORE, new OreConfiguration(emeraldTargets, 8, 0.9f)); - FeatureUtils.register(featureContext, CAVE_INFDEV_325, ModernBetaFeatures.CAVE_INFDEV_325, new OreConfiguration(caveTargets, 16, 0.0f)); + FeatureUtils.register(featureContext, CAVE_INFDEV_325, mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatures.CAVE_INFDEV_325, new OreConfiguration(caveTargets, 16, 0.0f)); + //? } } -} +} \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaTreeConfiguredFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaTreeConfiguredFeatures.java index 4a823e09..e0e00b5d 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaTreeConfiguredFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaTreeConfiguredFeatures.java @@ -5,13 +5,18 @@ import mod.bluestaggo.modernerbeta.level.feature.foliage.BetaLargeOakFoliagePlac import mod.bluestaggo.modernerbeta.level.feature.foliage.Oak14a08FoliagePlacer; import mod.bluestaggo.modernerbeta.level.feature.trunk.BetaLargeOakTrunkPlacer; import net.minecraft.data.worldgen.BootstrapContext; +//? if <26.3 import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.util.valueproviders.ConstantInt; import net.minecraft.world.level.block.Blocks; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.Feature; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.TreeFeature; +*///? } else { +import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; +//? } import net.minecraft.world.level.levelgen.feature.featuresize.TwoLayersFeatureSize; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import net.minecraft.world.level.levelgen.feature.treedecorators.BeehiveDecorator; @@ -21,19 +26,30 @@ import java.util.List; import java.util.OptionalInt; public class ModernBetaTreeConfiguredFeatures { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' { public static final ResourceKey> FANCY_OAK = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.FANCY_OAK); public static final ResourceKey> OAK_14A_08 = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.OAK_14A_08); public static final ResourceKey> OAK_14A_08_BEES_0002 = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.OAK_14A_08_BEES_0002); + //~ } @SuppressWarnings("unchecked") public static void bootstrap(BootstrapContext context) { + //? if >=26.3 { + /*BootstrapContext featureContext = (BootstrapContext)context; + + featureContext.register(FANCY_OAK, getOldFancyTreeConfig(context)); + featureContext.register(OAK_14A_08, getOak14a08Config(context, false)); + featureContext.register(OAK_14A_08_BEES_0002, getOak14a08Config(context, true)); + *///? } else { BootstrapContext> featureContext = (BootstrapContext>)context; FeatureUtils.register(featureContext, FANCY_OAK, Feature.TREE, getOldFancyTreeConfig(context)); FeatureUtils.register(featureContext, OAK_14A_08, Feature.TREE, getOak14a08Config(context, false)); FeatureUtils.register(featureContext, OAK_14A_08_BEES_0002, Feature.TREE, getOak14a08Config(context, true)); + //? } } + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature', '.TreeConfigurationBuilder' -> '.Builder' { private static TreeConfiguration getOak14a08Config(BootstrapContext context, boolean bees) { //? >=26.2 //net.minecraft.core.HolderGetter biomes = context.lookup(net.minecraft.core.registries.Registries.BIOME); @@ -71,4 +87,5 @@ public class ModernBetaTreeConfiguredFeatures { return builder.build(); } -} + //~ } +} \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaVegetationConfiguredFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaVegetationConfiguredFeatures.java index dc787fb5..f6b7fa9f 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaVegetationConfiguredFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/configured/ModernBetaVegetationConfiguredFeatures.java @@ -8,6 +8,7 @@ import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; +//? if <26.3 import net.minecraft.data.worldgen.features.FeatureUtils; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.data.worldgen.placement.TreePlacements; @@ -16,19 +17,21 @@ import net.minecraft.util.random.WeightedList; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; -import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; -import net.minecraft.world.level.levelgen.feature.Feature; -import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature; -import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration; -//? <26.1 +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.1 //import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConfiguration; +//? if <26.3 { +import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; +import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration; +//? } import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import java.util.List; +@SuppressWarnings("deprecation") public class ModernBetaVegetationConfiguredFeatures { private static final ResourceKey OAK_BEES_0002 = //? if >=1.21.5 { @@ -37,6 +40,7 @@ public class ModernBetaVegetationConfiguredFeatures { /*TreePlacements.OAK_BEES_0002; *///? } + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>' { public static final ResourceKey> MUSHROOM_HELL = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.MUSHROOM_HELL); //? if >=26.1 { public static final ResourceKey> DANDELION = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.DANDELION); @@ -98,18 +102,20 @@ public class ModernBetaVegetationConfiguredFeatures { public static final ResourceKey> TREES_INDEV_BEES = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.TREES_INDEV_BEES); public static final ResourceKey> TREES_INDEV_WOODS_BEES = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.TREES_INDEV_WOODS_BEES); public static final ResourceKey> TREES_CLASSIC_14A_08_BEES = ModernBetaConfiguredFeatures.of(ModernBetaFeatureTags.TREES_CLASSIC_14A_08_BEES); + //~ } @SuppressWarnings("unchecked") public static void bootstrap(BootstrapContext context) { + //~ if >=26.3 'ConfiguredFeature' -> 'Feature' BootstrapContext> featureContext = (BootstrapContext>)context; HolderGetter registryPlaced = featureContext.lookup(Registries.PLACED_FEATURE); //? if >=26.1 { - FeatureUtils.register(featureContext, MUSHROOM_HELL, Feature.SIMPLE_BLOCK, ModernBetaRandomPatchConfigs.MUSHROOM_HELL_FEATURE_CONFIG); - FeatureUtils.register(featureContext, DANDELION, Feature.SIMPLE_BLOCK, ModernBetaRandomPatchConfigs.DANDELION_FEATURE_CONFIG); - FeatureUtils.register(featureContext, POPPY, Feature.SIMPLE_BLOCK, ModernBetaRandomPatchConfigs.POPPY_FEATURE_CONFIG); - FeatureUtils.register(featureContext, GRASS, Feature.SIMPLE_BLOCK, ModernBetaRandomPatchConfigs.GRASS_FEATURE_CONFIG); - FeatureUtils.register(featureContext, GRASS_LUSH, Feature.SIMPLE_BLOCK, ModernBetaRandomPatchConfigs.LUSH_GRASS_FEATURE_CONFIG); + registerSimpleBlock(featureContext, MUSHROOM_HELL, ModernBetaRandomPatchConfigs.MUSHROOM_HELL_FEATURE_CONFIG); + registerSimpleBlock(featureContext, DANDELION, ModernBetaRandomPatchConfigs.DANDELION_FEATURE_CONFIG); + registerSimpleBlock(featureContext, POPPY, ModernBetaRandomPatchConfigs.POPPY_FEATURE_CONFIG); + registerSimpleBlock(featureContext, GRASS, ModernBetaRandomPatchConfigs.GRASS_FEATURE_CONFIG); + registerSimpleBlock(featureContext, GRASS_LUSH, ModernBetaRandomPatchConfigs.LUSH_GRASS_FEATURE_CONFIG); //? } else { /*FeatureUtils.register(featureContext, MUSHROOM_HELL, Feature.FLOWER, ModernBetaRandomPatchConfigs.MUSHROOM_HELL); FeatureUtils.register(featureContext, PATCH_BROWN_MUSHROOM, Feature.RANDOM_PATCH, ModernBetaRandomPatchConfigs.BROWN_MUSHROOM); @@ -121,53 +127,84 @@ public class ModernBetaVegetationConfiguredFeatures { FeatureUtils.register(featureContext, PATCH_GRASS_LUSH, Feature.RANDOM_PATCH, ModernBetaRandomPatchConfigs.LUSH_GRASS_CONFIG); *///? } - FeatureUtils.register(featureContext, TREES_ALPHA, Feature.RANDOM_SELECTOR, createDefaultRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INFDEV_611, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INFDEV_420, Feature.RANDOM_SELECTOR, createInfdevRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INFDEV_415, Feature.RANDOM_SELECTOR, createInfdevRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INFDEV_325, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INFDEV_227, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_ALPHA, createDefaultRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INFDEV_611, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INFDEV_420, createInfdevRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INFDEV_415, createInfdevRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INFDEV_325, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INFDEV_227, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_ALPHA_BEES, Feature.RANDOM_SELECTOR, createDefaultRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INFDEV_611_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INFDEV_420_BEES, Feature.RANDOM_SELECTOR, createInfdevRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INFDEV_415_BEES, Feature.RANDOM_SELECTOR, createInfdevRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INFDEV_325_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INFDEV_227_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - - FeatureUtils.register(featureContext, TREES_BETA_FOREST, Feature.RANDOM_SELECTOR, createForestRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_BETA_RAINFOREST, Feature.RANDOM_SELECTOR, createRainforestRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_BETA_SEASONAL_FOREST, Feature.RANDOM_SELECTOR, createSeasonalForestRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_BETA_SPARSE, Feature.RANDOM_SELECTOR, createDefaultRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_BETA_TAIGA, Feature.RANDOM_SELECTOR, createTaigaRandomTreeConfig(registryPlaced)); - FeatureUtils.register(featureContext, TREES_BETA_OAK_FOREST, Feature.RANDOM_SELECTOR, createOakForestRandomTreeConfig(registryPlaced, false)); - - FeatureUtils.register(featureContext, TREES_BETA_FOREST_BEES, Feature.RANDOM_SELECTOR, createForestRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_BETA_RAINFOREST_BEES, Feature.RANDOM_SELECTOR, createRainforestRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_BETA_SEASONAL_FOREST_BEES, Feature.RANDOM_SELECTOR, createSeasonalForestRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_BETA_SPARSE_BEES, Feature.RANDOM_SELECTOR, createDefaultRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_BETA_OAK_FOREST_BEES, Feature.RANDOM_SELECTOR, createOakForestRandomTreeConfig(registryPlaced, true)); - - FeatureUtils.register(featureContext, TREES_PE_FOREST, Feature.RANDOM_SELECTOR, createPEForestRandomTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_PE_RAINFOREST, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_PE_SEASONAL_FOREST, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_PE_SPARSE, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_PE_TAIGA, Feature.RANDOM_SELECTOR, createTaigaRandomTreeConfig(registryPlaced)); + registerRandomSelector(featureContext, TREES_ALPHA_BEES, createDefaultRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INFDEV_611_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INFDEV_420_BEES, createInfdevRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INFDEV_415_BEES, createInfdevRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INFDEV_325_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INFDEV_227_BEES, createOakTreeConfig(registryPlaced, true)); + + registerRandomSelector(featureContext, TREES_BETA_FOREST, createForestRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_BETA_RAINFOREST, createRainforestRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_BETA_SEASONAL_FOREST, createSeasonalForestRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_BETA_SPARSE, createDefaultRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_BETA_TAIGA, createTaigaRandomTreeConfig(registryPlaced)); + registerRandomSelector(featureContext, TREES_BETA_OAK_FOREST, createOakForestRandomTreeConfig(registryPlaced, false)); + + registerRandomSelector(featureContext, TREES_BETA_FOREST_BEES, createForestRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_BETA_RAINFOREST_BEES, createRainforestRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_BETA_SEASONAL_FOREST_BEES, createSeasonalForestRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_BETA_SPARSE_BEES, createDefaultRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_BETA_OAK_FOREST_BEES, createOakForestRandomTreeConfig(registryPlaced, true)); + + registerRandomSelector(featureContext, TREES_PE_FOREST, createPEForestRandomTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_PE_RAINFOREST, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_PE_SEASONAL_FOREST, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_PE_SPARSE, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_PE_TAIGA, createTaigaRandomTreeConfig(registryPlaced)); - FeatureUtils.register(featureContext, TREES_PE_FOREST_BEES, Feature.RANDOM_SELECTOR, createPEForestRandomTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_PE_RAINFOREST_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_PE_SEASONAL_FOREST_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_PE_SPARSE_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_PE_FOREST_BEES, createPEForestRandomTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_PE_RAINFOREST_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_PE_SEASONAL_FOREST_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_PE_SPARSE_BEES, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INDEV, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_INDEV_WOODS, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, false)); - FeatureUtils.register(featureContext, TREES_CLASSIC_14A_08, Feature.RANDOM_SELECTOR, createOak14a08TreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INDEV, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_INDEV_WOODS, createOakTreeConfig(registryPlaced, false)); + registerRandomSelector(featureContext, TREES_CLASSIC_14A_08, createOak14a08TreeConfig(registryPlaced, false)); + + registerRandomSelector(featureContext, TREES_INDEV_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_INDEV_WOODS_BEES, createOakTreeConfig(registryPlaced, true)); + registerRandomSelector(featureContext, TREES_CLASSIC_14A_08_BEES, createOak14a08TreeConfig(registryPlaced, false)); + } - FeatureUtils.register(featureContext, TREES_INDEV_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_INDEV_WOODS_BEES, Feature.RANDOM_SELECTOR, createOakTreeConfig(registryPlaced, true)); - FeatureUtils.register(featureContext, TREES_CLASSIC_14A_08_BEES, Feature.RANDOM_SELECTOR, createOak14a08TreeConfig(registryPlaced, false)); + //? if >=26.1 { + @SuppressWarnings("unchecked") + private static void registerSimpleBlock(BootstrapContext context, ResourceKey key, Object value) { + //? if >=26.3 { + /*context.register(key, (T) value); + *///? } else { + FeatureUtils.register( + (BootstrapContext>) context, + (ResourceKey>) key, + Feature.SIMPLE_BLOCK, + (SimpleBlockConfiguration) value + ); + //? } } + //? } + @SuppressWarnings("unchecked") + private static void registerRandomSelector(BootstrapContext context, ResourceKey key, Object value) { + //? if >=26.3 { + /*context.register(key, (T) value); + *///? } else { + FeatureUtils.register( + (BootstrapContext>) context, + (ResourceKey>) key, + Feature.RANDOM_SELECTOR, + (RandomFeatureConfiguration) value + ); + //? } + } + + //~ if >=26.3 'RandomFeatureConfiguration' -> 'RandomSelectorFeature' { private static RandomFeatureConfiguration createOakTreeConfig(HolderGetter registryPlaced, boolean bees) { Holder.Reference oak = registryPlaced.getOrThrow(TreePlacements.OAK_CHECKED); Holder.Reference oakBees = registryPlaced.getOrThrow(OAK_BEES_0002); @@ -307,6 +344,7 @@ public class ModernBetaVegetationConfiguredFeatures { return new RandomFeatureConfiguration(List.of(), bees ? oakBees : oak); } + //~ } private static WeightedPlacedFeature withChance(Holder feature, float chance) { return new WeightedPlacedFeature(feature, chance); @@ -317,7 +355,8 @@ public class ModernBetaVegetationConfiguredFeatures { private static final int Y_SPREAD = 3; private static final int TRIES = 64; private static final int GRASS_TRIES = 64; - + + //~ if >=26.3 'SimpleBlockConfiguration' -> 'SimpleBlockFeature' { public static final SimpleBlockConfiguration DANDELION_FEATURE_CONFIG; public static final SimpleBlockConfiguration POPPY_FEATURE_CONFIG; @@ -381,5 +420,6 @@ public class ModernBetaVegetationConfiguredFeatures { MUSHROOM_HELL = createRandomPatchFeatureConfig(TRIES, MUSHROOM_HELL_FEATURE_CONFIG); *///? } } + //~ } } -} +} \ No newline at end of file diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/BetaLargeOakFoliagePlacer.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/BetaLargeOakFoliagePlacer.java index bb5f96fb..333122da 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/BetaLargeOakFoliagePlacer.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/BetaLargeOakFoliagePlacer.java @@ -7,7 +7,11 @@ import net.minecraft.util.Mth; import net.minecraft.util.RandomSource; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.level.WorldGenLevel; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.TreeFeature; +*///? } else { import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; +//? } import net.minecraft.world.level.levelgen.feature.foliageplacers.BlobFoliagePlacer; import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; import org.jetbrains.annotations.NotNull; @@ -26,12 +30,13 @@ public class BetaLargeOakFoliagePlacer extends BlobFoliagePlacer { } @Override - protected void createFoliage(WorldGenLevel level, FoliageSetter placer, RandomSource random, TreeConfiguration config, int trunkHeight, FoliageAttachment treeNode, int foliageHeight, int radius, int offset) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + protected void createFoliage(WorldGenLevel level, FoliageSetter placer, RandomSource random, TreeConfiguration tree, int trunkHeight, FoliageAttachment treeNode, int foliageHeight, int radius, int offset) { for (int curY = offset; curY >= offset - foliageHeight; curY--) { float blobRadius = curY != offset && curY != offset - foliageHeight ? radius + 1 : radius; // Generate blob layer at curY - this.placeLeavesRow(level, placer, random, config, treeNode.pos(), (int) (blobRadius + 0.618D), curY, treeNode.doubleTrunk()); + this.placeLeavesRow(level, placer, random, tree, treeNode.pos(), (int) (blobRadius + 0.618D), curY, treeNode.doubleTrunk()); } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/Oak14a08FoliagePlacer.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/Oak14a08FoliagePlacer.java index 9450de18..07020fbd 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/Oak14a08FoliagePlacer.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/foliage/Oak14a08FoliagePlacer.java @@ -7,7 +7,11 @@ import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFoliagePlacers; import net.minecraft.util.RandomSource; import net.minecraft.util.valueproviders.IntProvider; import net.minecraft.world.level.WorldGenLevel; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.TreeFeature; +*///? } else { import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; +//? } import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacerType; import org.jetbrains.annotations.NotNull; @@ -30,14 +34,16 @@ public class Oak14a08FoliagePlacer extends FoliagePlacer { } @Override - protected void createFoliage(WorldGenLevel level, FoliageSetter placer, RandomSource random, TreeConfiguration config, int trunkHeight, FoliageAttachment treeNode, int foliageHeight, int radius, int offset) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + protected void createFoliage(WorldGenLevel level, FoliageSetter placer, RandomSource random, TreeConfiguration tree, int trunkHeight, FoliageAttachment treeNode, int foliageHeight, int radius, int offset) { for (int y = offset; y >= offset - foliageHeight; --y) { - this.placeLeavesRow(level, placer, random, config, treeNode.pos(), radius, y, treeNode.doubleTrunk()); + this.placeLeavesRow(level, placer, random, tree, treeNode.pos(), radius, y, treeNode.doubleTrunk()); } } @Override - public int foliageHeight(RandomSource random, int trunkHeight, TreeConfiguration config) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + public int foliageHeight(RandomSource random, int trunkHeight, TreeConfiguration tree) { return this.height; } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaMiscPlacedFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaMiscPlacedFeatures.java index 5ec9bed0..c20b27e4 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaMiscPlacedFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaMiscPlacedFeatures.java @@ -8,7 +8,11 @@ import net.minecraft.core.registries.Registries; import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import net.minecraft.world.level.levelgen.placement.BiomeFilter; import net.minecraft.world.level.levelgen.placement.PlacedFeature; @@ -16,6 +20,7 @@ public class ModernBetaMiscPlacedFeatures { public static final ResourceKey FREEZE_TOP_LAYER = ModernBetaPlacedFeatures.of(ModernBetaFeatureTags.SNOW_AND_FREEZE); public static void bootstrap(BootstrapContext context) { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderGetter> registryConfigured = context.lookup(Registries.CONFIGURED_FEATURE); Holder.Reference> freezeTopLayer = registryConfigured.getOrThrow(ModernBetaMiscConfiguredFeatures.FREEZE_TOP_LAYER); diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaOrePlacedFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaOrePlacedFeatures.java index b72f0a3e..9422fd31 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaOrePlacedFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaOrePlacedFeatures.java @@ -12,7 +12,11 @@ import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import net.minecraft.world.level.levelgen.placement.BiomeFilter; import net.minecraft.world.level.levelgen.placement.BlockPredicateFilter; import net.minecraft.world.level.levelgen.placement.CountPlacement; @@ -20,6 +24,8 @@ import net.minecraft.world.level.levelgen.placement.HeightRangePlacement; import net.minecraft.world.level.levelgen.placement.InSquarePlacement; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import net.minecraft.world.level.levelgen.placement.PlacementModifier; +import net.minecraft.world.level.material.Fluid; +import net.minecraft.world.level.material.Fluids; import java.util.List; @@ -29,26 +35,30 @@ public class ModernBetaOrePlacedFeatures { public static final ResourceKey CAVE_INFDEV_325 = ModernBetaPlacedFeatures.of(ModernBetaFeatureTags.CAVE_INFDEV_325); public static void bootstrap(BootstrapContext context) { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderGetter> registryConfigured = context.lookup(Registries.CONFIGURED_FEATURE); Holder.Reference> oreClay = registryConfigured.getOrThrow(ModernBetaOreConfiguredFeatures.ORE_CLAY); Holder.Reference> oreEmeraldY95 = registryConfigured.getOrThrow(ModernBetaOreConfiguredFeatures.ORE_EMERALD_Y95); Holder.Reference> caveInfdev325 = registryConfigured.getOrThrow(ModernBetaOreConfiguredFeatures.CAVE_INFDEV_325); + //~ } PlacementUtils.register(context, ORE_CLAY, oreClay, modifiersWithCount(33, HeightRangePlacement.uniform(VerticalAnchor.absolute(0), VerticalAnchor.absolute(127)))); PlacementUtils.register(context, ORE_EMERALD_Y95, oreEmeraldY95, modifiersWithCount(11, HeightRangePlacement.uniform(VerticalAnchor.absolute(95), VerticalAnchor.top()))); + + List empty = List.of(Fluids.EMPTY); PlacementUtils.register(context, CAVE_INFDEV_325, caveInfdev325, Infdev325CavePlacementModifier.of(-4, 15), BlockPredicateFilter.forPredicate(BlockPredicate.allOf( - BlockPredicate.noFluid(new Vec3i(0, 0, 0)), - BlockPredicate.noFluid(new Vec3i(4, 4, 4)), - BlockPredicate.noFluid(new Vec3i(4, 4, -4)), - BlockPredicate.noFluid(new Vec3i(-4, 4, 4)), - BlockPredicate.noFluid(new Vec3i(-4, 4, -4)), - BlockPredicate.noFluid(new Vec3i(4, -4, 4)), - BlockPredicate.noFluid(new Vec3i(4, -4, -4)), - BlockPredicate.noFluid(new Vec3i(-4, -4, 4)), - BlockPredicate.noFluid(new Vec3i(-4, -4, -4)) + BlockPredicate.matchesFluids(new Vec3i(0, 0, 0), empty), + BlockPredicate.matchesFluids(new Vec3i(4, 4, 4), empty), + BlockPredicate.matchesFluids(new Vec3i(4, 4, -4), empty), + BlockPredicate.matchesFluids(new Vec3i(-4, 4, 4), empty), + BlockPredicate.matchesFluids(new Vec3i(-4, 4, -4), empty), + BlockPredicate.matchesFluids(new Vec3i(4, -4, 4), empty), + BlockPredicate.matchesFluids(new Vec3i(4, -4, -4), empty), + BlockPredicate.matchesFluids(new Vec3i(-4, -4, 4), empty), + BlockPredicate.matchesFluids(new Vec3i(-4, -4, -4), empty) )), BiomeFilter.biome() ); diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaTreePlacedFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaTreePlacedFeatures.java index 08cfaa5e..a166431f 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaTreePlacedFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaTreePlacedFeatures.java @@ -9,7 +9,11 @@ import net.minecraft.data.worldgen.BootstrapContext; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.world.level.block.Blocks; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import net.minecraft.world.level.levelgen.placement.PlacedFeature; public class ModernBetaTreePlacedFeatures { @@ -18,11 +22,13 @@ public class ModernBetaTreePlacedFeatures { public static final ResourceKey OAK_14A_08_BEES_0002 = ModernBetaPlacedFeatures.of(ModernBetaFeatureTags.OAK_14A_08_BEES_0002); public static void bootstrap(BootstrapContext context) { + //~ if >=26.3 'ConfiguredFeature>' -> 'Feature>', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderGetter> registryConfigured = context.lookup(Registries.CONFIGURED_FEATURE); Holder.Reference> fancyOak = registryConfigured.getOrThrow(ModernBetaTreeConfiguredFeatures.FANCY_OAK); Holder.Reference> oak14a08 = registryConfigured.getOrThrow(ModernBetaTreeConfiguredFeatures.OAK_14A_08); Holder.Reference> oak14a08bees0002 = registryConfigured.getOrThrow(ModernBetaTreeConfiguredFeatures.OAK_14A_08_BEES_0002); + //~ } PlacementUtils.register(context, FANCY_OAK, fancyOak, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); PlacementUtils.register(context, OAK_14A_08, oak14a08, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING)); diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaVegetationPlacedFeatures.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaVegetationPlacedFeatures.java index aad581ed..2d414a70 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaVegetationPlacedFeatures.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/placed/ModernBetaVegetationPlacedFeatures.java @@ -4,7 +4,6 @@ import com.google.common.collect.ImmutableList; import mod.bluestaggo.modernerbeta.level.feature.ModernBetaFeatureTags; import mod.bluestaggo.modernerbeta.level.feature.configured.ModernBetaVegetationConfiguredFeatures; import mod.bluestaggo.modernerbeta.level.feature.placement.*; -import net.minecraft.core.BlockPos; import net.minecraft.core.Holder; import net.minecraft.core.HolderGetter; import net.minecraft.core.Vec3i; @@ -14,11 +13,16 @@ import net.minecraft.data.worldgen.features.VegetationFeatures; import net.minecraft.data.worldgen.placement.PlacementUtils; import net.minecraft.resources.ResourceKey; import net.minecraft.util.valueproviders.UniformInt; +import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.Heightmap; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.Feature; +*///? } else { import net.minecraft.world.level.levelgen.feature.ConfiguredFeature; +//? } import net.minecraft.world.level.levelgen.placement.*; import java.util.ArrayList; @@ -40,7 +44,7 @@ public class ModernBetaVegetationPlacedFeatures { IntStream.range(0, 25 * 6) .mapToObj(i -> new Vec3i((i % 5) - 2, i / 25, (i / 5 % 5) - 2)) .filter(v -> v.getX() % 2 != 0 || v.getZ() % 2 != 0) - .map(v -> BlockPredicate.matchesBlocks(v, Blocks.OAK_LEAVES, Blocks.OAK_LOG)).toList()))); + .map(v -> BlockPredicate.matchesBlocks(v, List.of(Blocks.OAK_LEAVES, Blocks.OAK_LOG))).toList()))); private static ImmutableList.Builder withBaseTreeModifiers(PlacementModifier modifier) { return ImmutableList.builder() @@ -144,6 +148,7 @@ public class ModernBetaVegetationPlacedFeatures { public static final ResourceKey TREES_CLASSIC_14A_08_BEES = ModernBetaPlacedFeatures.of(ModernBetaFeatureTags.TREES_CLASSIC_14A_08_BEES); public static void bootstrap(BootstrapContext context) { + //~ if >=26.3 'ConfiguredFeature' -> 'Feature', 'CONFIGURED_FEATURE' -> 'FEATURE' { HolderGetter> registryConfigured = context.lookup(Registries.CONFIGURED_FEATURE); //? if >=26.1 { @@ -218,9 +223,10 @@ public class ModernBetaVegetationPlacedFeatures { Holder.Reference> treesIndevBees = registryConfigured.getOrThrow(ModernBetaVegetationConfiguredFeatures.TREES_INDEV_BEES); Holder.Reference> treesIndevWoodsBees = registryConfigured.getOrThrow(ModernBetaVegetationConfiguredFeatures.TREES_INDEV_WOODS_BEES); Holder.Reference> treesClassic14a08Bees = registryConfigured.getOrThrow(ModernBetaVegetationConfiguredFeatures.TREES_CLASSIC_14A_08_BEES); + //~ } - PlacementUtils.register(context, PATCH_CACTUS_ALPHA, patchCactus, makePatch(10, BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.wouldSurvive(Blocks.CACTUS.defaultBlockState(), BlockPos.ZERO)), CountPlacement.of(2), InSquarePlacement.spread(), HEIGHTMAP_SPREAD_DOUBLE, BiomeFilter.biome())); - PlacementUtils.register(context, PATCH_CACTUS_PE, patchCactus, makePatch(10, BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, BlockPredicate.wouldSurvive(Blocks.CACTUS.defaultBlockState(), BlockPos.ZERO)), CountPlacement.of(5), InSquarePlacement.spread(), HEIGHTMAP_SPREAD_DOUBLE, BiomeFilter.biome())); + PlacementUtils.register(context, PATCH_CACTUS_ALPHA, patchCactus, makePatch(10, BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, wouldSurvive(Blocks.CACTUS)), CountPlacement.of(2), InSquarePlacement.spread(), HEIGHTMAP_SPREAD_DOUBLE, BiomeFilter.biome())); + PlacementUtils.register(context, PATCH_CACTUS_PE, patchCactus, makePatch(10, BlockPredicate.allOf(BlockPredicate.ONLY_IN_AIR_PREDICATE, wouldSurvive(Blocks.CACTUS)), CountPlacement.of(5), InSquarePlacement.spread(), HEIGHTMAP_SPREAD_DOUBLE, BiomeFilter.biome())); PlacementUtils.register(context, PATCH_BROWN_MUSHROOM, patchBrownMushroom, makePatch(64, BlockPredicate.matchesBlocks(Blocks.AIR, Blocks.CAVE_AIR), RarityFilter.onAverageOnceEvery(4), InSquarePlacement.spread(), HEIGHT_RANGE_128, BiomeFilter.biome())); PlacementUtils.register(context, PATCH_RED_MUSHROOM, patchRedMushroom, makePatch(64, BlockPredicate.matchesBlocks(Blocks.AIR, Blocks.CAVE_AIR), RarityFilter.onAverageOnceEvery(8), InSquarePlacement.spread(), HEIGHT_RANGE_128, BiomeFilter.biome())); PlacementUtils.register(context, MUSHROOM_HELL, mushroomHell, makePatch(CountPlacement.of(1), InSquarePlacement.spread(), MOTION_BLOCKING_HEIGHTMAP, BiomeFilter.biome())); @@ -305,4 +311,12 @@ public class ModernBetaVegetationPlacedFeatures { return list; } + + private static BlockPredicate wouldSurvive(Block block) { + //? if >=26.3 { + /*return BlockPredicate.wouldSurvive(block); + *///? } else { + return BlockPredicate.wouldSurvive(block.defaultBlockState(), Vec3i.ZERO); + //? } + } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/trunk/BetaLargeOakTrunkPlacer.java b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/trunk/BetaLargeOakTrunkPlacer.java index be6c974d..8d3760ab 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/level/feature/trunk/BetaLargeOakTrunkPlacer.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/level/feature/trunk/BetaLargeOakTrunkPlacer.java @@ -12,7 +12,11 @@ import net.minecraft.util.RandomSource; import net.minecraft.world.level.WorldGenLevel; import net.minecraft.world.level.block.RotatedPillarBlock; import net.minecraft.world.level.block.state.BlockState; +//? if >=26.3 { +/*import net.minecraft.world.level.levelgen.feature.TreeFeature; +*///? } else { import net.minecraft.world.level.levelgen.feature.configurations.TreeConfiguration; +//? } import net.minecraft.world.level.levelgen.feature.foliageplacers.FoliagePlacer; import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacer; import net.minecraft.world.level.levelgen.feature.trunkplacers.TrunkPlacerType; @@ -45,11 +49,12 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { } @Override - public @NotNull List placeTrunk(WorldGenLevel level, BiConsumer replacer, RandomSource random, int height, BlockPos basePos, TreeConfiguration config) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + public @NotNull List placeTrunk(WorldGenLevel level, BiConsumer replacer, RandomSource random, int height, BlockPos basePos, TreeConfiguration tree) { int foliageHeight = 5; double branchDensity = 1.0; - placeBelowTrunkBlock(level, replacer, random, basePos.below(), config); + placeBelowTrunkBlock(level, replacer, random, basePos.below(), tree); int treeHeight = Mth.floor(height * HEIGHT_SCALE); if (treeHeight >= height) { @@ -83,7 +88,7 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { BlockPos startPos = basePos.offset(randX, treeRelY - 1, randZ); BlockPos endPos = startPos.above(foliageHeight); - if (this.makeOrCheckBranch(level, replacer, random, startPos, endPos, false, config)) { + if (this.makeOrCheckBranch(level, replacer, random, startPos, endPos, false, tree)) { int xLength = Math.abs(basePos.getX() - startPos.getX()); int zLength = Math.abs(basePos.getZ() - startPos.getZ()); @@ -91,7 +96,7 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { int endY = distance > treeTopY ? treeTopY : (int)distance; endPos = new BlockPos(basePos.getX(), endY, basePos.getZ()); - if (this.makeOrCheckBranch(level, replacer, random, endPos, startPos, false, config)) { + if (this.makeOrCheckBranch(level, replacer, random, endPos, startPos, false, tree)) { list.add(new BranchPosition(startPos, endPos.getY())); } } @@ -104,8 +109,8 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { --treeRelY; } - this.makeOrCheckBranch(level, replacer, random, basePos, basePos.above(treeHeight), true, config); - this.makeBranches(level, replacer, random, height, basePos, list, config); + this.makeOrCheckBranch(level, replacer, random, basePos, basePos.above(treeHeight), true, tree); + this.makeBranches(level, replacer, random, height, basePos, list, tree); List nodes = Lists.newArrayList(); for (BranchPosition branchPosition : list) { @@ -120,7 +125,8 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { return this.baseHeight + random.nextInt(this.heightRandA + 1); } - private boolean makeOrCheckBranch(WorldGenLevel level, BiConsumer replacer, RandomSource random, BlockPos startPos, BlockPos branchPos, boolean make, TreeConfiguration config) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + private boolean makeOrCheckBranch(WorldGenLevel level, BiConsumer replacer, RandomSource random, BlockPos startPos, BlockPos branchPos, boolean make, TreeConfiguration tree) { if (!make && Objects.equals(startPos, branchPos)) { return true; } @@ -134,7 +140,7 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { for (int i = 0; i <= longestSide; i++) { BlockPos offset = startPos.offset(Mth.floor(i * xM), Mth.floor(i * yM), Mth.floor(i * zM)); if (make) { - this.placeLog(level, replacer, random, offset, config, state -> + this.placeLog(level, replacer, random, offset, tree, state -> rotateLogs ? state.trySetValue(RotatedPillarBlock.AXIS, this.getLogAxis(startPos, offset)) : state); } else if (!this.isFree(level, offset)) { return false; @@ -171,12 +177,13 @@ public class BetaLargeOakTrunkPlacer extends TrunkPlacer { return height >= treeHeight * 0.2; } - private void makeBranches(WorldGenLevel level, BiConsumer replacer, RandomSource random, int treeHeight, BlockPos startPos, List branchPositions, TreeConfiguration config) { + //~ if >=26.3 'TreeConfiguration' -> 'TreeFeature' + private void makeBranches(WorldGenLevel level, BiConsumer replacer, RandomSource random, int treeHeight, BlockPos startPos, List branchPositions, TreeConfiguration tree) { for (BranchPosition branchPosition : branchPositions) { int endY = branchPosition.endY; BlockPos blockPos = new BlockPos(startPos.getX(), endY, startPos.getZ()); if (!blockPos.equals(branchPosition.node.pos()) && this.isHighEnough(treeHeight, endY - startPos.getY())) { - this.makeOrCheckBranch(level, replacer, random, blockPos, branchPosition.node.pos(), true, config); + this.makeOrCheckBranch(level, replacer, random, blockPos, branchPosition.node.pos(), true, tree); } } } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/mixin/ChunkGeneratorStructureStateAccessor.java b/src/main/java/mod/bluestaggo/modernerbeta/mixin/ChunkGeneratorStructureStateAccessor.java index 0843dd3e..be2edfce 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/mixin/ChunkGeneratorStructureStateAccessor.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/mixin/ChunkGeneratorStructureStateAccessor.java @@ -13,7 +13,15 @@ import java.util.List; @Mixin(ChunkGeneratorStructureState.class) public interface ChunkGeneratorStructureStateAccessor { @Invoker("") - static ChunkGeneratorStructureState invokeInit(RandomState randomState, BiomeSource biomeSource, long levelSeed, long concentricRingsSeed, List> possibleStructureSets) { + static ChunkGeneratorStructureState invokeInit( + RandomState randomState, + BiomeSource biomeSource, + long levelSeed, + //? if >=26.3 + //net.minecraft.world.level.ChunkPos origin, + long concentricRingsSeed, + List> possibleStructureSets + ) { throw new AssertionError(); } diff --git a/src/main/java/mod/bluestaggo/modernerbeta/mixin/SnowAndFreezeFeatureMixin.java b/src/main/java/mod/bluestaggo/modernerbeta/mixin/SnowAndFreezeFeatureMixin.java index 95ea8d2c..607dc242 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/mixin/SnowAndFreezeFeatureMixin.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/mixin/SnowAndFreezeFeatureMixin.java @@ -16,8 +16,8 @@ import net.minecraft.world.level.biome.Biome; import net.minecraft.world.level.biome.BiomeSource; import net.minecraft.world.level.chunk.ChunkGenerator; import net.minecraft.world.level.levelgen.Heightmap; -import net.minecraft.world.level.levelgen.feature.FeaturePlaceContext; -import net.minecraft.world.level.levelgen.feature.SnowAndFreezeFeature; +import net.minecraft.world.level.levelgen.feature.*; +//? if <26.3 import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.placement.PlacedFeature; import org.spongepowered.asm.mixin.Mixin; @@ -43,11 +43,23 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(SnowAndFreezeFeature.class) public abstract class SnowAndFreezeFeatureMixin { @Inject(method = "place", at = @At("HEAD"), cancellable = true) - private void injectPlace(FeaturePlaceContext context, CallbackInfoReturnable info) { + private void injectPlace( + //? if >=26.3 { + /*WorldGenLevel level, + ChunkGenerator chunkGenerator, + net.minecraft.util.RandomSource random, + BlockPos pos, + *///? } else { + FeaturePlaceContext context, + //? } + CallbackInfoReturnable info + ) { + //? if <26.3 { WorldGenLevel level = context.level(); BlockPos pos = context.origin(); - ChunkGenerator chunkGenerator = context.chunkGenerator(); + //? } + BiomeSource biomeSource = chunkGenerator.getBiomeSource(); if (chunkGenerator instanceof ModernBetaChunkGenerator modernBetaChunkGenerator @@ -64,12 +76,12 @@ public abstract class SnowAndFreezeFeatureMixin { if (hasClimateSampler) { int x = pos.getX(); int z = pos.getZ(); - int y = context.level().getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z); + int y = level.getHeight(Heightmap.Types.OCEAN_FLOOR_WG, x, z); BlockPos topPos = new BlockPos(x, y, z); - Holder topBiome = context.level().getBiome(topPos); + Holder topBiome = level.getBiome(topPos); - Reference betaFreezeTopLayer = context.level() + Reference betaFreezeTopLayer = level .registryAccess() .lookupOrThrow(Registries.PLACED_FEATURE) //? if >=1.21.2 { diff --git a/src/main/java/mod/bluestaggo/modernerbeta/mixin/compat/terrablender/SurfaceRuleManagerMixin.java b/src/main/java/mod/bluestaggo/modernerbeta/mixin/compat/terrablender/SurfaceRuleManagerMixin.java index 8608fcf7..8a65f9c7 100644 --- a/src/main/java/mod/bluestaggo/modernerbeta/mixin/compat/terrablender/SurfaceRuleManagerMixin.java +++ b/src/main/java/mod/bluestaggo/modernerbeta/mixin/compat/terrablender/SurfaceRuleManagerMixin.java @@ -1,3 +1,4 @@ +//? if <26.3 { package mod.bluestaggo.modernerbeta.mixin.compat.terrablender; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; @@ -36,3 +37,4 @@ public abstract class SurfaceRuleManagerMixin { return original.call(/*? >=26.2 {*//*biomeLookup*//*?}*/); } } +//? } \ No newline at end of file diff --git a/src/main/resources/moderner_beta.accesswidener b/src/main/resources/moderner_beta.accesswidener index 992dbe8a..90299df6 100644 --- a/src/main/resources/moderner_beta.accesswidener +++ b/src/main/resources/moderner_beta.accesswidener @@ -19,7 +19,11 @@ extendable method net/minecraft/world/level/levelgen/carver/WorldCarver getCarve accessible field net/minecraft/world/level/levelgen/carver/CaveCarverConfiguration floorLevel Lnet/minecraft/util/valueproviders/FloatProvider; +#? if >=26.3 { +#accessible method net/minecraft/world/level/levelgen/NoiseChunk cachedClimateSampler (Lnet/minecraft/world/level/levelgen/NoiseRouter;)Lnet/minecraft/world/level/biome/Climate$Sampler; +#? } else { accessible method net/minecraft/world/level/levelgen/NoiseChunk cachedClimateSampler (Lnet/minecraft/world/level/levelgen/NoiseRouter;Ljava/util/List;)Lnet/minecraft/world/level/biome/Climate$Sampler; +#? } #? if >=26.2 { #accessible class net/minecraft/world/level/levelgen/NoiseRouterData$QuantizedSpaghettiRarity diff --git a/versions/26.3/gradle.properties b/versions/26.3/gradle.properties new file mode 100644 index 00000000..fcc6dc41 --- /dev/null +++ b/versions/26.3/gradle.properties @@ -0,0 +1,17 @@ +# Minecraft properties +minecraft_version_override=26.3-snapshot-1 +java_version=25 + +supported_versions=26.3 +fabric_minecraft_version_range=26.3.x +forgelike_minecraft_version_range=[26.3,26.4) + +# Fabric properties +fabric_api_version=0.153.1+26.3 + +# NeoForge properties +forgelike_loader_version=26.3.0.0-beta +forgelike_loader_version_range=[26.3.0.0-beta,26.4.0.0) + +# Dependencies +mod_menu_version=20.0.0-beta.2 \ No newline at end of file -- knotmirror 0.0.1