HyCodeYourTale
classpublicPriority 3

ChunkGeneratorResource

com.hypixel.hytale.server.worldgen.ChunkGeneratorResource

3

Methods

3

Public Methods

13

Fields

1

Constructors

Constructors

public
ChunkGeneratorResource()

Methods

Public Methods (3)

public
Random getRandom()
@Nonnull
public
void init(ChunkGenerator chunkGenerator)
public
void release()

Fields

Public Fields (12)

publicfinalResultBuffer.Bounds2d bounds2d
publicfinalExtendedCoordinateCache.ExtendedCoordinateKey<CaveType> cacheCaveCoordinateKey
publicfinalCoordinateCache.CoordinateKey cacheCoordinateKey
publicfinalVector2d cacheVector2d
publicfinalIntList coverArray
publicfinalPrefabPasteUtil.PrefabPasteBuffer prefabBuffer
publicfinalBlockPriorityChunk priorityChunk
publicfinalRandom random
publicfinalRandom random2
publicfinalResultBuffer.ResultBuffer2d resultBuffer2d
publicfinalResultBuffer.ResultBuffer3d resultBuffer3d
publicfinalZoneBiomeResult zoneBiomeResult

Protected Fields (1)

protectedChunkGenerator chunkGenerator

Related Classes

Source Code

package com.hypixel.hytale.server.worldgen;

import com.hypixel.hytale.math.util.FastRandom;
import com.hypixel.hytale.math.vector.Vector2d;
import com.hypixel.hytale.procedurallib.logic.ResultBuffer;
import com.hypixel.hytale.server.core.prefab.selection.buffer.impl.IPrefabBuffer;
import com.hypixel.hytale.server.worldgen.cache.CoordinateCache;
import com.hypixel.hytale.server.worldgen.cache.ExtendedCoordinateCache;
import com.hypixel.hytale.server.worldgen.cave.CaveType;
import com.hypixel.hytale.server.worldgen.chunk.BlockPriorityChunk;
import com.hypixel.hytale.server.worldgen.chunk.ChunkGenerator;
import com.hypixel.hytale.server.worldgen.chunk.ZoneBiomeResult;
import com.hypixel.hytale.server.worldgen.chunk.populator.PrefabPopulator;
import com.hypixel.hytale.server.worldgen.climate.ClimateNoise;
import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
import com.hypixel.hytale.server.worldgen.prefab.PrefabPasteUtil;
import com.hypixel.hytale.server.worldgen.util.cache.TimeoutCache;
import com.hypixel.hytale.server.worldgen.zone.ZoneGeneratorResult;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import it.unimi.dsi.fastutil.ints.IntList;
import java.util.Random;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;

public class ChunkGeneratorResource {
   @Nonnull
   public final Random random;
   @Nonnull
   public final Random random2;
   @Nonnull
   public final IntList coverArray;
   public final TimeoutCache<WorldGenPrefabSupplier, IPrefabBuffer> prefabs = new TimeoutCache<>(
      30L, TimeUnit.SECONDS, this::getPrefab, (key, value) -> value.release()
   );
   @Nonnull
   public final BlockPriorityChunk priorityChunk;
   @Nonnull
   public final CoordinateCache.CoordinateKey cacheCoordinateKey;
   @Nonnull
   public final ExtendedCoordinateCache.ExtendedCoordinateKey<CaveType> cacheCaveCoordinateKey;
   @Nonnull
   public final ResultBuffer.Bounds2d bounds2d;
   @Nonnull
   public final ResultBuffer.ResultBuffer2d resultBuffer2d;
   @Nonnull
   public final ResultBuffer.ResultBuffer3d resultBuffer3d;
   @Nonnull
   public final PrefabPasteUtil.PrefabPasteBuffer prefabBuffer;
   @Nonnull
   public final ZoneBiomeResult zoneBiomeResult;
   public final ClimateNoise.Buffer climateBuffer = new ClimateNoise.Buffer();
   public final PrefabPopulator prefabPopulator = new PrefabPopulator();
   @Nonnull
   public final Vector2d cacheVector2d;
   protected ChunkGenerator chunkGenerator;

   public ChunkGeneratorResource() {
      this.random = new FastRandom(0L);
      this.random2 = new FastRandom(0L);
      this.priorityChunk = new BlockPriorityChunk();
      this.coverArray = new IntArrayList(5);
      this.cacheVector2d = new Vector2d();
      this.cacheCoordinateKey = new CoordinateCache.CoordinateKey();
      this.cacheCaveCoordinateKey = new ExtendedCoordinateCache.ExtendedCoordinateKey<>();
      this.bounds2d = new ResultBuffer.Bounds2d();
      this.resultBuffer2d = new ResultBuffer.ResultBuffer2d();
      this.resultBuffer3d = new ResultBuffer.ResultBuffer3d();
      this.prefabBuffer = new PrefabPasteUtil.PrefabPasteBuffer();
      this.zoneBiomeResult = new ZoneBiomeResult();
      this.zoneBiomeResult.setZoneResult(new ZoneGeneratorResult());
   }

   public void init(ChunkGenerator chunkGenerator) {
      this.chunkGenerator = chunkGenerator;
   }

   public void release() {
      this.prefabs.shutdown();
   }

   @Nonnull
   public Random getRandom() {
      return this.random;
   }

   @Nonnull
   protected IPrefabBuffer getPrefab(WorldGenPrefabSupplier prefabSupplier) {
      return this.chunkGenerator.getPrefabLoadingCache().getPrefabAccessor(prefabSupplier);
   }
}