package net.minecraft.world.level.levelgen.feature.rootplacers; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.core.HolderSet; import net.minecraft.core.RegistryCodecs; import net.minecraft.core.registries.Registries; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider; public record MangroveRootPlacement( HolderSet canGrowThrough, HolderSet muddyRootsIn, BlockStateProvider muddyRootsProvider, int maxRootWidth, int maxRootLength, float randomSkewChance ) { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group( RegistryCodecs.homogeneousList(Registries.BLOCK).fieldOf("can_grow_through").forGetter(mangroveRootPlacement -> mangroveRootPlacement.canGrowThrough), RegistryCodecs.homogeneousList(Registries.BLOCK).fieldOf("muddy_roots_in").forGetter(mangroveRootPlacement -> mangroveRootPlacement.muddyRootsIn), BlockStateProvider.CODEC.fieldOf("muddy_roots_provider").forGetter(mangroveRootPlacement -> mangroveRootPlacement.muddyRootsProvider), Codec.intRange(1, 12).fieldOf("max_root_width").forGetter(mangroveRootPlacement -> mangroveRootPlacement.maxRootWidth), Codec.intRange(1, 64).fieldOf("max_root_length").forGetter(mangroveRootPlacement -> mangroveRootPlacement.maxRootLength), Codec.floatRange(0.0F, 1.0F).fieldOf("random_skew_chance").forGetter(mangroveRootPlacement -> mangroveRootPlacement.randomSkewChance) ) .apply(instance, MangroveRootPlacement::new) ); }