From 639d3e3f9400b0b5db23a48fedd7442edb180a43 Mon Sep 17 00:00:00 2001 From: sk89q Date: Sun, 30 Jan 2011 13:53:57 -0800 Subject: Added support for different tree generation types and a callback. --- .../java/org/bukkit/craftbukkit/CraftWorld.java | 36 +++++++++++++++++----- 1 file changed, 29 insertions(+), 7 deletions(-) (limited to 'src/main/java/org') diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index 30e91359..a9c394f6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -18,7 +18,9 @@ import org.bukkit.Chunk; import org.bukkit.entity.ItemDrop; import org.bukkit.inventory.ItemStack; import org.bukkit.util.Vector; +import org.bukkit.BlockChangeDelegate; import org.bukkit.Location; +import org.bukkit.TreeType; import org.bukkit.World; public class CraftWorld implements World { @@ -194,14 +196,34 @@ public class CraftWorld implements World { return (Boat) boat.getBukkitEntity(); } - public boolean generateTree(Location loc) { - WorldGenTrees treeGen = new WorldGenTrees(); - return treeGen.a(world, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + public boolean generateTree(Location loc, TreeType type) { + return generateTree(loc, type, world); } - - public boolean generateBigTree(Location loc) { - WorldGenBigTree treeGen = new WorldGenBigTree(); - return treeGen.a(world, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + + public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) { + switch (type) { + case BIG_TREE: + return (new WorldGenBigTree()) + .generate(delegate, rand, + loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + case BIRCH: + return (new WorldGenForest()) + .generate(delegate, rand, + loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + case REDWOOD: + return (new WorldGenTaiga2()) + .generate(delegate, rand, + loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + case TALL_REDWOOD: + return (new WorldGenTaiga1()) + .generate(delegate, rand, + loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + case TREE: + default: + return (new WorldGenTrees()) + .generate(delegate, rand, + loc.getBlockX(), loc.getBlockY(), loc.getBlockZ()); + } } public TileEntity getTileEntityAt(final int x, final int y, final int z) { -- cgit v1.2.3