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)
publicfinal
ResultBuffer.Bounds2d bounds2dpublicfinal
ExtendedCoordinateCache.ExtendedCoordinateKey<CaveType> cacheCaveCoordinateKeypublicfinal
CoordinateCache.CoordinateKey cacheCoordinateKeypublicfinal
Vector2d cacheVector2dpublicfinal
IntList coverArraypublicfinal
PrefabPasteUtil.PrefabPasteBuffer prefabBufferpublicfinal
BlockPriorityChunk priorityChunkpublicfinal
Random randompublicfinal
Random random2publicfinal
ResultBuffer.ResultBuffer2d resultBuffer2dpublicfinal
ResultBuffer.ResultBuffer3d resultBuffer3dpublicfinal
ZoneBiomeResult zoneBiomeResultProtected Fields (1)
protected
ChunkGenerator chunkGeneratorRelated 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);
}
}