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;
   }
}