BiomePatternGenerator class
Пакет: com.hypixel.hytale.server.worldgen.biome
Файл: com/hypixel/hytale/server/worldgen/biome/BiomePatternGenerator.java
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
IPointGenerator |
pointGenerator |
|
int |
var1 |
|
|
var1 |
|
CustomBiomeGenerator |
var13 |
|
int |
var4 |
|
ResultBuffer.ResultBuffer2d |
var4 |
|
TileBiome |
var5 |
|
CustomBiome |
var6 |
|
int |
var8 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(CustomBiome var12 : var3) |
|
|
for for(CustomBiome var12 : this.customBiomes) |
|
|
for for(Biome var5 : var0) |
protected |
double |
getBiomeIndexdouble getBiomeIndex(int var1, int var2, int var3) |
public |
int |
getExtentsint getExtents() |
static |
int |
getExtentsint getExtents(@Nonnull Biome[] var0) |
|
|
if if(this.customBiomes.length > 0) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.biome;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.math.util.HashUtil;
class="kw">import com.hypixel.hytale.procedurallib.logic.ResultBuffer;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.zone.ZoneGeneratorResult;
class="kw">import java.util.Arrays;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BiomePatternGenerator {
class="kw">protected class="kw">final IPointGenerator pointGenerator;
@Nonnull
class="kw">protected class="kw">final IWeightedMap<TileBiome> tileBiomes;
@Nonnull
class="kw">protected class="kw">final CustomBiome[] customBiomes;
@Nonnull
class="kw">protected class="kw">final Biome[] biomes;
class="kw">protected class="kw">final int extents;
class="kw">public BiomePatternGenerator(IPointGenerator var1, @Nonnull IWeightedMap<TileBiome> var2, @Nonnull CustomBiome[] var3) {
this.pointGenerator = var1;
this.tileBiomes = var2;
this.customBiomes = var3;
this.biomes = new Biome[var2.size() + var3.length];
int var4 = 0;
for (TileBiome var8 : var2.internalKeys()) {
this.biomes[var4++] = var8;
}
for (CustomBiome var12 : var3) {
this.biomes[var4++] = var12;
}
this.extents = getExtents(this.biomes);
}
class="kw">public int getExtents() {
class="kw">return this.extents;
}
@Nonnull
class="kw">public Biome[] getBiomes() {
class="kw">return this.biomes;
}
@Nonnull
class="kw">public CustomBiome[] getCustomBiomes() {
class="kw">return this.customBiomes;
}
@Nullable
class="kw">public TileBiome getBiome(int var1, int var2, int var3) {
class="kw">return this.tileBiomes.get(var1, var2, var3, (var0, var1x, var2x, var3x) -> var3x.getBiomeIndex(var0, var1x, var2x), this);
}
class="kw">protected double getBiomeIndex(int var1, int var2, int var3) {
ResultBuffer.ResultBuffer2d var4 = this.pointGenerator.nearest2D(var1, var2, var3);
class="kw">return HashUtil.random(var1, var4.ix, var4.iy);
}
@Nullable
class="kw">public TileBiome getBiomeDirect(int var1, int var2, int var3) {
class="kw">return this.tileBiomes.get(HashUtil.random(var1, Double.doubleToLongBits(var2), Double.doubleToLongBits(var3)));
}
@Nonnull
class="kw">public Biome generateBiomeAt(@Nonnull ZoneGeneratorResult var1, int var2, int var3, int var4) {
TileBiome var5 = this.getBiome(var2, var3, var4);
CustomBiome var6 = this.getCustomBiomeAt(var2, var3, var4, var1, var5);
class="kw">return Objects.requireNonNullElse(var6, var5);
}
@Nullable
class="kw">public CustomBiome getCustomBiomeAt(int var1, double var2, double var4, @Nonnull ZoneGeneratorResult var6, @Nonnull Biome var7) {
if (this.customBiomes.length > 0) {
int var8 = var7.getId();
for (CustomBiome var12 : this.customBiomes) {
CustomBiomeGenerator var13 = var12.getCustomBiomeGenerator();
if (var13.isValidParentBiome(var8) && var13.shouldGenerateAt(var1, var2, var4, var6, var12)) {
class="kw">return var12;
}
}
}
class="kw">return null;
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "BiomePatternGenerator{pointGenerator="
+ this.pointGenerator
+ ", tileBiomes="
+ this.tileBiomes
+ ", customBiomes="
+ Arrays.toString(this.customBiomes)
+ ", biomes="
+ Arrays.toString(this.biomes)
+ "}";
}
class="kw">private class="kw">static int getExtents(@Nonnull Biome[] var0) {
int var1 = 0;
for (Biome var5 : var0) {
if (var5.getPrefabContainer() != null) {
var1 = Math.max(var1, var5.getPrefabContainer().getMaxSize());
}
}
class="kw">return var1;
}
}