summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/bukkit
diff options
context:
space:
mode:
authorZeerix <zeerix@draig.de>2011-12-23 00:54:34 +0100
committerEvilSeph <evilseph@gmail.com>2012-02-23 18:27:23 -0500
commit7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0 (patch)
tree1b8c4a6868c086a81d081155a46de3086a16b60e /src/main/java/org/bukkit
parent796d4a8a74d640ee00a4e0480eded756aac518f7 (diff)
downloadcraftbukkit-7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0.tar
craftbukkit-7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0.tar.gz
craftbukkit-7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0.tar.lz
craftbukkit-7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0.tar.xz
craftbukkit-7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0.zip
[Bleeding] Undo changes to the tree WorldGenerators.
- All StructureGrowEvent handling for these is in BlockSapling now, using a BlockChangeDelegate to collect the data. - Moved StructureGrowDelegate into a separate class
Diffstat (limited to 'src/main/java/org/bukkit')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/CraftWorld.java8
-rw-r--r--src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java48
2 files changed, 52 insertions, 4 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
index 744113b7..0b434f32 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
@@ -365,16 +365,16 @@ public class CraftWorld implements World {
public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
switch (type) {
case BIG_TREE:
- return new WorldGenBigTree(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), null, null, null);
+ return new WorldGenBigTree(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
case BIRCH:
- return new WorldGenForest(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), null, null, null);
+ return new WorldGenForest(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
case REDWOOD:
- return new WorldGenTaiga2(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), null, null, null);
+ return new WorldGenTaiga2(false).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(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ(), null, null, null);
+ return new WorldGenTrees(false).generate(delegate, rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java b/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java
new file mode 100644
index 00000000..125772d4
--- /dev/null
+++ b/src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java
@@ -0,0 +1,48 @@
+package org.bukkit.craftbukkit.util;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import net.minecraft.server.World;
+
+import org.bukkit.BlockChangeDelegate;
+import org.bukkit.block.BlockState;
+import org.bukkit.craftbukkit.CraftWorld;
+import org.bukkit.material.MaterialData;
+
+public class StructureGrowDelegate implements BlockChangeDelegate {
+ private final CraftWorld world;
+ private final List<BlockState> blocks = new ArrayList<BlockState>();
+
+ public StructureGrowDelegate(World world) {
+ this.world = world.getWorld();
+ }
+
+ @Override
+ public boolean setRawTypeId(int x, int y, int z, int type) {
+ return setRawTypeIdAndData(x, y, z, type, 0);
+ }
+
+ @Override
+ public boolean setRawTypeIdAndData(int x, int y, int z, int type, int data) {
+ BlockState state = world.getBlockAt(x, y, z).getState();
+ state.setTypeId(type);
+ state.setData(new MaterialData(type, (byte) data));
+ blocks.add(state);
+ return true;
+ }
+
+ @Override
+ public int getTypeId(int x, int y, int z) {
+ return world.getBlockTypeIdAt(x, y, z);
+ }
+
+ @Override
+ public int getHeight() {
+ return world.getMaxHeight();
+ }
+
+ public List<BlockState> getBlocks() {
+ return blocks;
+ }
+}