diff options
author | Zeerix <zeerix@draig.de> | 2011-12-23 00:54:34 +0100 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-02-23 18:27:23 -0500 |
commit | 7a49e29b55f1e8b7fb478a11f55518dd1e7c35d0 (patch) | |
tree | 1b8c4a6868c086a81d081155a46de3086a16b60e /src/main/java/org/bukkit | |
parent | 796d4a8a74d640ee00a4e0480eded756aac518f7 (diff) | |
download | craftbukkit-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.java | 8 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/util/StructureGrowDelegate.java | 48 |
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; + } +} |