Loader class

Пакет: com.hypixel.hytale.server.worldgen.prefab

Файл: com/hypixel/hytale/server/worldgen/prefab/PrefabBaseCheck.java

extends: JsonLoader<T, PrefabBaseCheck>

Поля (3)

МодификаторыТипИмя
PrefabBaseCheck var1
JsonArray var2
PrefabBaseCheck[] var3

Методы (4)

МодификаторыВозвратСигнатура
abstract for for(int var4 = 0; var4 < var2.size()
public PrefabBaseCheck loadpublic PrefabBaseCheck load()
public static <T extends SeedStringResource> PrefabBaseCheck[] loadAllpublic static <T extends SeedStringResource> PrefabBaseCheck[] loadAll(@Nonnull JsonLoader<T, ?> var0, @Nullable JsonElement var1)
abstract super super(var1, var2, var3)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.prefab;

class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.codec.Codec;
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.codec.validation.Validators;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Arrays;
class="kw">import java.util.Comparator;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class PrefabBaseCheck {
   class="kw">public class="kw">static class="kw">final String KEY_BASE_SCALE = "BaseScale";
   class="kw">public class="kw">static class="kw">final String KEY_PREFAB_SIZE = "PrefabSize";
   class="kw">public class="kw">static class="kw">final String KEY_HEIGHT_TOLERANCE = "HeightTolerance";
   class="kw">public class="kw">static class="kw">final float DEFAULT_BASE_SCALE = 1.0F;
   class="kw">public class="kw">static class="kw">final int DEFAULT_PREFAB_SIZE = 20;
   class="kw">public class="kw">static class="kw">final int DEFAULT_HEIGHT_TOLERANCE = 2;
   class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabBaseCheck> CODEC = BuilderCodec.builder(PrefabBaseCheck.class, PrefabBaseCheck::new)
      .documentation("Define additional height checks around the base of the prefab to prevent it placing on uneven ground")
      .<Float>append(new KeyedCodec<>("BaseScale", Codec.FLOAT), (var0, var1) -> var0.baseScale = var1, var0 -> var0.baseScale)
      .addValidator(Validators.range(0.0F, 1.0F))
      .documentation("The size of the prefab's base as a proportion of its horizontal dimensions")
      .add()
      .<Integer>append(new KeyedCodec<>("PrefabSize", Codec.INTEGER), (var0, var1) -> var0.prefabSize = var1, var0 -> var0.prefabSize)
      .addValidator(Validators.greaterThan(0))
      .documentation("The minimum size of the prefab that this base check applies to")
      .add()
      .<Integer>append(new KeyedCodec<>("HeightTolerance", Codec.INTEGER), (var0, var1) -> var0.heightTolerance = var1, var0 -> var0.heightTolerance)
      .documentation("The amount of terrain height difference allowed around the prefab's base before the location is deemed too uneven")
      .add()
      .build();
   class="kw">public class="kw">static class="kw">final ArrayCodec<PrefabBaseCheck> ARRAY_CODEC = new ArrayCodec<>(CODEC, PrefabBaseCheck[]::new);
   class="kw">public class="kw">static class="kw">final PrefabBaseCheck[] EMPTY_ARRAY = new PrefabBaseCheck[0];
   class="kw">protected float baseScale = 1.0F;
   class="kw">protected int prefabSize = 20;
   class="kw">protected int heightTolerance = 2;

   class="kw">public PrefabBaseCheck() {
   }

   class="kw">public float getBaseScale() {
      class="kw">return this.baseScale;
   }

   class="kw">public int getPrefabSize() {
      class="kw">return this.prefabSize;
   }

   class="kw">public int getHeightTolerance() {
      class="kw">return this.heightTolerance;
   }

   class="kw">public class="kw">static class Loader<T class="kw">extends SeedStringResource> class="kw">extends JsonLoader<T, PrefabBaseCheck> {
      class="kw">public Loader(SeedString<T> var1, Path var2, @Nullable JsonElement var3) {
         super(var1, var2, var3);
      }

      @Nullable
      class="kw">public PrefabBaseCheck load() {
         PrefabBaseCheck var1 = new PrefabBaseCheck();
         var1.baseScale = this.mustGetNumber("BaseScale", 1.0F).floatValue();
         var1.prefabSize = this.mustGetNumber("PrefabSize", 20).intValue();
         var1.heightTolerance = this.mustGetNumber("HeightTolerance", 2).intValue();
         class="kw">return var1;
      }

      class="kw">public class="kw">static <T class="kw">extends SeedStringResource> PrefabBaseCheck[] loadAll(@Nonnull JsonLoader<T, ?> var0, @Nullable JsonElement var1) {
         if (var1 != null && var1.isJsonArray()) {
            JsonArray var2 = var1.getAsJsonArray();
            if (var2.isEmpty()) {
               class="kw">return PrefabBaseCheck.EMPTY_ARRAY;
            }

            PrefabBaseCheck[] var3 = new PrefabBaseCheck[var2.size()];

            for (int var4 = 0; var4 < var2.size(); var4++) {
               var3[var4] = new PrefabBaseCheck.Loader<>(var0.getSeed(), var0.getDataFolder(), var2.get(var4)).load();
            }

            Arrays.sort(var3, Comparator.comparingInt(PrefabBaseCheck::getPrefabSize).reversed());
            class="kw">return var3;
         } else {
            class="kw">return PrefabBaseCheck.EMPTY_ARRAY;
         }
      }
   }
}