From 17293b1f79b80fc0612cad5ef7cae59018327f4d Mon Sep 17 00:00:00 2001 From: alexemmons Date: Wed, 30 Apr 2014 21:30:24 -0500 Subject: [PATCH 1/2] Replaced a switch statement with a HashMap. --- .../org/bukkit/craftbukkit/CraftWorld.java | 119 ++++++++++-------- 1 file changed, 69 insertions(+), 50 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java index a4ede348ff..3d8f710231 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java @@ -3,6 +3,7 @@ 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; @@ -10,6 +11,7 @@ import java.util.UUID; import net.minecraft.server.*; +import net.minecraft.server.BlockSapling.TreeGenerator; import org.apache.commons.lang.Validate; import org.bukkit.BlockChangeDelegate; @@ -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 generateTree = new HashMap(); + 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()); } From 16c83f8b5c61b3fa509f104522730714274234b7 Mon Sep 17 00:00:00 2001 From: alexemmons Date: Wed, 30 Apr 2014 21:46:49 -0500 Subject: [PATCH 2/2] Replaced a switch with a HashMap. --- .../org/bukkit/craftbukkit/CraftEffect.java | 80 +++++++++++-------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/src/main/java/org/bukkit/craftbukkit/CraftEffect.java b/src/main/java/org/bukkit/craftbukkit/CraftEffect.java index 7de0de5e19..edae28b227 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftEffect.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftEffect.java @@ -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; @@ -18,38 +20,52 @@ public static 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 setDataValue = new HashMap(); + 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!");