FitToHeightMapSpawnProvider class
Пакет: com.hypixel.hytale.server.core.universe.world.spawn
Файл: com/hypixel/hytale/server/core/universe/world/spawn/FitToHeightMapSpawnProvider.java
implements: ISpawnProvider
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Transform |
var3 |
|
Vector3d |
var4 |
|
WorldChunk |
var5 |
|
int |
var6 |
|
int |
var7 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var5 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.spawn;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.WorldChunk;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">public class FitToHeightMapSpawnProvider class="kw">implements ISpawnProvider {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<FitToHeightMapSpawnProvider> CODEC = BuilderCodec.<FitToHeightMapSpawnProvider>builder(
FitToHeightMapSpawnProvider.class, FitToHeightMapSpawnProvider::new
)
.documentation(
"A spawn provider that takes a spawn point from another provider and attempts to fit it to the heightmap of the world whenever the spawn point would place the player out of bounds."
)
.<ISpawnProvider>append(new KeyedCodec<>("SpawnProvider", ISpawnProvider.CODEC), (var0, var1) -> var0.spawnProvider = var1, var0 -> var0.spawnProvider)
.documentation("The target spawn provider to take the initial spawn point from.")
.add()
.build();
class="kw">private ISpawnProvider spawnProvider;
class="kw">protected FitToHeightMapSpawnProvider() {
}
class="kw">public FitToHeightMapSpawnProvider(@Nonnull ISpawnProvider var1) {
this.spawnProvider = var1;
}
@Nonnull
@Override
class="kw">public Transform getSpawnPoint(@Nonnull World var1, @Nonnull UUID var2) {
Transform var3 = this.spawnProvider.getSpawnPoint(var1, var2);
Vector3d var4 = var3.getPosition();
if (var4.y() < 0.0) {
WorldChunk var5 = var1.getNonTickingChunk(ChunkUtil.indexChunkFromBlock(var4.x(), var4.z()));
if (var5 != null) {
int var6 = MathUtil.floor(var4.x());
int var7 = MathUtil.floor(var4.z());
var4.y = var5.getHeight(var6, var7) + 1;
}
}
class="kw">return var3;
}
@Override
class="kw">public Transform[] getSpawnPoints() {
class="kw">return this.spawnProvider.getSpawnPoints();
}
@Override
class="kw">public boolean isWithinSpawnDistance(@Nonnull Vector3d var1, double var2) {
class="kw">return this.spawnProvider.isWithinSpawnDistance(var1, var2);
}
}