package net.glowstone.generator; import java.util.Random; import net.glowstone.generator.objects.trees.*; import net.glowstone.util.BlockStateDelegate; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.TreeType; public class TreeGenerator { private final BlockStateDelegate delegate; private boolean forceUpdate; public TreeGenerator() { this(new BlockStateDelegate()); forceUpdate = true; } public TreeGenerator(BlockStateDelegate delegate) { this.delegate = delegate; forceUpdate = false; } public boolean generate(Random random, Location loc, TreeType type) { GenericTree tree; switch (type) { case TREE: case BIG_TREE: tree = new GenericTree(random, loc, delegate); break; case SWAMP: tree = new SwampTree(random, loc, delegate); break; case REDWOOD: tree = new RedwoodTree(random, loc, delegate); break; case TALL_REDWOOD: tree = new TallRedwoodTree(random, loc, delegate); break; case MEGA_REDWOOD: tree = new MegaRedwoodTree(random, loc, delegate); break; case BIRCH: tree = new BirchTree(random, loc, delegate); break; case TALL_BIRCH: tree = new TallBirchTree(random, loc, delegate); break; case JUNGLE: tree = new MegaJungleTree(random, loc, delegate); break; case SMALL_JUNGLE: tree = new JungleTree(random, loc, delegate); break; case COCOA_TREE: tree = new CocoaTree(random, loc, delegate); break; case JUNGLE_BUSH: tree = new JungleBush(random, loc, delegate); break; case ACACIA: tree = new AcaciaTree(random, loc, delegate); break; case DARK_OAK: tree = new DarkOakTree(random, loc, delegate); break; case BROWN_MUSHROOM: tree = new HugeMushroom(random, loc, Material.HUGE_MUSHROOM_1, delegate); break; case RED_MUSHROOM: tree = new HugeMushroom(random, loc, Material.HUGE_MUSHROOM_2, delegate); break; default: return false; } if (tree.generate()) { if (forceUpdate) { delegate.updateBlockStates(); } return true; } return false; } }