public void paint(Graphics paramGraphics)
    {
      if (this.GroundBufferTainted)
      {
        if (this.GroundTaintArea == null) {
          this.GroundTaintArea = this.DEFAULT_GROUND_TAINT;
        }

        if (this.GroundBlit != null)
        {
          Rectangle localRectangle = Renderer.this.GroundBufferGraphics.getClipBounds();
          Renderer.this.GroundBufferGraphics.setClip(0, 0, 500, 400);
          Renderer.this.GroundBufferGraphics.copyArea(0, 0, 500, 400, this.GroundBlit.x, this.GroundBlit.y);
          Renderer.this.GroundBufferGraphics.setClip(localRectangle);

          this.GroundBlit = null;
        }

        int i = Renderer.this.Offset.x + (int)Math.floor(this.GroundTaintArea.x / 50.0F);
        int j = i + (int)Math.ceil(this.GroundTaintArea.width / 50.0F);
        int k = Renderer.this.Offset.y + (int)Math.floor(this.GroundTaintArea.y / 50.0F);
        int m = k + (int)Math.ceil(this.GroundTaintArea.height / 50.0F);

        j = Math.min(Renderer.this.MapSize.width - 1, j);
        m = Math.min(Renderer.this.MapSize.height - 1, m);

        int n = (i - Renderer.this.Offset.x) * 50;
        int i1 = (k - Renderer.this.Offset.y) * 50;
        for (int i2 = k; i2 <= m; i1 += 50)
        {
          for (int i3 = i; i3 <= j; n += 50)
          {
            Image localImage = Renderer.this.map.getCell(i3, i2).getAppearance();
            GameApplet.thisApplet.hitCache(localImage);
            Renderer.this.GroundBufferGraphics.drawImage(localImage, n, i1, null);

            i3++;
          }

          n = (i - Renderer.this.Offset.x) * 50;

          i2++;
        }

        this.GroundBufferTainted = false;
        this.GroundTaintArea = null;
      }

      paramGraphics.drawImage(Renderer.this.GroundBufferImage, 0, 0, null);
    }