Abstracted natural blocktype checking to BlockType.isNaturalBlock

This commit is contained in:
zml2008 2011-08-17 13:24:27 -07:00
parent 93620ec168
commit 59ade7a386
2 changed files with 31 additions and 22 deletions

View File

@ -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;
}
}

View File

@ -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)
}
}