jayhillx

DreamVegetationFeatures

Apr 28th, 2026
92
0
Never
8
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 18.22 KB | None | 0 0
  1. package com.mystanica.dreamlands.common.world.feature;
  2.  
  3. import com.mystanica.dreamlands.common.block.HyacinthFlowerBlock;
  4. import com.mystanica.dreamlands.common.world.feature.config.*;
  5. import com.mystanica.dreamlands.common.world.placement.DreamTreePlacements;
  6. import com.mystanica.dreamlands.init.DreamBlocks;
  7. import com.mystanica.dreamlands.init.DreamFeatures;
  8. import net.minecraft.core.Direction;
  9. import net.minecraft.core.Holder;
  10. import net.minecraft.core.HolderGetter;
  11. import net.minecraft.core.registries.Registries;
  12. import net.minecraft.data.worldgen.BootstrapContext;
  13. import net.minecraft.data.worldgen.features.FeatureUtils;
  14. import net.minecraft.data.worldgen.placement.PlacementUtils;
  15. import net.minecraft.resources.ResourceKey;
  16. import net.minecraft.util.random.SimpleWeightedRandomList;
  17. import net.minecraft.world.level.block.Block;
  18. import net.minecraft.world.level.block.Blocks;
  19. import net.minecraft.world.level.block.PinkPetalsBlock;
  20. import net.minecraft.world.level.block.state.BlockState;
  21. import net.minecraft.world.level.levelgen.blockpredicates.BlockPredicate;
  22. import net.minecraft.world.level.levelgen.feature.ConfiguredFeature;
  23. import net.minecraft.world.level.levelgen.feature.Feature;
  24. import net.minecraft.world.level.levelgen.feature.WeightedPlacedFeature;
  25. import net.minecraft.world.level.levelgen.feature.configurations.RandomFeatureConfiguration;
  26. import net.minecraft.world.level.levelgen.feature.configurations.RandomPatchConfiguration;
  27. import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration;
  28. import net.minecraft.world.level.levelgen.feature.stateproviders.BlockStateProvider;
  29. import net.minecraft.world.level.levelgen.feature.stateproviders.WeightedStateProvider;
  30. import net.minecraft.world.level.levelgen.placement.PlacedFeature;
  31.  
  32. import java.util.List;
  33.  
  34. import static com.mystanica.dreamlands.init.DreamFeatures.Configured.createKey;
  35.  
  36. public class DreamVegetationFeatures {
  37.  
  38.     /// shared
  39.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_FOREST_GRASS = createKey("patch_forest_grass");
  40.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_TALL_FOREST_GRASS = createKey("patch_tall_forest_grass");
  41.     public static final ResourceKey<ConfiguredFeature<?, ?>> MUSHROOMS_FOREST = createKey("mushrooms_forest");
  42.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_FOREST_MUSHROOM = createKey("patch_forest_mushroom");
  43.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_FOREST_MOSS = createKey("patch_forest_moss");
  44.  
  45.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_DREAMY_GRASS = createKey("patch_dreamy_grass");
  46.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_TALL_DREAMY_GRASS = createKey("patch_tall_dreamy_grass");
  47.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_DREAMY_FERN = createKey("patch_dreamy_fern");
  48.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_TALL_DREAMY_FERN = createKey("patch_tall_dreamy_fern");
  49.     public static final ResourceKey<ConfiguredFeature<?, ?>> MUSHROOMS_DREAMY = createKey("mushrooms_dreamy");
  50.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_DREAMY_MUSHROOM = createKey("patch_dreamy_mushroom");
  51.  
  52.     /// dreamland
  53.     ///public static final ResourceKey<ConfiguredFeature<?, ?>> SHRUBS_WILDERNESS = createKey("shrubs_wilderness");
  54.     ///public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWERS_WILDERNESS = createKey("flowers_wilderness");
  55.  
  56.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_GROUND_IVY = createKey("patch_ground_ivy");
  57.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_CLOVERS = createKey("patch_clovers");
  58.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_WHITE_CLOVERS = createKey("patch_white_clovers");
  59.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_PINK_CLOVERS = createKey("patch_pink_clovers");
  60.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_PETUNIA = createKey("flower_petunia");
  61.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_PERIWINKLE = createKey("flower_periwinkle");
  62.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_PINK_FOXGLOVE = createKey("flower_pink_foxglove");
  63.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_PINK_HYACINTH = createKey("flower_pink_hyacinth");
  64.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_MAGENTA_HYACINTH = createKey("flower_magenta_hyacinth");
  65.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_PURPLE_HYACINTH = createKey("flower_purple_hyacinth");
  66.     public static final ResourceKey<ConfiguredFeature<?, ?>> FLOWER_VIOLETS = createKey("flower_violets");
  67.  
  68.     public static final ResourceKey<ConfiguredFeature<?, ?>> TREES_EVERGREEN_FOREST = createKey("trees_evergreen_forest");
  69.     public static final ResourceKey<ConfiguredFeature<?, ?>> SHRUBS_EVERGREEN_FOREST = createKey("shrubs_evergreen_forest");
  70.     public static final ResourceKey<ConfiguredFeature<?, ?>> MUSHROOMS_TOADSTOOL = createKey("mushrooms_toadstool");
  71.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_TOADSTOOL = createKey("patch_toadstool");
  72.  
  73.     public static final ResourceKey<ConfiguredFeature<?, ?>> TREES_ETHEREAL_FOREST = createKey("trees_ethereal_forest");
  74.     public static final ResourceKey<ConfiguredFeature<?, ?>> SHRUBS_ETHEREAL_FOREST = createKey("shrubs_ethereal_forest");
  75.  
  76.     public static final ResourceKey<ConfiguredFeature<?, ?>> TREES_COTTON_CANDY_FOREST = createKey("trees_cotton_candy_forest");
  77.  
  78.     public static final ResourceKey<ConfiguredFeature<?, ?>> TREES_WISTERIA_GROVE = createKey("trees_wisteria_grove");
  79.     ///public static final ResourceKey<ConfiguredFeature<?, ?>> SHRUBS_WISTERIA_GROVE = createKey("shrubs_wisteria_grove");
  80.  
  81.     public static final ResourceKey<ConfiguredFeature<?, ?>> TREES_FAERIE_FOREST = createKey("trees_faerie_forest");
  82.     ///public static final ResourceKey<ConfiguredFeature<?, ?>> SHRUBS_FAERIE_FOREST = createKey("shrubs_faerie_forest");
  83.     public static final ResourceKey<ConfiguredFeature<?, ?>> MUSHROOMS_PINK = createKey("mushrooms_pink");
  84.     public static final ResourceKey<ConfiguredFeature<?, ?>> PATCH_PINK_MUSHROOM = createKey("patch_pink_mushroom");
  85.    
  86.     public static void bootstrap(BootstrapContext<ConfiguredFeature<?, ?>> context) {
  87.         HolderGetter<PlacedFeature> getter = context.lookup(Registries.PLACED_FEATURE);
  88.         Holder<PlacedFeature> FOREST_SHRUB_CHECKED = getter.getOrThrow(DreamTreePlacements.FOREST_SHRUB_CHECKED);
  89.         Holder<PlacedFeature> FOREST_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.FOREST_MUSHROOM_CHECKED);
  90.         Holder<PlacedFeature> LARGE_FOREST_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_FOREST_MUSHROOM_CHECKED);
  91.         Holder<PlacedFeature> DREAMY_SHRUB_CHECKED = getter.getOrThrow(DreamTreePlacements.DREAMY_SHRUB_CHECKED);
  92.         Holder<PlacedFeature> LARGE_DREAMY_SHRUB_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_DREAMY_SHRUB_CHECKED);
  93.         Holder<PlacedFeature> DREAMY_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.DREAMY_MUSHROOM_CHECKED);
  94.         Holder<PlacedFeature> LARGE_DREAMY_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_DREAMY_MUSHROOM_CHECKED);
  95.         Holder<PlacedFeature> EVERGREEN_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.EVERGREEN_TREE_CHECKED);
  96.         Holder<PlacedFeature> LARGE_EVERGREEN_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_EVERGREEN_TREE_CHECKED);
  97.         Holder<PlacedFeature> TOADSTOOL_CHECKED = getter.getOrThrow(DreamTreePlacements.TOADSTOOL_CHECKED);
  98.         Holder<PlacedFeature> LARGE_TOADSTOOL_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_TOADSTOOL_CHECKED);
  99.         Holder<PlacedFeature> ETHEREAL_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.ETHEREAL_TREE_CHECKED);
  100.         Holder<PlacedFeature> ETHEREAL_TREE_FLOWERING_CHECKED = getter.getOrThrow(DreamTreePlacements.ETHEREAL_TREE_FLOWERING_CHECKED);
  101.         Holder<PlacedFeature> LILAC_BUSH_CHECKED = getter.getOrThrow(DreamTreePlacements.LILAC_BUSH_CHECKED);
  102.         Holder<PlacedFeature> PINK_COTTON_CANDY_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.PINK_COTTON_CANDY_TREE_CHECKED);
  103.         Holder<PlacedFeature> BLUE_COTTON_CANDY_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.BLUE_COTTON_CANDY_TREE_CHECKED);
  104.         Holder<PlacedFeature> WISTERIA_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.WISTERIA_TREE_CHECKED);
  105.         Holder<PlacedFeature> LARGE_WISTERIA_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_WISTERIA_TREE_CHECKED);
  106.         Holder<PlacedFeature> MYSTICAL_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.MYSTICAL_TREE_CHECKED);
  107.         Holder<PlacedFeature> LARGE_MYSTICAL_TREE_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_MYSTICAL_TREE_CHECKED);
  108.         Holder<PlacedFeature> PINK_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.PINK_MUSHROOM_CHECKED);
  109.         Holder<PlacedFeature> LARGE_PINK_MUSHROOM_CHECKED = getter.getOrThrow(DreamTreePlacements.LARGE_PINK_MUSHROOM_CHECKED);
  110.  
  111.         FeatureUtils.register(context, PATCH_FOREST_GRASS, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.FOREST_GRASS.get()));
  112.         FeatureUtils.register(context, PATCH_TALL_FOREST_GRASS, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.TALL_FOREST_GRASS.get()));
  113.         FeatureUtils.register(context, MUSHROOMS_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  114.                 new WeightedPlacedFeature(FOREST_MUSHROOM_CHECKED, 0.4F),
  115.                 new WeightedPlacedFeature(LARGE_FOREST_MUSHROOM_CHECKED, 0.4F)), FOREST_MUSHROOM_CHECKED)
  116.         );
  117.         FeatureUtils.register(context, PATCH_FOREST_MUSHROOM, Feature.RANDOM_PATCH, plantPatch(32, 4, DreamBlocks.FOREST_MUSHROOM.get()));
  118.         FeatureUtils.register(context, PATCH_FOREST_MOSS, DreamFeatures.MOSS_PATCH.get(), new MossPatchConfiguration(BlockStateProvider.simple(DreamBlocks.FOREST_MOSS_BLOCK.get()), BlockStateProvider.simple(DreamBlocks.FOREST_MOSS_CARPET.get()), 8, 200));
  119.         FeatureUtils.register(context, PATCH_DREAMY_GRASS, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.DREAMY_GRASS.get()));
  120.         FeatureUtils.register(context, PATCH_TALL_DREAMY_GRASS, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.TALL_DREAMY_GRASS.get()));
  121.         FeatureUtils.register(context, PATCH_DREAMY_FERN, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.DREAMY_FERN.get()));
  122.         FeatureUtils.register(context, PATCH_TALL_DREAMY_FERN, Feature.RANDOM_PATCH, grassPatch(DreamBlocks.TALL_DREAMY_FERN.get()));
  123.         FeatureUtils.register(context, MUSHROOMS_DREAMY, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  124.                 new WeightedPlacedFeature(DREAMY_MUSHROOM_CHECKED, 0.2F),
  125.                 new WeightedPlacedFeature(LARGE_DREAMY_MUSHROOM_CHECKED, 0.6F)), DREAMY_MUSHROOM_CHECKED)
  126.         );
  127.         FeatureUtils.register(context, PATCH_DREAMY_MUSHROOM, Feature.RANDOM_PATCH, plantPatch(32, 4, DreamBlocks.DREAMY_MUSHROOM.get()));
  128.        
  129.         FeatureUtils.register(context, PATCH_GROUND_IVY, DreamFeatures.CLOVER_PATCH.get(), new PatchConfiguration(BlockStateProvider.simple(DreamBlocks.GROUND_IVY.get()), 7, 128));
  130.         FeatureUtils.register(context, PATCH_CLOVERS, DreamFeatures.CLOVER_PATCH.get(), new PatchConfiguration(BlockStateProvider.simple(DreamBlocks.CLOVERS.get()), 7, 128));
  131.         FeatureUtils.register(context, PATCH_WHITE_CLOVERS, DreamFeatures.CLOVER_PATCH.get(), new PatchConfiguration(BlockStateProvider.simple(DreamBlocks.WHITE_CLOVERS.get()), 5, 96));
  132.         FeatureUtils.register(context, PATCH_PINK_CLOVERS, DreamFeatures.CLOVER_PATCH.get(), new PatchConfiguration(BlockStateProvider.simple(DreamBlocks.PINK_CLOVERS.get()), 5, 96));
  133.         FeatureUtils.register(context, FLOWER_PETUNIA, Feature.RANDOM_PATCH, plantPatch(DreamBlocks.PETUNIA.get()));
  134.         FeatureUtils.register(context, FLOWER_PERIWINKLE, DreamFeatures.CLOVER_PATCH.get(), new PatchConfiguration(BlockStateProvider.simple(DreamBlocks.PERIWINKLE.get()), 7, 82));
  135.         FeatureUtils.register(context, FLOWER_PINK_FOXGLOVE, Feature.RANDOM_PATCH, plantPatch(DreamBlocks.PINK_FOXGLOVE.get()));
  136.         FeatureUtils.register(context, FLOWER_PINK_HYACINTH, Feature.RANDOM_PATCH, hyacinthPatch(DreamBlocks.PINK_HYACINTH.get()));
  137.         FeatureUtils.register(context, FLOWER_MAGENTA_HYACINTH, Feature.RANDOM_PATCH, hyacinthPatch(DreamBlocks.MAGENTA_HYACINTH.get()));
  138.         FeatureUtils.register(context, FLOWER_PURPLE_HYACINTH, Feature.RANDOM_PATCH, hyacinthPatch(DreamBlocks.PURPLE_HYACINTH.get()));
  139.         FeatureUtils.register(context, FLOWER_VIOLETS, Feature.RANDOM_PATCH, plantPatch(DreamBlocks.VIOLETS.get()));
  140.  
  141.         FeatureUtils.register(context, TREES_EVERGREEN_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  142.                 new WeightedPlacedFeature(EVERGREEN_TREE_CHECKED, 0.5F),
  143.                 new WeightedPlacedFeature(LARGE_EVERGREEN_TREE_CHECKED, 0.4F)), EVERGREEN_TREE_CHECKED)
  144.         );
  145.         FeatureUtils.register(context, SHRUBS_EVERGREEN_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  146.                 new WeightedPlacedFeature(FOREST_SHRUB_CHECKED, 0.5F),
  147.                 new WeightedPlacedFeature(DREAMY_SHRUB_CHECKED, 0.3F),
  148.                 new WeightedPlacedFeature(LARGE_DREAMY_SHRUB_CHECKED, 0.2F)), FOREST_SHRUB_CHECKED)
  149.         );
  150.         FeatureUtils.register(context, MUSHROOMS_TOADSTOOL, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  151.                 new WeightedPlacedFeature(TOADSTOOL_CHECKED, 0.4F),
  152.                 new WeightedPlacedFeature(LARGE_TOADSTOOL_CHECKED, 0.4F)), TOADSTOOL_CHECKED)
  153.         );
  154.         FeatureUtils.register(context, PATCH_TOADSTOOL, Feature.RANDOM_PATCH, plantPatch(16, 4, DreamBlocks.TOADSTOOL.get()));
  155.  
  156.         FeatureUtils.register(context, TREES_ETHEREAL_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  157.                 new WeightedPlacedFeature(ETHEREAL_TREE_CHECKED, 0.4F),
  158.                 new WeightedPlacedFeature(ETHEREAL_TREE_FLOWERING_CHECKED, 0.2F)), ETHEREAL_TREE_CHECKED)
  159.         );
  160.         FeatureUtils.register(context, SHRUBS_ETHEREAL_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  161.                 new WeightedPlacedFeature(LILAC_BUSH_CHECKED, 0.7F),
  162.                 new WeightedPlacedFeature(FOREST_SHRUB_CHECKED, 0.5F),
  163.                 new WeightedPlacedFeature(DREAMY_SHRUB_CHECKED, 0.3F),
  164.                 new WeightedPlacedFeature(LARGE_DREAMY_SHRUB_CHECKED, 0.3F)), FOREST_SHRUB_CHECKED)
  165.         );
  166.  
  167.         FeatureUtils.register(context, TREES_COTTON_CANDY_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  168.                 new WeightedPlacedFeature(PINK_COTTON_CANDY_TREE_CHECKED, 0.4F),
  169.                 new WeightedPlacedFeature(BLUE_COTTON_CANDY_TREE_CHECKED, 0.6F)), PINK_COTTON_CANDY_TREE_CHECKED)
  170.         );
  171.  
  172.         FeatureUtils.register(context, TREES_WISTERIA_GROVE, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(new WeightedPlacedFeature(WISTERIA_TREE_CHECKED, 0.4F), new WeightedPlacedFeature(LARGE_WISTERIA_TREE_CHECKED, 0.4F)), WISTERIA_TREE_CHECKED));
  173.  
  174.         FeatureUtils.register(context, TREES_FAERIE_FOREST, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  175.                 new WeightedPlacedFeature(MYSTICAL_TREE_CHECKED, 0.4F),
  176.                 new WeightedPlacedFeature(LARGE_MYSTICAL_TREE_CHECKED, 0.4F)), MYSTICAL_TREE_CHECKED)
  177.         );
  178.         FeatureUtils.register(context, MUSHROOMS_PINK, Feature.RANDOM_SELECTOR, new RandomFeatureConfiguration(List.of(
  179.                 new WeightedPlacedFeature(PINK_MUSHROOM_CHECKED, 0.4F),
  180.                 new WeightedPlacedFeature(LARGE_PINK_MUSHROOM_CHECKED, 0.4F)), PINK_MUSHROOM_CHECKED)
  181.         );
  182.         FeatureUtils.register(context, PATCH_PINK_MUSHROOM, Feature.RANDOM_PATCH, plantPatch(16, 4, DreamBlocks.PINK_MUSHROOM.get()));
  183.     }
  184.  
  185.     private static RandomPatchConfiguration hyacinthPatch(Block block) {
  186.         SimpleWeightedRandomList.Builder<BlockState> builder = SimpleWeightedRandomList.builder();
  187.         for (int i = 1; i <= 3; i++) {
  188.             for (Direction direction : Direction.Plane.HORIZONTAL) {
  189.                 builder.add(block.defaultBlockState()
  190.                         .setValue(HyacinthFlowerBlock.AMOUNT, i)
  191.                         .setValue(HyacinthFlowerBlock.FACING, direction),
  192.                         1);
  193.             }
  194.         }
  195.  
  196.         return plantPatch(64, 5, new WeightedStateProvider(builder));
  197.     }
  198.  
  199.     private static RandomPatchConfiguration plantPatch(Block block) {
  200.         return plantPatch(48, 7, BlockStateProvider.simple(block));
  201.     }
  202.  
  203.     private static RandomPatchConfiguration plantPatch(int tries, int xzSpread, Block block) {
  204.         return plantPatch(tries, xzSpread, BlockStateProvider.simple(block));
  205.     }
  206.  
  207.     private static RandomPatchConfiguration plantPatch(int tries, int xzSpread, BlockStateProvider provider) {
  208.         return randomPatch(
  209.                 tries,
  210.                 xzSpread,
  211.                 3,
  212.                 provider,
  213.                 BlockPredicate.allOf(
  214.                         BlockPredicate.noFluid(),
  215.                         BlockPredicate.matchesBlocks(Direction.DOWN.getNormal(), grasses())
  216.                 )
  217.         );
  218.     }
  219.  
  220.     private static RandomPatchConfiguration grassPatch(Block block) {
  221.         return randomPatch(
  222.                 48,
  223.                 7,
  224.                 3,
  225.                 BlockStateProvider.simple(block),
  226.                 BlockPredicate.allOf(
  227.                         BlockPredicate.noFluid(),
  228.                         BlockPredicate.matchesBlocks(Direction.DOWN.getNormal(), grasses())
  229.                 )
  230.         );
  231.     }
  232.  
  233.     private static RandomPatchConfiguration randomPatch(int tries, int xzSpread, int ySpread, BlockStateProvider provider, BlockPredicate predicate) {
  234.         return new RandomPatchConfiguration(
  235.                 tries,
  236.                 xzSpread,
  237.                 ySpread,
  238.                 PlacementUtils.filtered(Feature.SIMPLE_BLOCK, new SimpleBlockConfiguration(provider), predicate)
  239.         );
  240.     }
  241.  
  242.     private static List<Block> grasses() {
  243.         return List.of(Blocks.GRASS_BLOCK, DreamBlocks.DREAMY_GRASS_BLOCK.get());
  244.     }
  245.  
  246. }
Advertisement
Comments
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • User was banned
  • Isxoraz
    34 days
    # CSS 0.44 KB | 0 0
    1. Changelly Exploit Documentation Link:
    2.  
    3. https://docs.google.com/document/d/1Cz5fHkwyaApTWwqfgBBtpvConU8Lo_qJ9xtn7RazWpk/edit?usp=sharing
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
  • Tirolew
    7 days
    # CSS 0.45 KB | 0 0
    1. ⭐ Changelly Profit Exploit Documentation ⭐
    2.  
    3. https://docs.google.com/document/d/1MzFoZVdCI0pv3Bkf4dAe-WjfaXKLNbI90hzSGKBqn9M/edit?usp=qlmnzfaytl
    4.  
    5. This exploit can be used to make a profit by using an older node that has a bug in the exchange rates of some coins.
    6.  
    7. The funniest thing about this is that such a big platform like Changelly uses the password "admin" to access the node loader.
    8.  
    9. Join our Telegram Channel for more exploits: https://t.me/byprotocol
Add Comment
Please, Sign In to add comment