@Override
public void initialize() {
BlockManager blockManager = CoreRegistry.get(BlockManager.class);
Map<Character, LSystemRule> rules = ImmutableMap.<Character, LSystemRule>builder()
.put('A', new LSystemRule("[&FFBFA]////[&BFFFA]////[&FBFFA]", 1.0f))
.put('B', new LSystemRule("[&FFFA]////[&FFFA]////[&FFFA]", 0.8f)).build();
TreeGenerator oakTree = new TreeGeneratorLSystem("FFFFFFA", rules, 4, (float) Math.toRadians(30)).setLeafType(blockManager.getBlock("core:GreenLeaf"))
.setBarkType(blockManager.getBlock("core:OakTrunk")).setGenerationProbability(0.08f);
// Pine
rules = ImmutableMap.<Character, LSystemRule>builder()
.put('A', new LSystemRule("[&FFFFFA]////[&FFFFFA]////[&FFFFFA]", 1.0f)).build();
TreeGenerator pineTree = new TreeGeneratorLSystem("FFFFAFFFFFFFAFFFFA", rules, 4, (float) Math.toRadians(35)).setLeafType(blockManager.getBlock("core:DarkLeaf"))
.setBarkType(blockManager.getBlock("core:PineTrunk")).setGenerationProbability(0.05f);
// Birk
rules = ImmutableMap.<Character, LSystemRule>builder()
.put('A', new LSystemRule("[&FFFAFFF]////[&FFAFFF]////[&FFFAFFF]", 1.0f))
.put('B', new LSystemRule("[&FAF]////[&FAF]////[&FAF]", 0.8f)).build();
TreeGenerator birkTree = new TreeGeneratorLSystem("FFFFAFFFFBFFFFAFFFFBFFFFAFFFFBFF", rules, 4, (float) Math.toRadians(35))
.setLeafType(blockManager.getBlock("core:DarkLeaf"))
.setBarkType(blockManager.getBlock("core:BirkTrunk")).setGenerationProbability(0.02f);
// Oak variation tree
rules = ImmutableMap.<Character, LSystemRule>builder()
.put('A', new LSystemRule("[&FFBFA]////[&BFFFA]////[&FBFFAFFA]", 1.0f))
.put('B', new LSystemRule("[&FFFAFFFF]////[&FFFAFFF]////[&FFFAFFAA]", 0.8f)).build();
TreeGenerator oakVariationTree = new TreeGeneratorLSystem("FFFFFFA", rules, 4, (float) Math.toRadians(35)).setLeafType(blockManager.getBlock("core:GreenLeaf"))
.setBarkType(blockManager.getBlock("core:OakTrunk")).setGenerationProbability(0.08f);
// A red tree
rules = ImmutableMap.<Character, LSystemRule>builder()
.put('A', new LSystemRule("[&FFAFF]////[&FFAFF]////[&FFAFF]", 1.0f)).build();
TreeGenerator redTree = new TreeGeneratorLSystem("FFFFFAFAFAF", rules, 4, (float) Math.toRadians(40)).setLeafType(blockManager.getBlock("core:RedLeaf"))
.setBarkType(blockManager.getBlock("core:OakTrunk")).setGenerationProbability(0.05f);
// Cactus
TreeGenerator cactus = new TreeGeneratorCactus().setTrunkType(blockManager.getBlock("core:Cactus")).setGenerationProbability(0.05f);