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