Config interface

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

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

Поля (3)

МодификаторыТипИмя
ArrayCodec<Spawner.Config> ARRAY_CODEC
Spawner.Config[] EMPTY_ARRAY
CodecMapCodec<Spawner.Config> TYPE_CODEC

Методы (2)

МодификаторыВозвратСигнатура
abstract Spawner createSpawner create()
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() {
      }
   }
}