-
Posts
12 -
Joined
-
Last visited
UHQ_GAMES's Achievements

Tree Puncher (2/8)
0
Reputation
-
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
okay thanks for getting me as far as you did! -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
ah again sorry, ill post my full biome setup, i guess another big this is im using terrablender to manage biome placement public class OverworldBiomes { @Nullable private static final Music NORMAL_MUSIC = null; protected static int calculateSkyColor(float color) { float $$1 = color / 3.0F; $$1 = Mth.clamp($$1, -1.0F, 1.0F); return Mth.hsvToRgb(0.62222224F - $$1 * 0.05F, 0.5F + $$1 * 0.1F, 1.0F); } private static Biome biome(Biome.Precipitation precipitation, Biome.BiomeCategory category, float temperature, float downfall, MobSpawnSettings.Builder spawnBuilder, BiomeGenerationSettings.Builder biomeBuilder, @Nullable Music music) { return biome(precipitation, category, temperature, downfall, 4159204, 329011, spawnBuilder, biomeBuilder, music); } private static Biome biome(Biome.Precipitation precipitation, Biome.BiomeCategory category, float temperature, float downfall, int waterColor, int waterFogColor, MobSpawnSettings.Builder spawnBuilder, BiomeGenerationSettings.Builder biomeBuilder, @Nullable Music music) { return (new Biome.BiomeBuilder()).precipitation(precipitation).biomeCategory(category).temperature(temperature).downfall(downfall).specialEffects((new BiomeSpecialEffects.Builder()).waterColor(waterColor).waterFogColor(waterFogColor).fogColor(12638463).skyColor(calculateSkyColor(temperature)).ambientMoodSound(AmbientMoodSettings.LEGACY_CAVE_SETTINGS).backgroundMusic(music).build()).mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()).build(); } private static void globalOverworldGeneration(BiomeGenerationSettings.Builder builder) { ModBiomeDefaultFeatures.addCaves(builder); BiomeDefaultFeatures.addDefaultCrystalFormations(builder); BiomeDefaultFeatures.addDefaultMonsterRoom(builder); BiomeDefaultFeatures.addDefaultUndergroundVariety(builder); BiomeDefaultFeatures.addDefaultSprings(builder); BiomeDefaultFeatures.addSurfaceFreezing(builder); } //ADD BIOMES public static Biome pineSlopes() { BiomeSpecialEffects effects = new BiomeSpecialEffects.Builder().fogColor(12638463).waterColor(-12619852).waterFogColor(-14007447) .skyColor(7972607).foliageColorOverride(-9075130).grassColorOverride(-8083622).build(); MobSpawnSettings.Builder spawnBuilder = new MobSpawnSettings.Builder(); BiomeDefaultFeatures.commonSpawns(spawnBuilder); BiomeGenerationSettings.Builder biomeBuilder = new BiomeGenerationSettings.Builder(); biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, PlacementUtils.register("regions_unexplored:pslope_bush", FeatureUtils.register("regions_unexplored:pslope_bush", Feature.TREE, new TreeConfiguration.TreeConfigurationBuilder( BlockStateProvider.simple(Blocks.OAK_LOG.defaultBlockState()), new StraightTrunkPlacer(1, 0, 0), BlockStateProvider.simple(Blocks.OAK_LEAVES.defaultBlockState()), new BushFoliagePlacer(ConstantInt.of(2), ConstantInt.of(1), 2), new TwoLayersFeatureSize(0, 0, 0)).build()), List.of(CountPlacement.of(1), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(0), PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING), BiomeFilter.biome()))); biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, PlacementUtils.register("regions_unexplored:pslope_sb", FeatureUtils.register("regions_unexplored:pslope_sb", Feature.TREE, new TreeConfiguration.TreeConfigurationBuilder( BlockStateProvider.simple(Blocks.OAK_LOG.defaultBlockState()), new StraightTrunkPlacer(6, 3, 0), BlockStateProvider.simple(Blocks.OAK_LEAVES.defaultBlockState()), new BlobFoliagePlacer(ConstantInt.of(2), ConstantInt.of(0), 3), new TwoLayersFeatureSize(1, 0, 1)).ignoreVines().build()), List.of(CountPlacement.of(1), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(0), PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING), BiomeFilter.biome()))); biomeBuilder.addFeature(GenerationStep.Decoration.VEGETAL_DECORATION, PlacementUtils.register("regions_unexplored:pslope_pine", FeatureUtils.register("regions_unexplored:pslope_pine", Feature.TREE, new TreeConfiguration.TreeConfigurationBuilder( BlockStateProvider.simple(RegionsUnexploredModBlocks.PINE_LOG.get().defaultBlockState()), new StraightTrunkPlacer(8, 2, 2), BlockStateProvider.simple(RegionsUnexploredModBlocks.PINE_LEAVES.get().defaultBlockState()), new SpruceFoliagePlacer(UniformInt.of(2, 3), UniformInt.of(2, 2), UniformInt.of(5, 5)), new TwoLayersFeatureSize(2, 0, 2)).ignoreVines().build()), List.of(CountPlacement.of(7), InSquarePlacement.spread(), SurfaceWaterDepthFilter.forMaxDepth(0), PlacementUtils.HEIGHTMAP_OCEAN_FLOOR, PlacementUtils.filteredByBlockSurvival(Blocks.OAK_SAPLING), BiomeFilter.biome()))); globalOverworldGeneration(biomeBuilder); BiomeDefaultFeatures.addDefaultOres(biomeBuilder); BiomeDefaultFeatures.addDefaultSoftDisks(biomeBuilder); return new Biome.BiomeBuilder().precipitation(Biome.Precipitation.RAIN).biomeCategory(Biome.BiomeCategory.TAIGA).temperature(0.5f) .downfall(0.7f).specialEffects(effects).mobSpawnSettings(spawnBuilder.build()).generationSettings(biomeBuilder.build()) .build(); } } and here is where it is registry name is made public class ModBiomes { @SubscribeEvent public static void registerBiomes(RegistryEvent.Register<Biome> event) { IForgeRegistry<Biome> registry = event.getRegistry(); registry.register(OverworldBiomes.pineSlopes().setRegistryName(ModdedBiomes.PINE_SLOPES.location())); } } resource key here public class ModdedBiomes { public static final ResourceKey<Biome> PINE_SLOPES = register("pine_slopes"); private static ResourceKey<Biome> register(String name) { return ResourceKey.create(Registry.BIOME_REGISTRY, new ResourceLocation("regions_unexplored", name)); } } and makes a Terrablender region here public class ModRegion extends Region { public ModRegion(ResourceLocation name, int weight) { super(name, RegionType.OVERWORLD, weight); } @Override public void addBiomes(Registry<Biome> registry, Consumer<Pair<Climate.ParameterPoint, ResourceKey<Biome>>> mapper) { this.addModifiedVanillaOverworldBiomes(mapper, builder -> { List<Climate.ParameterPoint> grovePoints = new ParameterPointListBuilder() .temperature(Temperature.COOL, Temperature.NEUTRAL) .humidity(Humidity.ARID, Humidity.DRY, Humidity.NEUTRAL, Humidity.WET, Humidity.HUMID) .continentalness(Continentalness.span(Continentalness.NEAR_INLAND, Continentalness.FAR_INLAND)) .erosion(Erosion.EROSION_0, Erosion.EROSION_1) .depth(Depth.SURFACE, Depth.FLOOR) .weirdness(Weirdness.PEAK_NORMAL, Weirdness.PEAK_VARIANT, Weirdness.HIGH_SLICE_VARIANT_ASCENDING, Weirdness.HIGH_SLICE_VARIANT_DESCENDING, Weirdness.HIGH_SLICE_NORMAL_ASCENDING, Weirdness.HIGH_SLICE_NORMAL_DESCENDING, Weirdness.MID_SLICE_VARIANT_ASCENDING, Weirdness.MID_SLICE_VARIANT_DESCENDING, Weirdness.MID_SLICE_NORMAL_ASCENDING, Weirdness.MID_SLICE_NORMAL_DESCENDING) .build(); grovePoints.forEach(point -> builder.replaceBiome(point, ModdedBiomes.PINE_SLOPES)); }); } } again i apreciate all the help youve given me. Im gonna try to stumble my way upon a solution. -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
Awesome thank you! I'll definately be donating! and one last thing now, sorry for being annoying, now that I have my biome feature set up and added to my biome i have a weird problem, i load up a Single Biome world and the carvers work perfect. However using the Default world type its almost like its using the default cave carvers. seems like everything is correct but im not too sure This is the code for the cave biome feature for my biomes public class ModBiomeDefaultFeatures { public static void addCaves(BiomeGenerationSettings.Builder p_194721_) { p_194721_.addCarver(GenerationStep.Carving.AIR, ModCarvers.CAVE.getHolder().get()); p_194721_.addCarver(GenerationStep.Carving.AIR, ModCarvers.CAVE_EXTRA_UNDERGROUND.getHolder().get()); p_194721_.addCarver(GenerationStep.Carving.AIR, ModCarvers.CANYON.getHolder().get()); p_194721_.addFeature(GenerationStep.Decoration.LAKES, MiscOverworldPlacements.LAKE_LAVA_UNDERGROUND); p_194721_.addFeature(GenerationStep.Decoration.LAKES, MiscOverworldPlacements.LAKE_LAVA_SURFACE); } } which is then added using this in the OverworldBiome class private static void globalOverworldGeneration(BiomeGenerationSettings.Builder builder) { ModBiomeDefaultFeatures.addCaves(builder); BiomeDefaultFeatures.addDefaultCrystalFormations(builder); BiomeDefaultFeatures.addDefaultMonsterRoom(builder); BiomeDefaultFeatures.addDefaultUndergroundVariety(builder); BiomeDefaultFeatures.addDefaultSprings(builder); BiomeDefaultFeatures.addSurfaceFreezing(builder); } I also noticed removing the addCaves method from Overworld biomes stops caves from spawning in single biome, but not in default. -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
Thank you very much for helping me understand, seems to have worked! is there any way i can donate to ya for helping me out? -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
ohh my bad sorry i misunderstood public class ModCaveCarver extends CaveWorldCarver { public ModCaveCarver(Codec<ModCarverConfiguration> p_159194_) { super(p_159194_); this.replaceableBlocks = ImmutableSet.of(RegionsUnexploredModBlocks.MUD.get(), Blocks.STONE, Blocks.GRANITE, Blocks.DIORITE, Blocks.ANDESITE, Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL, Blocks.GRASS_BLOCK, Blocks.TERRACOTTA, Blocks.WHITE_TERRACOTTA, Blocks.ORANGE_TERRACOTTA, Blocks.MAGENTA_TERRACOTTA, Blocks.LIGHT_BLUE_TERRACOTTA, Blocks.YELLOW_TERRACOTTA, Blocks.LIME_TERRACOTTA, Blocks.PINK_TERRACOTTA, Blocks.GRAY_TERRACOTTA, Blocks.LIGHT_GRAY_TERRACOTTA, Blocks.CYAN_TERRACOTTA, Blocks.PURPLE_TERRACOTTA, Blocks.BLUE_TERRACOTTA, Blocks.BROWN_TERRACOTTA, Blocks.GREEN_TERRACOTTA, Blocks.RED_TERRACOTTA, Blocks.BLACK_TERRACOTTA, Blocks.SANDSTONE, Blocks.RED_SANDSTONE, Blocks.MYCELIUM, Blocks.SNOW, Blocks.PACKED_ICE, Blocks.DEEPSLATE, Blocks.CALCITE, Blocks.SAND, Blocks.RED_SAND, Blocks.GRAVEL, Blocks.TUFF, Blocks.GRANITE, Blocks.IRON_ORE, Blocks.DEEPSLATE_IRON_ORE, Blocks.RAW_IRON_BLOCK, Blocks.COPPER_ORE, Blocks.DEEPSLATE_COPPER_ORE, Blocks.RAW_COPPER_BLOCK); this.liquids = ImmutableSet.of(Fluids.LAVA, Fluids.WATER); } public boolean isStartChunk(ModCarverConfiguration p_159263_, Random p_159264_) { return p_159264_.nextFloat() <= p_159263_.probability; } public boolean carve(CarvingContext p_190704_, ModCarverConfiguration p_190705_, ChunkAccess p_190706_, Function<BlockPos, Holder<Biome>> p_190707_, Random p_190708_, Aquifer p_190709_, ChunkPos p_190710_, CarvingMask p_190711_) { int i = SectionPos.sectionToBlockCoord(this.getRange() * 2 - 1); int j = p_190708_.nextInt(p_190708_.nextInt(p_190708_.nextInt(this.getCaveBound()) + 1) + 1); for(int k = 0; k < j; ++k) { double d0 = (double)p_190710_.getBlockX(p_190708_.nextInt(16)); double d1 = (double)p_190705_.y.sample(p_190708_, p_190704_); double d2 = (double)p_190710_.getBlockZ(p_190708_.nextInt(16)); double d3 = (double)p_190705_.horizontalRadiusMultiplier.sample(p_190708_); double d4 = (double)p_190705_.verticalRadiusMultiplier.sample(p_190708_); double d5 = (double)p_190705_.floorLevel.sample(p_190708_); WorldCarver.CarveSkipChecker worldcarver$carveskipchecker = (p_159202_, p_159203_, p_159204_, p_159205_, p_159206_) -> { return shouldSkip(p_159203_, p_159204_, p_159205_, d5); }; int l = 1; if (p_190708_.nextInt(4) == 0) { double d6 = (double)p_190705_.yScale.sample(p_190708_); float f1 = 1.0F + p_190708_.nextFloat() * 6.0F; this.createRoom(p_190704_, p_190705_, p_190706_, p_190707_, p_190709_, d0, d1, d2, f1, d6, p_190711_, worldcarver$carveskipchecker); l += p_190708_.nextInt(4); } for(int k1 = 0; k1 < l; ++k1) { float f = p_190708_.nextFloat() * ((float)Math.PI * 2F); float f3 = (p_190708_.nextFloat() - 0.5F) / 4.0F; float f2 = this.getThickness(p_190708_); int i1 = i - p_190708_.nextInt(i / 4); int j1 = 0; this.createTunnel(p_190704_, p_190705_, p_190706_, p_190707_, p_190708_.nextLong(), p_190709_, d0, d1, d2, d3, d4, f2, f, f3, 0, i1, this.getYScale(), p_190711_, worldcarver$carveskipchecker); } } return true; } protected int getCaveBound() { return 15; } protected float getThickness(Random p_64834_) { float f = p_64834_.nextFloat() * 2.0F + p_64834_.nextFloat(); if (p_64834_.nextInt(10) == 0) { f *= p_64834_.nextFloat() * p_64834_.nextFloat() * 3.0F + 1.0F; } return f; } protected double getYScale() { return 1.0D; } protected void createRoom(CarvingContext p_190691_, ModCarverConfiguration p_190692_, ChunkAccess p_190693_, Function<BlockPos, Holder<Biome>> p_190694_, Aquifer p_190695_, double p_190696_, double p_190697_, double p_190698_, float p_190699_, double p_190700_, CarvingMask p_190701_, WorldCarver.CarveSkipChecker p_190702_) { double d0 = 1.5D + (double)(Mth.sin(((float)Math.PI / 2F)) * p_190699_); double d1 = d0 * p_190700_; this.carveEllipsoid(p_190691_, p_190692_, p_190693_, p_190694_, p_190695_, p_190696_ + 1.0D, p_190697_, p_190698_, d0, d1, p_190701_, p_190702_); } protected void createTunnel(CarvingContext p_190671_, ModCarverConfiguration p_190672_, ChunkAccess p_190673_, Function<BlockPos, Holder<Biome>> p_190674_, long p_190675_, Aquifer p_190676_, double p_190677_, double p_190678_, double p_190679_, double p_190680_, double p_190681_, float p_190682_, float p_190683_, float p_190684_, int p_190685_, int p_190686_, double p_190687_, CarvingMask p_190688_, WorldCarver.CarveSkipChecker p_190689_) { Random random = new Random(p_190675_); int i = random.nextInt(p_190686_ / 2) + p_190686_ / 4; boolean flag = random.nextInt(6) == 0; float f = 0.0F; float f1 = 0.0F; for(int j = p_190685_; j < p_190686_; ++j) { double d0 = 1.5D + (double)(Mth.sin((float)Math.PI * (float)j / (float)p_190686_) * p_190682_); double d1 = d0 * p_190687_; float f2 = Mth.cos(p_190684_); p_190677_ += (double)(Mth.cos(p_190683_) * f2); p_190678_ += (double)Mth.sin(p_190684_); p_190679_ += (double)(Mth.sin(p_190683_) * f2); p_190684_ *= flag ? 0.92F : 0.7F; p_190684_ += f1 * 0.1F; p_190683_ += f * 0.1F; f1 *= 0.9F; f *= 0.75F; f1 += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 2.0F; f += (random.nextFloat() - random.nextFloat()) * random.nextFloat() * 4.0F; if (j == i && p_190682_ > 1.0F) { this.createTunnel(p_190671_, p_190672_, p_190673_, p_190674_, random.nextLong(), p_190676_, p_190677_, p_190678_, p_190679_, p_190680_, p_190681_, random.nextFloat() * 0.5F + 0.5F, p_190683_ - ((float)Math.PI / 2F), p_190684_ / 3.0F, j, p_190686_, 1.0D, p_190688_, p_190689_); this.createTunnel(p_190671_, p_190672_, p_190673_, p_190674_, random.nextLong(), p_190676_, p_190677_, p_190678_, p_190679_, p_190680_, p_190681_, random.nextFloat() * 0.5F + 0.5F, p_190683_ + ((float)Math.PI / 2F), p_190684_ / 3.0F, j, p_190686_, 1.0D, p_190688_, p_190689_); return; } if (random.nextInt(4) != 0) { if (!canReach(p_190673_.getPos(), p_190677_, p_190679_, j, p_190686_, p_190682_)) { return; } this.carveEllipsoid(p_190671_, p_190672_, p_190673_, p_190674_, p_190676_, p_190677_, p_190678_, p_190679_, d0 * p_190680_, d1 * p_190681_, p_190688_, p_190689_); } } } private static boolean shouldSkip(double p_159196_, double p_159197_, double p_159198_, double p_159199_) { if (p_159197_ <= p_159199_) { return true; } else { return p_159196_ * p_159196_ + p_159197_ * p_159197_ + p_159198_ * p_159198_ >= 1.0D; } } } and these are the errors my console is spitting out > Task :downloadMcpConfig > Task :extractSrg UP-TO-DATE > Task :createMcpToSrg UP-TO-DATE > Task :compileJava C:\Users\Eric Adams\Documents\R_U_1.18.2\src\main\java\net\regionsunexplored\world\gen\ModCaveCarver.java:48: error: incompatible types: Codec cannot be converted to Codec super(p_159194_); ^ C:\Users\Eric Adams\Documents\R_U_1.18.2\src\main\java\net\regionsunexplored\world\gen\ModCaveCarver.java:112: error: incompatible types: ModCarverConfiguration cannot be converted to CaveCarverConfiguration this.carveEllipsoid(p_190691_, p_190692_, p_190693_, p_190694_, p_190695_, p_190696_ + 1.0D, p_190697_, p_190698_, d0, d1, p_190701_, p_190702_); ^ C:\Users\Eric Adams\Documents\R_U_1.18.2\src\main\java\net\regionsunexplored\world\gen\ModCaveCarver.java:147: error: incompatible types: ModCarverConfiguration cannot be converted to CaveCarverConfiguration this.carveEllipsoid(p_190671_, p_190672_, p_190673_, p_190674_, p_190676_, p_190677_, p_190678_, p_190679_, d0 * p_190680_, d1 * p_190681_, p_190688_, p_190689_); ^ C:\Users\Eric Adams\Documents\R_U_1.18.2\src\main\java\net\regionsunexplored\world\gen\ModWorldCarver.java:62: error: incompatible types: Codec cannot be converted to Codec () -> new ModCaveCarver(CaveCarverConfiguration.CODEC)); ^ Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 4 errors > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Compilation failed; see the compiler error output for details. * Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. * Get more help at https://help.gradle.org BUILD FAILED in 2s 4 actionable tasks: 2 executed, 2 up-to-date BUILD FAILED Task completed in 4 seconds -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
ah yes sorry, im still learning a lot of this so im not the best at it yet, for my CaveCarverConfig i just copied the builtin one, probably doing this all wrong public class ModCarverConfiguration extends CarverConfiguration { public static final Codec<ModCarverConfiguration> CODEC = RecordCodecBuilder.create((p_159184_) -> { return p_159184_.group(CarverConfiguration.CODEC.forGetter((p_159192_) -> { return p_159192_; }), FloatProvider.CODEC.fieldOf("horizontal_radius_multiplier").forGetter((p_159190_) -> { return p_159190_.horizontalRadiusMultiplier; }), FloatProvider.CODEC.fieldOf("vertical_radius_multiplier").forGetter((p_159188_) -> { return p_159188_.verticalRadiusMultiplier; }), FloatProvider.codec(-1.0F, 1.0F).fieldOf("floor_level").forGetter((p_159186_) -> { return p_159186_.floorLevel; })).apply(p_159184_, ModCarverConfiguration::new); }); public final FloatProvider horizontalRadiusMultiplier; public final FloatProvider verticalRadiusMultiplier; final FloatProvider floorLevel; public ModCarverConfiguration(float p_190653_, HeightProvider p_190654_, FloatProvider p_190655_, VerticalAnchor p_190656_, CarverDebugSettings p_190657_, FloatProvider p_190658_, FloatProvider p_190659_, FloatProvider p_190660_) { super(p_190653_, p_190654_, p_190655_, p_190656_, p_190657_); this.horizontalRadiusMultiplier = p_190658_; this.verticalRadiusMultiplier = p_190659_; this.floorLevel = p_190660_; } public ModCarverConfiguration(float p_159160_, HeightProvider p_159161_, FloatProvider p_159162_, VerticalAnchor p_159163_, boolean p_159164_, FloatProvider p_159165_, FloatProvider p_159166_, FloatProvider p_159167_) { this(p_159160_, p_159161_, p_159162_, p_159163_, CarverDebugSettings.DEFAULT, p_159165_, p_159166_, p_159167_); } public ModCarverConfiguration(CarverConfiguration p_159179_, FloatProvider p_159180_, FloatProvider p_159181_, FloatProvider p_159182_) { this(p_159179_.probability, p_159179_.y, p_159179_.yScale, p_159179_.lavaLevel, p_159179_.debugSettings, p_159180_, p_159181_, p_159182_); } } again thanks for the help, i would still be stuck on the first problem without it -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
thank you for the resource! making my own CaveCarverConfig was my first shot, says it cannot be converted to the builtin CaveCarverConfig -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
Now i have another problem lol, i changed the carve method in my mod carver cause i was having issues with aquifers and now im having an issue with the floorLevel variable not being accessible, is there another method to do this? public boolean carve(CarvingContext p_190704_, CaveCarverConfiguration p_190705_, ChunkAccess p_190706_, Function<BlockPos, Holder<Biome>> p_190707_, Random p_190708_, Aquifer p_190709_, ChunkPos p_190710_, CarvingMask p_190711_) { int i = SectionPos.sectionToBlockCoord(this.getRange() * 2 - 1); int j = p_190708_.nextInt(p_190708_.nextInt(p_190708_.nextInt(this.getCaveBound()) + 1) + 1); for(int k = 0; k < j; ++k) { double d0 = (double)p_190710_.getBlockX(p_190708_.nextInt(16)); double d1 = (double)p_190705_.y.sample(p_190708_, p_190704_); double d2 = (double)p_190710_.getBlockZ(p_190708_.nextInt(16)); double d3 = (double)p_190705_.horizontalRadiusMultiplier.sample(p_190708_); double d4 = (double)p_190705_.verticalRadiusMultiplier.sample(p_190708_); double d5 = (double)floorLevel.sample(p_190708_); WorldCarver.CarveSkipChecker worldcarver$carveskipchecker = (p_159202_, p_159203_, p_159204_, p_159205_, p_159206_) -> { return shouldSkip(p_159203_, p_159204_, p_159205_, d5); }; int l = 1; if (p_190708_.nextInt(4) == 0) { double d6 = (double)p_190705_.yScale.sample(p_190708_); float f1 = 1.0F + p_190708_.nextFloat() * 6.0F; this.createRoom(p_190704_, p_190705_, p_190706_, p_190707_, p_190709_, d0, d1, d2, f1, d6, p_190711_, worldcarver$carveskipchecker); l += p_190708_.nextInt(4); } for(int k1 = 0; k1 < l; ++k1) { float f = p_190708_.nextFloat() * ((float)Math.PI * 2F); float f3 = (p_190708_.nextFloat() - 0.5F) / 4.0F; float f2 = this.getThickness(p_190708_); int i1 = i - p_190708_.nextInt(i / 4); int j1 = 0; this.createTunnel(p_190704_, p_190705_, p_190706_, p_190707_, p_190708_.nextLong(), p_190709_, d0, d1, d2, d3, d4, f2, f, f3, 0, i1, this.getYScale(), p_190711_, worldcarver$carveskipchecker); } } return true; } this is basically the normal CaveWorldCarver class but i cant access floorLevel from outside the original package, any help is appreciated! -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
Awesome thank you so much! -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
Its gotten me a lot farther, now i got to find a way to add it to my biomes since the addCarver method is looking for a holder, any ideas? -
Help With Registering Configured WorldCarver 1.18.2
UHQ_GAMES replied to UHQ_GAMES's topic in Modder Support
oh i didnt even think of that! thank you very much! -
UHQ_GAMES changed their profile photo
-
Hey All! I'm trying to register my configured mod carver in 1.18.2 and I'm have a hard time finding a method to register it. Any help would be greatly appreciated! Relevant code below package net.regionsunexplored.world.gen.carver; import net.minecraft.core.Holder; import net.minecraft.data.BuiltinRegistries; import net.minecraft.util.valueproviders.ConstantFloat; import net.minecraft.util.valueproviders.TrapezoidFloat; import net.minecraft.util.valueproviders.UniformFloat; import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.levelgen.VerticalAnchor; import net.minecraft.world.level.levelgen.carver.CanyonCarverConfiguration; import net.minecraft.world.level.levelgen.carver.CarverConfiguration; import net.minecraft.world.level.levelgen.carver.CarverDebugSettings; import net.minecraft.world.level.levelgen.carver.CaveCarverConfiguration; import net.minecraft.world.level.levelgen.carver.ConfiguredWorldCarver; import net.minecraft.world.level.levelgen.carver.WorldCarver; import net.minecraft.world.level.levelgen.heightproviders.UniformHeight; import net.minecraft.core.Registry; import net.minecraft.data.worldgen.Carvers; import net.minecraft.resources.ResourceLocation; public class ModCarvers{ public static final Holder<ConfiguredWorldCarver<CaveCarverConfiguration>> MOD_CAVE = register("mod_cave", ModWorldCarver.RU_CAVE.configured(new CaveCarverConfiguration(0.15F, UniformHeight.of(VerticalAnchor.aboveBottom(8), VerticalAnchor.absolute(180)), UniformFloat.of(0.1F, 0.9F), VerticalAnchor.aboveBottom(8), CarverDebugSettings.of(false, Blocks.CRIMSON_BUTTON.defaultBlockState()), UniformFloat.of(0.7F, 1.4F), UniformFloat.of(0.8F, 1.3F), UniformFloat.of(-1.0F, -0.4F)))); private static <WC extends CarverConfiguration> Holder<ConfiguredWorldCarver<WC>> register(String name, ConfiguredWorldCarver<WC> ruCarver) { return BuiltinRegistries.registerExact(BuiltinRegistries.CONFIGURED_CARVER, name, ruCarver); } }