All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.minecraft.server.BiomeCache Maven / Gradle / Ivy

package net.minecraft.server;

import com.google.common.collect.Lists;

import java.util.List;

public class BiomeCache {

  private final WorldChunkManager a;
  private long b;
  private final LongHashMap c = new LongHashMap();
  private final List d = Lists.newArrayList();

  public BiomeCache(WorldChunkManager worldchunkmanager) {
    this.a = worldchunkmanager;
  }

  public BiomeCacheBlock a(int i, int j) {
    i >>= 4;
    j >>= 4;
    long k = (long) i & 4294967295L | ((long) j & 4294967295L) << 32;
    BiomeCacheBlock biomecache_biomecacheblock = this.c.getEntry(k);

    if (biomecache_biomecacheblock == null) {
      biomecache_biomecacheblock = new BiomeCacheBlock(i, j);
      this.c.put(k, biomecache_biomecacheblock);
      this.d.add(biomecache_biomecacheblock);
    }

    biomecache_biomecacheblock.e = MinecraftServer.az();
    return biomecache_biomecacheblock;
  }

  public BiomeBase a(int i, int j, BiomeBase biomebase) {
    BiomeBase biomebase1 = this.a(i, j).a(i, j);

    return biomebase1 == null ? biomebase : biomebase1;
  }

  public void a() {
    long i = MinecraftServer.az();
    long j = i - this.b;

    if (j > 7500L || j < 0L) {
      this.b = i;

      for (int k = 0; k < this.d.size(); ++k) {
        BiomeCacheBlock biomecache_biomecacheblock = this.d.get(k);
        long l = i - biomecache_biomecacheblock.e;

        if (l > 30000L || l < 0L) {
          this.d.remove(k--);
          long i1 = (long) biomecache_biomecacheblock.c & 4294967295L | ((long) biomecache_biomecacheblock.d & 4294967295L) << 32;

          this.c.remove(i1);
        }
      }
    }

  }

  public BiomeBase[] c(int i, int j) {
    return this.a(i, j).b;
  }

  public class BiomeCacheBlock {

    public float[] a = new float[256];
    public BiomeBase[] b = new BiomeBase[256];
    public int c;
    public int d;
    public long e;

    public BiomeCacheBlock(int i, int j) {
      this.c = i;
      this.d = j;
      BiomeCache.this.a.getWetness(this.a, i << 4, j << 4, 16, 16);
      BiomeCache.this.a.a(this.b, i << 4, j << 4, 16, 16, false);
    }

    public BiomeBase a(int i, int j) {
      return this.b[i & 15 | (j & 15) << 4];
    }
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy