public boolean validLocation(World world, Cardinal dir, int x, int y, int z) { if (!(dir == Cardinal.NORTH || dir == Cardinal.SOUTH)) return false; List<Coord> box = WorldGenPrimitive.getRectHollow(x - 7, y - 2, z - 7, x + 7, y + 5, z + 7); for (Coord pos : box) { MetaBlock b = WorldGenPrimitive.getBlock(world, pos); if (!b.getBlock().getMaterial().isSolid()) return false; } return true; }
@Override public boolean validLocation(World world, Cardinal dir, int x, int y, int z) { Coord start; Coord end; start = new Coord(x, y, z); end = new Coord(start); start.add(Cardinal.reverse(dir), 9); end.add(dir, 9); Cardinal[] orth = Cardinal.getOrthogonal(dir); start.add(orth[0], 5); end.add(orth[1], 5); start.add(Cardinal.DOWN); end.add(Cardinal.UP, 3); for (Coord c : WorldGenPrimitive.getRectHollow(start, end)) { if (world.isAirBlock(c.getBlockPos())) return false; } return true; }