IndividualSpawnProvider class
Пакет: com.hypixel.hytale.server.core.universe.world.spawn
Файл: com/hypixel/hytale/server/core/universe/world/spawn/IndividualSpawnProvider.java
implements: ISpawnProvider
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
double |
var4 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(Transform var9 : this.spawnPoints) |
Исходный код
Показать/скрыть
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.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.math.util.HashUtil;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class IndividualSpawnProvider class="kw">implements ISpawnProvider {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<IndividualSpawnProvider> CODEC = BuilderCodec.<IndividualSpawnProvider>builder(
IndividualSpawnProvider.class, IndividualSpawnProvider::new
)
.documentation(
"A spawn provider that selects a spawn point from a list based on the player being spawned in. This gives random but consistent spawn points for players."
)
.<Transform[]>append(
new KeyedCodec<>("SpawnPoints", new ArrayCodec<>(Transform.CODEC, Transform[]::new)),
(var0, var1) -> var0.spawnPoints = var1,
var0 -> var0.spawnPoints
)
.documentation("The list of spawn points to select from.")
.add()
.build();
class="kw">private Transform[] spawnPoints;
class="kw">public IndividualSpawnProvider() {
}
class="kw">public IndividualSpawnProvider(@Nonnull Transform var1) {
this.spawnPoints = new Transform[1];
this.spawnPoints[0] = var1;
}
class="kw">public IndividualSpawnProvider(@Nonnull Transform[] var1) {
this.spawnPoints = var1;
}
@Override
class="kw">public Transform getSpawnPoint(@Nonnull World var1, @Nonnull UUID var2) {
class="kw">return new Transform(this.spawnPoints[Math.floorMod((int)HashUtil.hashUuid(var2), this.spawnPoints.length)]);
}
@Override
class="kw">public Transform[] getSpawnPoints() {
class="kw">return this.spawnPoints;
}
@Nullable
class="kw">public Transform getFirstSpawnPoint() {
class="kw">return this.spawnPoints.length == 0 ? null : this.spawnPoints[0];
}
@Override
class="kw">public boolean isWithinSpawnDistance(@Nonnull Vector3d var1, double var2) {
double var4 = var2 * var2;
for (Transform var9 : this.spawnPoints) {
if (var1.distanceSquared(var9.getPosition()) < var4) {
class="kw">return true;
}
}
class="kw">return false;
}
}