CavePopulator class
Пакет: com.hypixel.hytale.server.worldgen.chunk.populator
Файл: com/hypixel/hytale/server/worldgen/chunk/populator/CavePopulator.java
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
|
IPointGenerator |
var10 |
|
int |
var10 |
|
ZoneBiomeResult |
var11 |
|
int |
var11 |
|
int |
var12 |
|
long |
var13 |
|
boolean |
var15 |
|
PrefabPasteUtil.PrefabPasteBuffer |
var16 |
|
long |
var3 |
|
int |
var5 |
|
int |
var5 |
|
ICoordinateCondition |
var5 |
|
int |
var6 |
|
int |
var6 |
|
int |
var6 |
|
Random |
var7 |
|
ChunkGenerator |
var8 |
|
int |
var8 |
|
int |
var9 |
Методы (11)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
static |
void |
generatePrefabAtvoid generatePrefabAt(int var0,
int var1,
int var2,
int var3,
int var4,
@Nonnull ChunkGeneratorExecution var5,
@Nonnull Cave var6,
@Nonnull CaveNode var7,
BlockMaskCondition var8,
@Nonnull WorldGenPrefabSupplier var9,
PrefabRotation var10) |
|
|
if if(var5 == DefaultCoordinateCondition.DEFAULT_TRUE) |
|
|
if if(var5 == DefaultCoordinateCondition.DEFAULT_FALSE) |
static |
boolean |
isMatchingHeightThresholdboolean isMatchingHeightThreshold(int var0, int var1, int var2, @Nonnull ChunkGenerator var3, @Nonnull CaveType var4) |
static |
void |
populatevoid populate(int var0, @Nonnull ChunkGeneratorExecution var1) |
static |
void |
populatevoid populate(int var0, @Nonnull ChunkGeneratorExecution var1, @Nonnull Cave var2) |
static |
void |
populateCaveNodevoid populateCaveNode(int var0, @Nonnull ChunkGeneratorExecution var1, @Nonnull Cave var2, @Nonnull CaveNode var3, @Nonnull Random var4) |
abstract |
|
populateCaveNode populateCaveNode(var0, var1, var2, var12, var7) |
static |
void |
populatePrefabvoid populatePrefab(int var0, int var1, @Nonnull ChunkGeneratorExecution var2, @Nonnull Cave var3, @Nonnull CaveNode var4, @Nonnull CavePrefab var5) |
abstract |
|
populatePrefab populatePrefab(var0, var8, var1, var2, var20, var16) |
static |
void |
runvoid run(int var0, double var1, double var3, @Nonnull ChunkGeneratorExecution var5, Zone var6, @Nonnull CaveType var7) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.chunk.populator;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.HashUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.procedurallib.condition.DefaultCoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.condition.ICoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.logic.point.IPointGenerator;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabRotation;
class="kw">import com.hypixel.hytale.server.worldgen.cave.Cave;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveBlockPriorityModifier;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CaveNode;
class="kw">import com.hypixel.hytale.server.worldgen.cave.element.CavePrefab;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.BlockPriorityModifier;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.ChunkGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.ChunkGeneratorExecution;
class="kw">import com.hypixel.hytale.server.worldgen.chunk.ZoneBiomeResult;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.PrefabPasteUtil;
class="kw">import com.hypixel.hytale.server.worldgen.util.condition.BlockMaskCondition;
class="kw">import com.hypixel.hytale.server.worldgen.zone.Zone;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">public class CavePopulator {
class="kw">public CavePopulator() {
}
class="kw">public class="kw">static void populate(int var0, @Nonnull ChunkGeneratorExecution var1) {
for (Zone var5 : var1.getChunkGenerator().getZonePatternProvider().getZones()) {
if (var5.caveGenerator() != null) {
for (CaveType var9 : var5.caveGenerator().getCaveTypes()) {
IPointGenerator var10 = var9.getEntryPointGenerator();
var10.collect(
var0,
ChunkUtil.minBlock(var1.getX()) - var9.getMaximumSize(),
ChunkUtil.minBlock(var1.getZ()) - var9.getMaximumSize(),
ChunkUtil.maxBlock(var1.getX()) + var9.getMaximumSize(),
ChunkUtil.maxBlock(var1.getZ()) + var9.getMaximumSize(),
(var4, var6) -> run(var0, var4, var6, var1, var5, var9)
);
}
}
}
}
class="kw">private class="kw">static void run(int var0, double var1, double var3, @Nonnull ChunkGeneratorExecution var5, Zone var6, @Nonnull CaveType var7) {
ChunkGenerator var8 = var5.getChunkGenerator();
int var9 = MathUtil.floor(var1);
int var10 = MathUtil.floor(var3);
ZoneBiomeResult var11 = var8.getZoneBiomeResultAt(var0, var9, var10);
if (var11.getZoneResult().getZone() == var6 && var7.isEntryThreshold(var0, var9, var10) && isMatchingHeightThreshold(var0, var9, var10, var8, var7)) {
populate(var0, var5, var5.getChunkGenerator().getCave(var7, var0, var9, var10));
}
}
class="kw">private class="kw">static void populate(int var0, @Nonnull ChunkGeneratorExecution var1, @Nonnull Cave var2) {
long var3 = var1.getIndex();
if (var2.contains(var3)) {
int var5 = var1.getX();
int var6 = var1.getZ();
Random var7 = new Random();
int var8 = var2.getCaveType().getEnvironment();
var1.setPriorityModifier(CaveBlockPriorityModifier.INSTANCE);
for (CaveNode var12 : var2.getCaveNodes(var3)) {
populateCaveNode(var0, var1, var2, var12, var7);
}
var1.setPriorityModifier(BlockPriorityModifier.NONE);
for (CaveNode var20 : var2.getCaveNodes(var3)) {
for (CavePrefab var16 : var20.getCavePrefabs()) {
if (var16.getBounds().intersectsChunk(var5, var6)) {
populatePrefab(var0, var8, var1, var2, var20, var16);
}
}
}
}
}
class="kw">private class="kw">static void populateCaveNode(int var0, @Nonnull ChunkGeneratorExecution var1, @Nonnull Cave var2, @Nonnull CaveNode var3, @Nonnull Random var4) {
var4.setSeed(var0 + var3.getSeedOffset());
var3.getShape().populateChunk(var0, var1, var2, var3, var4);
if (var1.getChunkGenerator().getBenchmark().isEnabled()) {
int var5 = var3.getBounds().getLowBoundX();
int var6 = var3.getBounds().getLowBoundZ();
if (ChunkUtil.isInsideChunk(var1.getX(), var1.getZ(), var5, var6)) {
var1.getChunkGenerator().getBenchmark().registerCaveNode("Cave\t" + var2.getCaveType().getName() + "\t" + var3.getCaveNodeType().getName());
}
}
}
class="kw">private class="kw">static void populatePrefab(
int var0, int var1, @Nonnull ChunkGeneratorExecution var2, @Nonnull Cave var3, @Nonnull CaveNode var4, @Nonnull CavePrefab var5
) {
generatePrefabAt(var0, var5.getX(), var5.getZ(), var5.getY(), var1, var2, var3, var4, var5.getConfiguration(), var5.getPrefab(), var5.getRotation());
}
class="kw">private class="kw">static void generatePrefabAt(
int var0,
int var1,
int var2,
int var3,
int var4,
@Nonnull ChunkGeneratorExecution var5,
@Nonnull Cave var6,
@Nonnull CaveNode var7,
BlockMaskCondition var8,
@Nonnull WorldGenPrefabSupplier var9,
PrefabRotation var10
) {
int var11 = var1 - ChunkUtil.minBlock(var5.getX());
int var12 = var2 - ChunkUtil.minBlock(var5.getZ());
long var13 = HashUtil.rehash(var1, var2) * -99562191L;
boolean var15 = var6.getCaveType().isSubmerge();
PrefabPasteUtil.PrefabPasteBuffer var16 = ChunkGenerator.getResource().prefabBuffer;
var16.setSeed(var0, var13);
var16.blockMask = var8;
var16.execution = var5;
var16.environmentId = var4;
var16.priority = (byte)(var15 ? 39 : 7);
if (var5.getChunkGenerator().getBenchmark().isEnabled() && ChunkUtil.isInsideChunkRelative(var11, var12)) {
var5.getChunkGenerator()
.getBenchmark()
.registerPrefab("CavePrefab: " + var6.getCaveType().getName() + "\t" + var7.getCaveNodeType().getName() + "\t" + var9.getName());
}
PrefabPasteUtil.generate(var16, var10, var9, var1, var3, var2, var11, var12);
}
class="kw">public class="kw">static boolean isMatchingHeightThreshold(int var0, int var1, int var2, @Nonnull ChunkGenerator var3, @Nonnull CaveType var4) {
ICoordinateCondition var5 = var4.getHeightCondition();
if (var5 == DefaultCoordinateCondition.DEFAULT_TRUE) {
class="kw">return true;
}
if (var5 == DefaultCoordinateCondition.DEFAULT_FALSE) {
class="kw">return false;
}
int var6 = var3.getHeight(var0, var1, var2);
class="kw">return var5.eval(var0 + -173220171, var1, var6, var2);
}
}