--- a/net/minecraft/server/WorldGenTreeProvider.java +++ b/net/minecraft/server/WorldGenTreeProvider.java @@ -2,6 +2,7 @@ import java.util.Random; import javax.annotation.Nullable; +import org.bukkit.TreeType; // CraftBukkit public abstract class WorldGenTreeProvider { @@ -16,6 +17,7 @@ if (worldgentreeabstract == null) { return false; } else { + setTreeType(worldgentreeabstract); // CraftBukkit generatoraccess.setTypeAndData(blockposition, Blocks.AIR.getBlockData(), 4); if (worldgentreeabstract.generate(generatoraccess, generatoraccess.getChunkProvider().getChunkGenerator(), random, blockposition, WorldGenFeatureConfiguration.e)) { return true; @@ -25,4 +27,30 @@ } } } + + // CraftBukkit start + protected void setTreeType(WorldGenTreeAbstract worldgentreeabstract) { + if (worldgentreeabstract instanceof WorldGenAcaciaTree) { + BlockSapling.treeType = TreeType.ACACIA; + } else if (worldgentreeabstract instanceof WorldGenBigTree) { + BlockSapling.treeType = TreeType.BIG_TREE; + } else if (worldgentreeabstract instanceof WorldGenForest) { + BlockSapling.treeType = TreeType.BIRCH; + } else if (worldgentreeabstract instanceof WorldGenForestTree) { + BlockSapling.treeType = TreeType.DARK_OAK; + } else if (worldgentreeabstract instanceof WorldGenJungleTree) { + BlockSapling.treeType = TreeType.JUNGLE; + } else if (worldgentreeabstract instanceof WorldGenMegaTree) { + BlockSapling.treeType = TreeType.MEGA_REDWOOD; + } else if (worldgentreeabstract instanceof WorldGenTaiga1) { + BlockSapling.treeType = TreeType.REDWOOD; + } else if (worldgentreeabstract instanceof WorldGenTaiga2) { + BlockSapling.treeType = TreeType.REDWOOD; + } else if (worldgentreeabstract instanceof WorldGenTrees) { + BlockSapling.treeType = TreeType.TREE; + } else { + throw new IllegalArgumentException("Unknown tree generator " + worldgentreeabstract); + } + } + // CraftBukkit end }