From 301b48abeaa6cdce3e9a22f5f76d72bcb1151f66 Mon Sep 17 00:00:00 2001 From: Bukkit/Spigot Date: Sun, 30 Jan 2011 13:54:03 -0800 Subject: [PATCH] Added support for different tree generation types and a callback. By: sk89q --- .../java/org/bukkit/BlockChangeDelegate.java | 42 +++++++++++++++++++ .../src/main/java/org/bukkit/TreeType.java | 14 +++++++ paper-api/src/main/java/org/bukkit/World.java | 12 ++++-- 3 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 paper-api/src/main/java/org/bukkit/BlockChangeDelegate.java create mode 100644 paper-api/src/main/java/org/bukkit/TreeType.java diff --git a/paper-api/src/main/java/org/bukkit/BlockChangeDelegate.java b/paper-api/src/main/java/org/bukkit/BlockChangeDelegate.java new file mode 100644 index 0000000000..6bc62734fa --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/BlockChangeDelegate.java @@ -0,0 +1,42 @@ +package org.bukkit; + +/** + * A delegate for handling block changes. This serves as a direct interface + * between generation algorithms in the server implementation and utilizing + * code. + * + * @author sk89q + */ +public interface BlockChangeDelegate { + /** + * Set a block type at the specified coordinates. + * + * @param x + * @param y + * @param z + * @param typeId + * @return true if the block was set successfully + */ + public boolean setTypeId(int x, int y, int z, int typeId); + + /** + * Set a block type and data at the specified coordinates. + * + * @param x + * @param y + * @param z + * @param typeId + * @param data + * @return true if the block was set successfully + */ + public boolean setTypeIdAndData(int x, int y, int z, int typeId, int data); + + /** + * Get the block type at the location. + * @param x + * @param y + * @param z + * @return + */ + public int getTypeId(int x, int y, int z); +} diff --git a/paper-api/src/main/java/org/bukkit/TreeType.java b/paper-api/src/main/java/org/bukkit/TreeType.java new file mode 100644 index 0000000000..489b1d96dc --- /dev/null +++ b/paper-api/src/main/java/org/bukkit/TreeType.java @@ -0,0 +1,14 @@ +package org.bukkit; + +/** + * Tree type. + * + * @author sk89q + */ +public enum TreeType { + TREE, + BIG_TREE, + REDWOOD, + TALL_REDWOOD, + BIRCH +} diff --git a/paper-api/src/main/java/org/bukkit/World.java b/paper-api/src/main/java/org/bukkit/World.java index 046e884d82..3fd21db230 100644 --- a/paper-api/src/main/java/org/bukkit/World.java +++ b/paper-api/src/main/java/org/bukkit/World.java @@ -115,17 +115,21 @@ public interface World { * Spawns a tree at a location. * * @param loc + * @param type * @return whether the tree was created */ - public boolean generateTree(Location loc); - + public boolean generateTree(Location loc, TreeType type); + /** - * Spawns a big tree at a location. + * Spawns a tree at a location. * * @param loc + * @param type + * @param delegate * @return whether the tree was created */ - public boolean generateBigTree(Location loc); + public boolean generateTree(Location loc, TreeType type, + BlockChangeDelegate delegate); /** * Spawns a regular passenger minecart.