示例#1
0
  private boolean farm(Block center, int radius) {
    int cx = center.getX();
    int y = center.getY();
    int cz = center.getZ();

    int count = 0;
    for (int x = cx - radius; x <= cx + radius; x++) {
      for (int z = cz - radius; z <= cz + radius; z++) {
        Block b = center.getWorld().getBlockAt(x, y, z);
        if (b.getType() != Material.SOIL) {
          b = b.getRelative(BlockFace.DOWN);
          if (b.getType() != Material.SOIL) {
            continue;
          }
        }
        b = b.getRelative(BlockFace.UP);
        if (b.getType() == Material.AIR) {
          if (newCropType != null) {
            newCropType.setBlock(b);
            if (growth > 1) {
              BlockUtils.setGrowthLevel(b, growth - 1);
            }
            count++;
          }
        } else if ((b.getType() == Material.CROPS
                || b.getType() == Material.CARROT
                || b.getType() == Material.POTATO)
            && BlockUtils.getGrowthLevel(b) < 7) {
          int newGrowth = BlockUtils.getGrowthLevel(b) + growth;
          if (newGrowth > 7) newGrowth = 7;
          BlockUtils.setGrowthLevel(b, newGrowth);
          count++;
        }
      }
    }

    return count > 0;
  }