Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
80 changes: 48 additions & 32 deletions src/main/java/org/bukkit/craftbukkit/CraftEffect.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.bukkit.craftbukkit;

import java.util.HashMap;

import org.apache.commons.lang.Validate;
import org.bukkit.Effect;
import org.bukkit.Material;
Expand All @@ -18,38 +20,52 @@ public static <T> int getDataValue(Effect effect, T data) {
datavalue = ((Material) data).getId();
break;
case SMOKE:
switch((BlockFace) data) { // TODO: Verify (Where did these values come from...?)
case SOUTH_EAST:
datavalue = 0;
break;
case SOUTH:
datavalue = 1;
break;
case SOUTH_WEST:
datavalue = 2;
break;
case EAST:
datavalue = 3;
break;
case UP:
case SELF:
datavalue = 4;
break;
case WEST:
datavalue = 5;
break;
case NORTH_EAST:
datavalue = 6;
break;
case NORTH:
datavalue = 7;
break;
case NORTH_WEST:
datavalue = 8;
break;
default:
throw new IllegalArgumentException("Bad smoke direction!");
}

HashMap<BlockFace, Integer> setDataValue = new HashMap<BlockFace, Integer>();
setDataValue.put(BlockFace.SOUTH_EAST, 0);
setDataValue.put(BlockFace.SOUTH, 1);
setDataValue.put(BlockFace.SOUTH_WEST, 2);
setDataValue.put(BlockFace.EAST, 3);
setDataValue.put(BlockFace.SELF, 4);
setDataValue.put(BlockFace.WEST, 5);
setDataValue.put(BlockFace.NORTH_EAST, 6);
setDataValue.put(BlockFace.NORTH, 7);
setDataValue.put(BlockFace.NORTH_WEST, 8);

datavalue = setDataValue.get(data);

// switch((BlockFace) data) { // TODO: Verify (Where did these values come from...?)
// case SOUTH_EAST:
// datavalue = 0;
// break;
// case SOUTH:
// datavalue = 1;
// break;
// case SOUTH_WEST:
// datavalue = 2;
// break;
// case EAST:
// datavalue = 3;
// break;
// case UP:
// case SELF:
// datavalue = 4;
// break;
// case WEST:
// datavalue = 5;
// break;
// case NORTH_EAST:
// datavalue = 6;
// break;
// case NORTH:
// datavalue = 7;
// break;
// case NORTH_WEST:
// datavalue = 8;
// break;
// default:
// throw new IllegalArgumentException("Bad smoke direction!");
// }
break;
case STEP_SOUND:
Validate.isTrue(((Material) data).isBlock(), "Material is not a block!");
Expand Down
119 changes: 69 additions & 50 deletions src/main/java/org/bukkit/craftbukkit/CraftWorld.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@
import java.io.File;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Random;
import java.util.Set;
import java.util.UUID;

import net.minecraft.server.*;
import net.minecraft.server.BlockSapling.TreeGenerator;

import org.apache.commons.lang.Validate;
import org.bukkit.BlockChangeDelegate;
Expand Down Expand Up @@ -355,56 +357,73 @@ public boolean generateTree(Location loc, TreeType type) {
}

public boolean generateTree(Location loc, TreeType type, BlockChangeDelegate delegate) {
BlockSapling.TreeGenerator gen;
switch (type) {
case BIG_TREE:
gen = new WorldGenBigTree(true);
break;
case BIRCH:
gen = new WorldGenForest(true, false);
break;
case REDWOOD:
gen = new WorldGenTaiga2(true);
break;
case TALL_REDWOOD:
gen = new WorldGenTaiga1();
break;
case JUNGLE:
gen = new WorldGenJungleTree(true, 10, 20, 3, 3); // Magic values as in BlockSapling
break;
case SMALL_JUNGLE:
gen = new WorldGenTrees(true, 4 + rand.nextInt(7), 3, 3, false);
break;
case JUNGLE_BUSH:
gen = new WorldGenGroundBush(3, 0);
break;
case RED_MUSHROOM:
gen = new WorldGenHugeMushroom(1);
break;
case BROWN_MUSHROOM:
gen = new WorldGenHugeMushroom(0);
break;
case SWAMP:
gen = new WorldGenSwampTree();
break;
case ACACIA:
gen = new WorldGenAcaciaTree(true);
break;
case DARK_OAK:
gen = new WorldGenForestTree(true);
break;
case MEGA_REDWOOD:
gen = new WorldGenMegaTree(true, rand.nextBoolean());
break;
case TALL_BIRCH:
gen = new WorldGenForest(true, true);
break;
case TREE:
default:
gen = new WorldGenTrees(true);
break;
}

HashMap<TreeType, TreeGenerator> generateTree = new HashMap<TreeType, TreeGenerator>();
BlockSapling.TreeGenerator gen;

generateTree.put(TreeType.BIG_TREE, new WorldGenBigTree(true));
generateTree.put(TreeType.BIRCH, new WorldGenForest(true, false));
generateTree.put(TreeType.REDWOOD, new WorldGenTaiga2(true));
generateTree.put(TreeType.JUNGLE, new WorldGenJungleTree(true, 10, 20, 3, 3));
generateTree.put(TreeType.SMALL_JUNGLE, new WorldGenTrees(true, 4 + rand.nextInt(7), 3, 3, false));
generateTree.put(TreeType.JUNGLE_BUSH, new WorldGenGroundBush(3, 0));
generateTree.put(TreeType.RED_MUSHROOM, new WorldGenHugeMushroom(1));
generateTree.put(TreeType.BROWN_MUSHROOM, new WorldGenHugeMushroom(0));
generateTree.put(TreeType.SWAMP, new WorldGenSwampTree());
generateTree.put(TreeType.ACACIA, new WorldGenAcaciaTree(true));
generateTree.put(TreeType.DARK_OAK, new WorldGenForestTree(true));
generateTree.put(TreeType.MEGA_REDWOOD, new WorldGenMegaTree(true, rand.nextBoolean()));
generateTree.put(TreeType.TALL_BIRCH, new WorldGenForest(true, true));
generateTree.put(TreeType.TREE, new WorldGenTrees(true));

gen = generateTree.get(type);
// switch (type) {
// case BIG_TREE:
// gen = new WorldGenBigTree(true);
// break;
// case BIRCH:
// gen = new WorldGenForest(true, false);
// break;
// case REDWOOD:
// gen = new WorldGenTaiga2(true);
// break;
// case TALL_REDWOOD:
// gen = new WorldGenTaiga1();
// break;
// case JUNGLE:
// gen = new WorldGenJungleTree(true, 10, 20, 3, 3); // Magic values as in BlockSapling
// break;
// case SMALL_JUNGLE:
// gen = new WorldGenTrees(true, 4 + rand.nextInt(7), 3, 3, false);
// break;
// case JUNGLE_BUSH:
// gen = new WorldGenGroundBush(3, 0);
// break;
// case RED_MUSHROOM:
// gen = new WorldGenHugeMushroom(1);
// break;
// case BROWN_MUSHROOM:
// gen = new WorldGenHugeMushroom(0);
// break;
// case SWAMP:
// gen = new WorldGenSwampTree();
// break;
// case ACACIA:
// gen = new WorldGenAcaciaTree(true);
// break;
// case DARK_OAK:
// gen = new WorldGenForestTree(true);
// break;
// case MEGA_REDWOOD:
// gen = new WorldGenMegaTree(true, rand.nextBoolean());
// break;
// case TALL_BIRCH:
// gen = new WorldGenForest(true, true);
// break;
// case TREE:
// default:
// gen = new WorldGenTrees(true);
// break;
// }
return gen.generate(new CraftBlockChangeDelegate(delegate), rand, loc.getBlockX(), loc.getBlockY(), loc.getBlockZ());
}

Expand Down