[Changes] Use vanilla rules to spread flowers/grass when bonemealing end blocks

This commit is contained in:
Frank 2022-11-18 18:33:09 +01:00
parent ba2bd1490c
commit 308065dee1
3 changed files with 274 additions and 78 deletions

View file

@ -7,6 +7,8 @@ import org.betterx.bclib.api.v2.levelgen.biomes.BiomeAPI;
import org.betterx.bclib.api.v3.levelgen.features.BCLConfigureFeature; import org.betterx.bclib.api.v3.levelgen.features.BCLConfigureFeature;
import org.betterx.bclib.api.v3.levelgen.features.BCLFeature; import org.betterx.bclib.api.v3.levelgen.features.BCLFeature;
import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder; import org.betterx.bclib.api.v3.levelgen.features.BCLFeatureBuilder;
import org.betterx.bclib.api.v3.levelgen.features.config.ConditionFeatureConfig;
import org.betterx.bclib.api.v3.levelgen.features.placement.InBiome;
import org.betterx.bclib.util.JsonFactory; import org.betterx.bclib.util.JsonFactory;
import org.betterx.betterend.BetterEnd; import org.betterx.betterend.BetterEnd;
import org.betterx.betterend.complexmaterials.StoneMaterial; import org.betterx.betterend.complexmaterials.StoneMaterial;
@ -32,11 +34,10 @@ import net.minecraft.world.level.levelgen.GenerationStep;
import net.minecraft.world.level.levelgen.GenerationStep.Decoration; import net.minecraft.world.level.levelgen.GenerationStep.Decoration;
import net.minecraft.world.level.levelgen.feature.Feature; import net.minecraft.world.level.levelgen.feature.Feature;
import net.minecraft.world.level.levelgen.feature.OreFeature; import net.minecraft.world.level.levelgen.feature.OreFeature;
import net.minecraft.world.level.levelgen.feature.configurations.FeatureConfiguration; import net.minecraft.world.level.levelgen.feature.RandomPatchFeature;
import net.minecraft.world.level.levelgen.feature.configurations.NoneFeatureConfiguration; import net.minecraft.world.level.levelgen.feature.configurations.*;
import net.minecraft.world.level.levelgen.feature.configurations.OreConfiguration;
import net.minecraft.world.level.levelgen.feature.configurations.SimpleBlockConfiguration;
import net.minecraft.world.level.levelgen.feature.stateproviders.SimpleStateProvider; import net.minecraft.world.level.levelgen.feature.stateproviders.SimpleStateProvider;
import net.minecraft.world.level.levelgen.placement.PlacedFeature;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.google.gson.JsonArray; import com.google.gson.JsonArray;
@ -1047,6 +1048,129 @@ public class EndFeatures {
.buildAndRegister(); .buildAndRegister();
private static final Holder<PlacedFeature> BONEMEAL_END_MOSS_NOT_GLOWING_GRASSLANDS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_end_moss_not_glowing_grasslands"))
.add(EndBlocks.CREEPING_MOSS, 10)
.add(EndBlocks.UMBRELLA_MOSS, 10)
.inlinePlace().build();
private static final Holder<PlacedFeature> BONEMEAL_END_MOSS_GLOWING_GRASSLANDS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_end_moss_glowing_grasslands"))
.add(EndBlocks.CREEPING_MOSS, 10)
.add(EndBlocks.UMBRELLA_MOSS, 10)
.add(EndBlocks.BLOOMING_COOKSONIA, 100)
.add(EndBlocks.VAIOLUSH_FERN, 100)
.add(EndBlocks.FRACTURN, 100)
.add(EndBlocks.SALTEAGO, 100)
.add(EndBlocks.TWISTED_UMBRELLA_MOSS, 10)
.inlinePlace().build();
public static final BCLConfigureFeature<Feature<ConditionFeatureConfig>, ConditionFeatureConfig> BONEMEAL_END_MOSS = BCLFeatureBuilder
.start(
BetterEnd.makeID("bonemeal_end_moss"),
BCLFeature.CONDITION
)
.configuration(new ConditionFeatureConfig(
InBiome.matchingID(EndBiomes.GLOWING_GRASSLANDS.getID()),
BONEMEAL_END_MOSS_GLOWING_GRASSLANDS,
BONEMEAL_END_MOSS_NOT_GLOWING_GRASSLANDS
))
.buildAndRegister();
private static final Holder<PlacedFeature> BONEMEAL_RUTISCUS_NOT_LANTERN_WOODS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_rutiscus_not_lantern_woods"))
.add(EndBlocks.ORANGO, 100)
.add(EndBlocks.AERIDIUM, 20)
.add(EndBlocks.LUTEBUS, 20)
.add(EndBlocks.LAMELLARIUM, 100)
.inlinePlace()
.build();
private static final Holder<PlacedFeature> BONEMEAL_RUTISCUS_LANTERN_WOODS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_rutiscus_lantern_woods"))
.add(EndBlocks.AERIDIUM, 20)
.add(EndBlocks.BOLUX_MUSHROOM, 5)
.add(EndBlocks.LAMELLARIUM, 100)
.inlinePlace()
.build();
public static final BCLConfigureFeature<Feature<ConditionFeatureConfig>, ConditionFeatureConfig> BONEMEAL_RUTISCUS = BCLFeatureBuilder
.start(
BetterEnd.makeID("bonemeal_rutiscus"),
BCLFeature.CONDITION
)
.configuration(new ConditionFeatureConfig(
InBiome.matchingID(EndBiomes.LANTERN_WOODS.getID()),
BONEMEAL_RUTISCUS_LANTERN_WOODS,
BONEMEAL_RUTISCUS_NOT_LANTERN_WOODS
))
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_END_MYCELIUM = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_end_mycelium"))
.add(EndBlocks.CREEPING_MOSS, 100)
.add(EndBlocks.UMBRELLA_MOSS, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_JUNGLE_MOSS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_jungle_moss"))
.add(EndBlocks.JUNGLE_GRASS, 100)
.add(EndBlocks.TWISTED_UMBRELLA_MOSS, 100)
.add(EndBlocks.SMALL_JELLYSHROOM, 10)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_SANGNUM = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_sangnum"))
.add(EndBlocks.CLAWFERN, 100)
.add(EndBlocks.GLOBULAGUS, 100)
.add(EndBlocks.SMALL_AMARANITA_MUSHROOM, 10)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_MOSSY_DRAGON_BONE = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_mossy_dragon_bone"))
.add(EndBlocks.CLAWFERN, 100)
.add(EndBlocks.GLOBULAGUS, 100)
.add(EndBlocks.SMALL_AMARANITA_MUSHROOM, 10)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_MOSSY_OBSIDIAN = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_mossy_obsidian"))
.add(EndBlocks.CLAWFERN, 100)
.add(EndBlocks.GLOBULAGUS, 100)
.add(EndBlocks.SMALL_AMARANITA_MUSHROOM, 10)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_CAVE_MOSS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_cave_moss"))
.add(EndBlocks.CAVE_GRASS, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_CHORUS_NYLIUM = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_chorus_nylium"))
.add(EndBlocks.CHORUS_GRASS, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_CRYSTAL_MOSS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_crystal_moss"))
.add(EndBlocks.CRYSTAL_GRASS, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_SHADOW_GRASS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_shadow_grass"))
.add(EndBlocks.SHADOW_PLANT, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_PINK_MOSS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_pink_moss"))
.add(EndBlocks.BUSHY_GRASS, 100)
.buildAndRegister();
public static final BCLConfigureFeature<RandomPatchFeature, RandomPatchConfiguration> BONEMEAL_AMBER_MOSS = BCLFeatureBuilder
.startBonemealPatch(BetterEnd.makeID("bonemeal_amber_moss"))
.add(EndBlocks.AMBER_GRASS, 100)
.buildAndRegister();
public static <F extends Feature<FC>, FC extends FeatureConfiguration> F inlineBuild(String name, F feature) { public static <F extends Feature<FC>, FC extends FeatureConfiguration> F inlineBuild(String name, F feature) {
ResourceLocation l = BetterEnd.makeID(name); ResourceLocation l = BetterEnd.makeID(name);
if (Registry.FEATURE.containsKey(l)) { if (Registry.FEATURE.containsKey(l)) {

View file

@ -1,6 +1,5 @@
package org.betterx.betterend.registry; package org.betterx.betterend.registry;
import org.betterx.bclib.api.v2.BonemealAPI;
import org.betterx.bclib.api.v2.ComposterAPI; import org.betterx.bclib.api.v2.ComposterAPI;
import org.betterx.bclib.blocks.BaseVineBlock; import org.betterx.bclib.blocks.BaseVineBlock;
import org.betterx.bclib.blocks.SimpleLeavesBlock; import org.betterx.bclib.blocks.SimpleLeavesBlock;
@ -21,7 +20,6 @@ import net.minecraft.world.food.FoodProperties;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.Items; import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.LeavesBlock; import net.minecraft.world.level.block.LeavesBlock;
import net.minecraft.world.level.block.state.BlockBehaviour.Properties; import net.minecraft.world.level.block.state.BlockBehaviour.Properties;
import net.minecraft.world.level.material.Material; import net.minecraft.world.level.material.Material;
@ -45,6 +43,13 @@ public class EndTags {
public static final TagKey<Item> ALLOYING_GOLD = TagManager.ITEMS.makeTag(BetterEnd.MOD_ID, "alloying_gold"); public static final TagKey<Item> ALLOYING_GOLD = TagManager.ITEMS.makeTag(BetterEnd.MOD_ID, "alloying_gold");
public static final TagKey<Item> ALLOYING_COPPER = TagManager.ITEMS.makeTag(BetterEnd.MOD_ID, "alloying_copper"); public static final TagKey<Item> ALLOYING_COPPER = TagManager.ITEMS.makeTag(BetterEnd.MOD_ID, "alloying_copper");
public static final TagKey<Block> BONEMEAL_SOURCE_DRAGON_BONE = TagManager.BLOCKS.makeTogetherTag(
"bonemeal/source/dragon_bone"
);
public static final TagKey<Block> BONEMEAL_TARGET_DRAGON_BONE = TagManager.BLOCKS.makeTogetherTag(
"bonemeal/target/dragon_bone"
);
public static void register() { public static void register() {
addEndGround(EndBlocks.THALLASIUM.ore); addEndGround(EndBlocks.THALLASIUM.ore);
addEndGround(EndBlocks.ENDSTONE_DUST); addEndGround(EndBlocks.ENDSTONE_DUST);
@ -68,8 +73,6 @@ public class EndTags {
if (block instanceof EndTerrainBlock) { if (block instanceof EndTerrainBlock) {
addEndGround(block); addEndGround(block);
TagManager.BLOCKS.add(BlockTags.NYLIUM, block);
BonemealAPI.addSpreadableBlock(block, Blocks.END_STONE);
} else if (block instanceof LeavesBlock || block instanceof SimpleLeavesBlock) { } else if (block instanceof LeavesBlock || block instanceof SimpleLeavesBlock) {
TagManager.BLOCKS.add(BlockTags.LEAVES, block); TagManager.BLOCKS.add(BlockTags.LEAVES, block);
ComposterAPI.allowCompost(0.3f, item); ComposterAPI.allowCompost(0.3f, item);
@ -85,10 +88,6 @@ public class EndTags {
} }
}); });
addEndGround(EndBlocks.CAVE_MOSS); addEndGround(EndBlocks.CAVE_MOSS);
TagManager.BLOCKS.add(BlockTags.NYLIUM, EndBlocks.CAVE_MOSS);
BonemealAPI.addSpreadableBlock(EndBlocks.CAVE_MOSS, Blocks.END_STONE);
BonemealAPI.addSpreadableBlock(EndBlocks.MOSSY_OBSIDIAN, Blocks.OBSIDIAN);
BonemealAPI.addSpreadableBlock(EndBlocks.MOSSY_DRAGON_BONE, EndBlocks.DRAGON_BONE_BLOCK);
List<Item> ITEM_HAMMERS = Lists.newArrayList(); List<Item> ITEM_HAMMERS = Lists.newArrayList();
EndItems.getModItems().forEach(item -> { EndItems.getModItems().forEach(item -> {

View file

@ -2,8 +2,8 @@ package org.betterx.betterend.util;
import org.betterx.bclib.api.v2.BonemealAPI; import org.betterx.bclib.api.v2.BonemealAPI;
import org.betterx.betterend.blocks.basis.EndTerrainBlock; import org.betterx.betterend.blocks.basis.EndTerrainBlock;
import org.betterx.betterend.registry.EndBiomes;
import org.betterx.betterend.registry.EndBlocks; import org.betterx.betterend.registry.EndBlocks;
import org.betterx.betterend.registry.EndFeatures;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
@ -14,82 +14,155 @@ import java.util.List;
public class BonemealPlants { public class BonemealPlants {
public static void init() { public static void init() {
BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MOSS); org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MOSS);
BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MYCELIUM);
BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MYCELIUM);
BonemealAPI.addLandGrass(EndBlocks.CAVE_GRASS, EndBlocks.CAVE_MOSS);
BonemealAPI.addLandGrass(EndBlocks.CHORUS_GRASS, EndBlocks.CHORUS_NYLIUM);
BonemealAPI.addLandGrass(EndBlocks.CRYSTAL_GRASS, EndBlocks.CRYSTAL_MOSS);
BonemealAPI.addLandGrass(EndBlocks.SHADOW_PLANT, EndBlocks.SHADOW_GRASS);
BonemealAPI.addLandGrass(EndBlocks.BUSHY_GRASS, EndBlocks.PINK_MOSS);
BonemealAPI.addLandGrass(EndBlocks.AMBER_GRASS, EndBlocks.AMBER_MOSS);
BonemealAPI.addLandGrass(EndBlocks.JUNGLE_GRASS, EndBlocks.JUNGLE_MOSS);
BonemealAPI.addLandGrass(EndBlocks.TWISTED_UMBRELLA_MOSS, EndBlocks.JUNGLE_MOSS);
BonemealAPI.addLandGrass(EndBlocks.SMALL_JELLYSHROOM, EndBlocks.JUNGLE_MOSS, 0.1F);
BonemealAPI.addLandGrass(
EndBiomes.GLOWING_GRASSLANDS.getID(),
EndBlocks.BLOOMING_COOKSONIA,
EndBlocks.END_MOSS
);
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.VAIOLUSH_FERN, EndBlocks.END_MOSS);
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.FRACTURN, EndBlocks.END_MOSS);
BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.SALTEAGO, EndBlocks.END_MOSS);
BonemealAPI.addLandGrass(
EndBiomes.GLOWING_GRASSLANDS.getID(),
EndBlocks.CREEPING_MOSS,
EndBlocks.END_MOSS, EndBlocks.END_MOSS,
0.1F EndFeatures.BONEMEAL_END_MOSS
);
BonemealAPI.addLandGrass(
EndBiomes.GLOWING_GRASSLANDS.getID(),
EndBlocks.UMBRELLA_MOSS,
EndBlocks.END_MOSS,
0.1F
);
BonemealAPI.addLandGrass(
EndBiomes.GLOWING_GRASSLANDS.getID(),
EndBlocks.TWISTED_UMBRELLA_MOSS,
EndBlocks.END_MOSS,
0.1F
); );
BonemealAPI.addLandGrass(EndBlocks.ORANGO, EndBlocks.RUTISCUS); org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
BonemealAPI.addLandGrass(EndBlocks.AERIDIUM, EndBlocks.RUTISCUS, 0.2F); EndBlocks.RUTISCUS,
BonemealAPI.addLandGrass(EndBlocks.LUTEBUS, EndBlocks.RUTISCUS, 0.2F); EndFeatures.BONEMEAL_RUTISCUS
BonemealAPI.addLandGrass(EndBlocks.LAMELLARIUM, EndBlocks.RUTISCUS); );
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.AERIDIUM, EndBlocks.RUTISCUS, 0.2F); org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.LAMELLARIUM, EndBlocks.RUTISCUS); EndBlocks.END_MYCELIUM,
BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.BOLUX_MUSHROOM, EndBlocks.RUTISCUS, 0.05F); EndFeatures.BONEMEAL_END_MYCELIUM
);
BonemealAPI.addLandGrass( org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.GLOBULAGUS, EndBlocks.JUNGLE_MOSS,
EndFeatures.BONEMEAL_JUNGLE_MOSS
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.SANGNUM, EndBlocks.SANGNUM,
EndBlocks.MOSSY_OBSIDIAN, EndFeatures.BONEMEAL_SANGNUM
EndBlocks.MOSSY_DRAGON_BONE
); );
BonemealAPI.addLandGrass(
EndBlocks.CLAWFERN, org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.SANGNUM,
EndBlocks.MOSSY_OBSIDIAN, EndBlocks.MOSSY_OBSIDIAN,
EndBlocks.MOSSY_DRAGON_BONE EndFeatures.BONEMEAL_MOSSY_OBSIDIAN
); );
BonemealAPI.addLandGrass(EndBlocks.SANGNUM, EndBlocks.SMALL_AMARANITA_MUSHROOM, 0.1F);
BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_OBSIDIAN, 0.1F);
BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_DRAGON_BONE, 0.1F);
BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_DRAGON_BONE); org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_DRAGON_BONE); EndBlocks.MOSSY_DRAGON_BONE,
BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_DRAGON_BONE, 0.1F); EndFeatures.BONEMEAL_MOSSY_DRAGON_BONE
);
BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_OBSIDIAN); org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_OBSIDIAN); EndBlocks.CAVE_MOSS,
BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_OBSIDIAN, 0.1F); EndFeatures.BONEMEAL_CAVE_MOSS
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.CHORUS_NYLIUM,
EndFeatures.BONEMEAL_CHORUS_NYLIUM
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.CRYSTAL_MOSS,
EndFeatures.BONEMEAL_CRYSTAL_MOSS
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.SHADOW_GRASS,
EndFeatures.BONEMEAL_SHADOW_GRASS
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.PINK_MOSS,
EndFeatures.BONEMEAL_PINK_MOSS
);
org.betterx.bclib.api.v3.bonemeal.BonemealAPI.INSTANCE.addSpreadableFeatures(
EndBlocks.AMBER_MOSS,
EndFeatures.BONEMEAL_AMBER_MOSS
);
// BonemealAPI.addLandGrass(EndBlocks.CAVE_GRASS, EndBlocks.CAVE_MOSS);
//
// BonemealAPI.addLandGrass(EndBlocks.CHORUS_GRASS, EndBlocks.CHORUS_NYLIUM);
//
// BonemealAPI.addLandGrass(EndBlocks.CRYSTAL_GRASS, EndBlocks.CRYSTAL_MOSS);
//
// BonemealAPI.addLandGrass(EndBlocks.SHADOW_PLANT, EndBlocks.SHADOW_GRASS);
//
// BonemealAPI.addLandGrass(EndBlocks.BUSHY_GRASS, EndBlocks.PINK_MOSS);
//
// BonemealAPI.addLandGrass(EndBlocks.AMBER_GRASS, EndBlocks.AMBER_MOSS);
// BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MOSS);
// BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MOSS);
//
// BonemealAPI.addLandGrass(
// EndBiomes.GLOWING_GRASSLANDS.getID(),
// EndBlocks.BLOOMING_COOKSONIA,
// EndBlocks.END_MOSS
// );
// BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.VAIOLUSH_FERN, EndBlocks.END_MOSS);
// BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.FRACTURN, EndBlocks.END_MOSS);
// BonemealAPI.addLandGrass(EndBiomes.GLOWING_GRASSLANDS.getID(), EndBlocks.SALTEAGO, EndBlocks.END_MOSS);
// BonemealAPI.addLandGrass(
// EndBiomes.GLOWING_GRASSLANDS.getID(),
// EndBlocks.CREEPING_MOSS,
// EndBlocks.END_MOSS,
// 0.1F
// );
// BonemealAPI.addLandGrass(
// EndBiomes.GLOWING_GRASSLANDS.getID(),
// EndBlocks.UMBRELLA_MOSS,
// EndBlocks.END_MOSS,
// 0.1F
// );
// BonemealAPI.addLandGrass(
// EndBiomes.GLOWING_GRASSLANDS.getID(),
// EndBlocks.TWISTED_UMBRELLA_MOSS,
// EndBlocks.END_MOSS,
// 0.1F
// );
// BonemealAPI.addLandGrass(EndBlocks.CREEPING_MOSS, EndBlocks.END_MYCELIUM);
// BonemealAPI.addLandGrass(EndBlocks.UMBRELLA_MOSS, EndBlocks.END_MYCELIUM);
// BonemealAPI.addLandGrass(EndBlocks.JUNGLE_GRASS, EndBlocks.JUNGLE_MOSS);
// BonemealAPI.addLandGrass(EndBlocks.TWISTED_UMBRELLA_MOSS, EndBlocks.JUNGLE_MOSS);
// BonemealAPI.addLandGrass(EndBlocks.SMALL_JELLYSHROOM, EndBlocks.JUNGLE_MOSS, 0.1F);
// BonemealAPI.addLandGrass(EndBlocks.ORANGO, EndBlocks.RUTISCUS);
// BonemealAPI.addLandGrass(EndBlocks.AERIDIUM, EndBlocks.RUTISCUS, 0.2F);
// BonemealAPI.addLandGrass(EndBlocks.LUTEBUS, EndBlocks.RUTISCUS, 0.2F);
// BonemealAPI.addLandGrass(EndBlocks.LAMELLARIUM, EndBlocks.RUTISCUS);
//
// BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.AERIDIUM, EndBlocks.RUTISCUS, 0.2F);
// BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.LAMELLARIUM, EndBlocks.RUTISCUS);
// BonemealAPI.addLandGrass(EndBiomes.LANTERN_WOODS.getID(), EndBlocks.BOLUX_MUSHROOM, EndBlocks.RUTISCUS, 0.05F);
// BonemealAPI.addLandGrass(
// EndBlocks.GLOBULAGUS,
// EndBlocks.SANGNUM,
// EndBlocks.MOSSY_OBSIDIAN,
// EndBlocks.MOSSY_DRAGON_BONE
// );
// BonemealAPI.addLandGrass(
// EndBlocks.CLAWFERN,
// EndBlocks.SANGNUM,
// EndBlocks.MOSSY_OBSIDIAN,
// EndBlocks.MOSSY_DRAGON_BONE
// );
// BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.SANGNUM, 0.1F);
// BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_DRAGON_BONE, 0.1F);
// BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_DRAGON_BONE);
// BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_DRAGON_BONE);
// BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_DRAGON_BONE, 0.1F);
// BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_OBSIDIAN, 0.1F);
// BonemealAPI.addLandGrass(EndBlocks.GLOBULAGUS, EndBlocks.MOSSY_OBSIDIAN);
// BonemealAPI.addLandGrass(EndBlocks.CLAWFERN, EndBlocks.MOSSY_OBSIDIAN);
// BonemealAPI.addLandGrass(EndBlocks.SMALL_AMARANITA_MUSHROOM, EndBlocks.MOSSY_OBSIDIAN, 0.1F);
Block[] charnias = new Block[]{ Block[] charnias = new Block[]{
EndBlocks.CHARNIA_CYAN, EndBlocks.CHARNIA_CYAN,