From 59ade7a386c7d501b46a9381721b3cd1c6007be8 Mon Sep 17 00:00:00 2001 From: zml2008 Date: Wed, 17 Aug 2011 13:24:27 -0700 Subject: [PATCH] Abstracted natural blocktype checking to BlockType.isNaturalBlock --- .../java/com/sk89q/worldedit/EditSession.java | 25 ++--------------- .../com/sk89q/worldedit/blocks/BlockType.java | 28 +++++++++++++++++++ 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/sk89q/worldedit/EditSession.java b/src/main/java/com/sk89q/worldedit/EditSession.java index 00b55c979..c236cd29d 100644 --- a/src/main/java/com/sk89q/worldedit/EditSession.java +++ b/src/main/java/com/sk89q/worldedit/EditSession.java @@ -2369,40 +2369,21 @@ public class EditSession { /** * Returns the highest solid 'terrain' block which can occur naturally. - * Looks at: 1, 2, 3, 7, 12, 13, 14, 15, 16, 56, 73, 74, 87, 88, 89, 82 - * + * * @param x * @param z * @param minY * minimal height * @param maxY * maximal height + * @param naturalOnly look at natural blocks or all blocks * @return height of highest block found or 'minY' */ public int getHighestTerrainBlock(int x, int z, int minY, int maxY, boolean naturalOnly) { for (int y = maxY; y >= minY; --y) { Vector pt = new Vector(x, y, z); int id = getBlockType(pt); - if (naturalOnly ? - id == 1 // stone - || id == 2 // grass - || id == 3 // dirt - || id == 7 // bedrock - || id == 12 // sand - || id == 13 // gravel - || id == 82 // clay - // hell - || id == 87 // netherstone - || id == 88 // slowsand - || id == 89 // lightstone - // ores - || id == 14 // coal ore - || id == 15 // iron ore - || id == 16 // gold ore - || id == 56 // diamond ore - || id == 73 // redstone ore - || id == 74 // redstone ore (active) - : !BlockType.canPassThrough(id)) { + if (naturalOnly ? BlockType.isNaturalBlock(id) : !BlockType.canPassThrough(id)) { return y; } } diff --git a/src/main/java/com/sk89q/worldedit/blocks/BlockType.java b/src/main/java/com/sk89q/worldedit/blocks/BlockType.java index 002f2841c..d234394c0 100644 --- a/src/main/java/com/sk89q/worldedit/blocks/BlockType.java +++ b/src/main/java/com/sk89q/worldedit/blocks/BlockType.java @@ -594,4 +594,32 @@ public enum BlockType { } return dropped; } + + /** + * Checks if the block type is "natural" + * + * @param id + * @return + */ + public static boolean isNaturalBlock(int id) { + return id == 1 // stone + || id == 2 // grass + || id == 3 // dirt + || id == 7 // bedrock + || id == 12 // sand + || id == 13 // gravel + || id == 82 // clay + // hell + || id == 87 // netherstone + || id == 88 // slowsand + || id == 89 // lightstone + // ores + || id == 14 // coal ore + || id == 15 // iron ore + || id == 16 // gold ore + || id == 21 // lapis ore + || id == 56 // diamond ore + || id == 73 // redstone ore + || id == 74; // redstone ore (active) + } }