Spawner interface

Пакет: com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner

Файл: com/hypixel/hytale/builtin/adventure/worldevents/condition/spawner/Spawner.java

Поля (11)

МодификаторыТипИмя
ArrayCodec<Spawner.Config> ARRAY_CODEC
Spawner[] EMPTY_ARRAY
Spawner.Config[] EMPTY_ARRAY
PASS, FAIL, ERROR
CodecMapCodec<Spawner.Config> TYPE_CODEC
Ref var4
Ref var4
BlockSection var5
FluidSection var5
int var5
BlockType var6

Методы (14)

МодификаторыВозвратСигнатура
Result Result()
abstract Spawner createSpawner create()
static int findSurfaceint findSurface(int var0, int var1, int var2, int var3, int var4, @Nonnull ChunkStore var5)
for for(int var6 = 1; var6 <= var4; var6++)
for for(int var7 = 1; var7 <= var3; var7++)
static int getBlockIdint getBlockId(int var0, int var1, int var2, @Nonnull ChunkStore var3)
static int getFluidIdint getFluidId(int var0, int var1, int var2, @Nonnull ChunkStore var3)
if if(var4 == null)
if if(var4 == null)
if if(var5 != 0 && var5 != 1)
abstract boolean onCompleteboolean onComplete(@Nonnull Vector3ic var1, @Nonnull WorldEvent var2)
abstract Spawner.Result testSpawner.Result test(@Nonnull World var1, @Nonnull Vector3ic var2, @Nonnull Random var3)
static boolean testSurfaceboolean testSurface(int var0, int var1, int var2, int var3, @Nonnull ChunkStore var4)
default void validatedefault void validate(@Nonnull Validator var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.worldevents.condition.spawner;

class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.Validator;
class="kw">import com.hypixel.hytale.builtin.adventure.worldevents.event.WorldEvent;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.Opacity;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.FluidSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import java.util.Random;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3ic;

class="kw">public class="kw">interface Spawner {
   Spawner[] EMPTY_ARRAY = new Spawner[0];
   int INVALID_HEIGHT = Integer.MIN_VALUE;

   Spawner.Result test(@Nonnull World var1, @Nonnull Vector3ic var2, @Nonnull Random var3);

   boolean onComplete(@Nonnull Vector3ic var1, @Nonnull WorldEvent var2);

   class="kw">static int findSurface(int var0, int var1, int var2, int var3, int var4, @Nonnull ChunkStore var5) {
      if (testSurface(var0, var1, var2, var3, var5)) {
         class="kw">return var1;
      }

      for (int var6 = 1; var6 <= var4; var6++) {
         if (testSurface(var0, var1 - var6, var2, var3, var5)) {
            class="kw">return var1 - var6;
         }

         if (testSurface(var0, var1 + var6, var2, var3, var5)) {
            class="kw">return var1 + var6;
         }
      }

      class="kw">return Integer.MIN_VALUE;
   }

   class="kw">static int getBlockId(int var0, int var1, int var2, @Nonnull ChunkStore var3) {
      Ref var4 = var3.getChunkSectionReferenceAtBlock(var0, var1, var2);
      if (var4 == null) {
         class="kw">return 1;
      }

      BlockSection var5 = var3.getStore().getComponent(var4, BlockSection.getComponentType());
      class="kw">return var5 == null ? 1 : var5.get(var0, var1, var2);
   }

   class="kw">static int getFluidId(int var0, int var1, int var2, @Nonnull ChunkStore var3) {
      Ref var4 = var3.getChunkSectionReferenceAtBlock(var0, var1, var2);
      if (var4 == null) {
         class="kw">return 0;
      }

      FluidSection var5 = var3.getStore().getComponent(var4, FluidSection.getComponentType());
      class="kw">return var5 == null ? 0 : var5.getFluidId(var0, var1, var2);
   }

   class="kw">private class="kw">static boolean testSurface(int var0, int var1, int var2, int var3, @Nonnull ChunkStore var4) {
      int var5 = getBlockId(var0, var1, var2, var4);
      if (var5 != 0 && var5 != 1) {
         BlockType var6 = BlockType.getAssetMap().getAsset(var5);
         if (var6 != null && var6.getOpacity() != Opacity.Transparent) {
            for (int var7 = 1; var7 <= var3; var7++) {
               if (getBlockId(var0, var1 + var7, var2, var4) != 0) {
                  class="kw">return false;
               }
            }

            class="kw">return true;
         } else {
            class="kw">return false;
         }
      } else {
         class="kw">return false;
      }
   }

   class="kw">interface Config {
      Spawner.Config[] EMPTY_ARRAY = new Spawner.Config[0];
      CodecMapCodec<Spawner.Config> TYPE_CODEC = new CodecMapCodec<>("Type", true);
      ArrayCodec<Spawner.Config> ARRAY_CODEC = new ArrayCodec<>(TYPE_CODEC, Spawner.Config[]::new);

      @Nonnull
      Spawner create();

      class="kw">default void validate(@Nonnull Validator var1) {
      }
   }

   enum Result {
      PASS,
      FAIL,
      ERROR;

      Result() {
      }
   }
}