public bool isUnderground() { Chunk above = world.findChunk(myChunkKey.neighbor(ChunkKey.Neighbor.TOP)); if (above != null) { return(!above.isAir()); } return(true); }
public List <Chunk> findNeighbors(Chunk chunk, ChunkKey.Neighbor neighbors) { List <Chunk> ret = new List <Chunk>(); ChunkKey k = chunk.chunkKey; if ((neighbors & ChunkKey.Neighbor.LEFT) == ChunkKey.Neighbor.LEFT) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LEFT))); } if ((neighbors & ChunkKey.Neighbor.RIGHT) == ChunkKey.Neighbor.RIGHT) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RIGHT))); } if ((neighbors & ChunkKey.Neighbor.BOTTOM) == ChunkKey.Neighbor.BOTTOM) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BOTTOM))); } if ((neighbors & ChunkKey.Neighbor.TOP) == ChunkKey.Neighbor.TOP) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.TOP))); } if ((neighbors & ChunkKey.Neighbor.FRONT) == ChunkKey.Neighbor.FRONT) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.FRONT))); } if ((neighbors & ChunkKey.Neighbor.BACK) == ChunkKey.Neighbor.BACK) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BACK))); } if ((neighbors & ChunkKey.Neighbor.LBF) == ChunkKey.Neighbor.LBF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LBF))); } if ((neighbors & ChunkKey.Neighbor.LB) == ChunkKey.Neighbor.LB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LB))); } if ((neighbors & ChunkKey.Neighbor.LBB) == ChunkKey.Neighbor.LBB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LBB))); } if ((neighbors & ChunkKey.Neighbor.BF) == ChunkKey.Neighbor.BF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BF))); } if ((neighbors & ChunkKey.Neighbor.BB) == ChunkKey.Neighbor.BB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BB))); } if ((neighbors & ChunkKey.Neighbor.RBF) == ChunkKey.Neighbor.RBF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RBF))); } if ((neighbors & ChunkKey.Neighbor.RB) == ChunkKey.Neighbor.RB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RB))); } if ((neighbors & ChunkKey.Neighbor.RBB) == ChunkKey.Neighbor.RBB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RBB))); } if ((neighbors & ChunkKey.Neighbor.LF) == ChunkKey.Neighbor.LF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LF))); } if ((neighbors & ChunkKey.Neighbor.BL) == ChunkKey.Neighbor.BL) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BL))); } if ((neighbors & ChunkKey.Neighbor.RF) == ChunkKey.Neighbor.RF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RF))); } if ((neighbors & ChunkKey.Neighbor.BR) == ChunkKey.Neighbor.BR) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.BR))); } if ((neighbors & ChunkKey.Neighbor.LTF) == ChunkKey.Neighbor.LTF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LTF))); } if ((neighbors & ChunkKey.Neighbor.LT) == ChunkKey.Neighbor.LT) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LT))); } if ((neighbors & ChunkKey.Neighbor.LTB) == ChunkKey.Neighbor.LTB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.LTB))); } if ((neighbors & ChunkKey.Neighbor.TF) == ChunkKey.Neighbor.TF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.TF))); } if ((neighbors & ChunkKey.Neighbor.TB) == ChunkKey.Neighbor.TB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.TB))); } if ((neighbors & ChunkKey.Neighbor.RTF) == ChunkKey.Neighbor.RTF) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RTF))); } if ((neighbors & ChunkKey.Neighbor.RT) == ChunkKey.Neighbor.RT) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RT))); } if ((neighbors & ChunkKey.Neighbor.RTB) == ChunkKey.Neighbor.RTB) { ret.Add(findChunk(k.neighbor(ChunkKey.Neighbor.RTB))); } return(ret); }