From b2812b74d4a9c4646f72f9608cf660abede09427 Mon Sep 17 00:00:00 2001
From: sk89q <the.sk89q@gmail.com>
Date: Sun, 2 Jan 2011 18:01:17 -0800
Subject: [PATCH] Added world.spawnTree(), world.spawnBigTree().

---
 .../org/bukkit/craftbukkit/CraftWorld.java     | 18 +++++++++++++++++-
 1 file changed, 17 insertions(+), 1 deletion(-)

diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 1e072f0f18..25a7bd18dc 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -3,9 +3,11 @@ package org.bukkit.craftbukkit;
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.Random;
+import net.minecraft.server.WorldGenBigTree;
+import net.minecraft.server.WorldGenTrees;
 import net.minecraft.server.WorldServer;
 import net.minecraft.server.EntityArrow;
-
 import org.bukkit.ArrowEntity;
 import org.bukkit.Block;
 import org.bukkit.Chunk;
@@ -17,6 +19,8 @@ public class CraftWorld implements World {
     private final Map<ChunkCoordinate, Chunk> chunkCache = new HashMap<ChunkCoordinate, Chunk>();
     private final Map<BlockCoordinate, Block> blockCache = new HashMap<BlockCoordinate, Block>();
     private final WorldServer world;
+    
+    private static final Random rand = new Random();
 
     public CraftWorld(WorldServer world) {
         this.world = world;
@@ -83,6 +87,18 @@ public class CraftWorld implements World {
         arrow.a(velocity.getX(), velocity.getY(), velocity.getZ(), speed, spread);
         return new CraftArrowEntity(world.getServer(), arrow);
     }
+    
+    public boolean generateTree(Location loc) {
+        WorldGenTrees treeGen = new WorldGenTrees();
+        return treeGen.a(world, rand,
+                loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+    }
+    
+    public boolean generateBigTree(Location loc) {
+        WorldGenBigTree treeGen = new WorldGenBigTree();
+        return treeGen.a(world, rand,
+                loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
+    }
 
     @Override
     public String toString() {