public DataPoint2D generateTemperatureAt(int x, int z) {
      /* Rasterize the coordinates */
      x =
          MathHelper.floorDivision(x, DefaultWorldProvider.SAMPLE_RATE_TEMPERATURE)
              * DefaultWorldProvider.SAMPLE_RATE_TEMPERATURE;
      z =
          MathHelper.floorDivision(z, DefaultWorldProvider.SAMPLE_RATE_TEMPERATURE)
              * DefaultWorldProvider.SAMPLE_RATE_TEMPERATURE;

      DataResults dr = gatherDataAround(_temperatures, x, z, 50);

      if (dr.count == 0) {
        DataPoint2D data = new DataPoint2D(x, z, _random.randomInt(25, 32));
        _temperatures.add(data);
        return data;
      } else {
        float diff = _random.exponentialRandom(16.0f, 2);
        diff = _random.randomBoolean() ? diff : -diff;
        DataPoint2D data =
            new DataPoint2D(x, z, (int) MathHelper.clamp(dr.avg + diff, 10.0f, 50.0f));
        _temperatures.add(data);
        if (DEBUG_WOLRD_PROVIDER)
          System.out.println("Temp (" + x + ", " + z + ") = " + data.getData());
        return data;
      }
    }
    public DataPoint2D generateHumidityAt(int x, int z) {
      /* Rasterize the coordinates */
      x =
          MathHelper.floor((float) x / DefaultWorldProvider.SAMPLE_RATE_HORIZONTAL)
              * DefaultWorldProvider.SAMPLE_RATE_HORIZONTAL;
      z =
          MathHelper.floor((float) z / DefaultWorldProvider.SAMPLE_RATE_HORIZONTAL)
              * DefaultWorldProvider.SAMPLE_RATE_HORIZONTAL;

      DataResults dr = gatherDataAround(_humidities, x, z, 40);

      if (dr.count == 0) {
        DataPoint2D data = new DataPoint2D(x, z, _random.randomInt(60, 80));
        _humidities.add(data);
        return data;
      } else {
        float diff = _random.exponentialRandom(100.0f, 4);
        diff = _random.randomBoolean() ? diff : -diff;
        DataPoint2D data =
            new DataPoint2D(x, z, (int) MathHelper.clamp(dr.avg + diff, 30.0f, 95.0f));
        _humidities.add(data);
        if (DEBUG_WOLRD_PROVIDER)
          System.out.println("Humidity (" + x + ", " + z + ") = " + data.getData());
        return data;
      }
    }