Constants interface

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

Файл: com/hypixel/hytale/server/worldgen/loader/cave/CaveNodeChildEntryJsonLoader.java

Поля (17)

МодификаторыТипИмя
String ERROR_ENTRY_WEIGHT_SIZE
String ERROR_NO_NODES
String ERROR_WEIGHTS_ARRAY
String KEY_ANCHOR
String KEY_CHANCE
String KEY_CHILDREN_LIMIT
String KEY_NODE
String KEY_OFFSET
String KEY_PITCH_ADD
String KEY_PITCH_SET
String KEY_REPEAT
String KEY_ROTATION
String KEY_SEED
String KEY_WEIGHTS
String KEY_YAW_ADD
String KEY_YAW_MODE
String KEY_YAW_SET

Исходный код

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

class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import com.hypixel.hytale.procedurallib.json.DoubleRangeJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.FloatRangeJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.supplier.DoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IDoubleRange;
class="kw">import com.hypixel.hytale.procedurallib.supplier.IFloatRange;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabRotation;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveNodeType;
class="kw">import com.hypixel.hytale.server.worldgen.cave.CaveYawMode;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;

class="kw">public class CaveNodeChildEntryJsonLoader class="kw">extends JsonLoader<SeedStringResource, CaveNodeType.CaveNodeChildEntry> {
   class="kw">protected class="kw">final CaveNodeTypeStorage storage;

   class="kw">public CaveNodeChildEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, CaveNodeTypeStorage var4) {
      super(var1.append(".CaveNodeChildEntry"), var2, var3);
      this.storage = var4;
   }

   @Nonnull
   class="kw">public CaveNodeType.CaveNodeChildEntry load() {
      class="kw">return new CaveNodeType.CaveNodeChildEntry(
         this.loadNodes(),
         this.loadAnchor(),
         this.loadOffset(),
         this.loadRotations(),
         this.loadChildrenLimit(),
         this.loadRepeat(),
         this.loadPitchModifier(),
         this.loadYawModifier(),
         this.loadChance(),
         this.loadYawMode()
      );
   }

   @Nonnull
   class="kw">protected IWeightedMap<CaveNodeType> loadNodes() {
      WeightedMap.Builder var1 = WeightedMap.builder(CaveNodeType.EMPTY_ARRAY);
      JsonElement var2 = this.get("Node");
      if (var2.isJsonArray()) {
         JsonArray var3 = var2.getAsJsonArray();
         JsonArray var4;
         if (this.has("Weights")) {
            JsonElement var5 = this.get("Weights");
            if (!var5.isJsonArray()) {
               throw new IllegalArgumentException("'Weights' must be an array if set");
            }

            var4 = var5.getAsJsonArray();
            if (var4.size() != var3.size()) {
               throw new IllegalArgumentException("Weight array size is different from node name array.");
            }
         } else {
            var4 = null;
         }

         for (int var11 = 0; var11 < var3.size(); var11++) {
            JsonElement var6 = this.getOrLoad(var3.get(var11));
            CaveNodeType var7 = this.loadCaveNodeType(var11, var6);
            double var8 = var4 != null ? var4.get(var11).getAsDouble() : 1.0;
            var1.put(var7, var8);
         }
      } else if (var2.isJsonObject() || var2.isJsonPrimitive()) {
         CaveNodeType var10 = this.loadCaveNodeType(0, var2);
         var1.put(var10, 1.0);
      }

      if (var1.size() <= 0) {
         throw new IllegalArgumentException("There are no valid nodes in this child entry!");
      } else {
         class="kw">return var1.build();
      }
   }

   @Nonnull
   class="kw">protected CaveNodeType loadCaveNodeType(int var1, @Nonnull JsonElement var2) {
      if (var2.isJsonObject()) {
         String var4 = this.seed.get().getUniqueName("ChildCaveType#");
         class="kw">return this.storage.loadCaveNodeType(var4, var2.getAsJsonObject());
      } else if (var2.isJsonPrimitive() && var2.getAsJsonPrimitive().isString()) {
         String var3 = var2.getAsString();
         class="kw">return this.storage.getOrLoadCaveNodeType(var3);
      } else {
         throw error("Invalid cave node type entry: %d", var1);
      }
   }

   @Nonnull
   class="kw">protected Vector3d loadAnchor() {
      Vector3d var1 = new Vector3d();
      if (this.has("Anchor")) {
         var1 = this.loadVector(new Vector3d(var1), this.get("Anchor"));
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected Vector3d loadOffset() {
      Vector3d var1 = new Vector3d();
      if (this.has("Offset")) {
         var1 = this.loadVector(new Vector3d(var1), this.get("Offset"));
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected PrefabRotation[] loadRotations() {
      PrefabRotation[] var1 = new PrefabRotation[]{PrefabRotation.ROTATION_0};
      if (this.has("Rotation")) {
         JsonElement var2 = this.get("Rotation");
         if (var2.isJsonPrimitive()) {
            var1 = new PrefabRotation[]{PrefabRotation.valueOfExtended(var2.getAsString())};
         } else if (var2.isJsonArray()) {
            JsonArray var3 = var2.getAsJsonArray();
            var1 = new PrefabRotation[var3.size()];

            for (int var4 = 0; var4 < var1.length; var4++) {
               var1[var4] = PrefabRotation.valueOfExtended(var3.get(var4).getAsString());
            }
         }
      }

      class="kw">return var1;
   }

   @Nullable
   class="kw">protected IDoubleRange loadChildrenLimit() {
      class="kw">return this.has("ChildrenLimit") ? new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("ChildrenLimit"), 0.0).load() : null;
   }

   @Nonnull
   class="kw">protected IDoubleRange loadRepeat() {
      IDoubleRange var1 = DoubleRange.ONE;
      if (this.has("Repeat")) {
         var1 = new DoubleRangeJsonLoader<>(this.seed, this.dataFolder, this.get("Repeat"), 0.0).load();
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected CaveNodeType.CaveNodeChildEntry.OrientationModifier loadYawModifier() {
      IFloatRange var1 = this.loadYawAdd();
      if (var1 != null) {
         class="kw">return (var1x, var2x) -> var1x + var1.getValue(var2x);
      }

      IFloatRange var2 = this.loadYawSet();
      class="kw">return var2 != null ? (var1x, var2x) -> var2.getValue(var2x) : (var0, var1x) -> var0;
   }

   @Nonnull
   class="kw">protected CaveNodeType.CaveNodeChildEntry.OrientationModifier loadPitchModifier() {
      IFloatRange var1 = this.loadPitchAdd();
      if (var1 != null) {
         class="kw">return (var1x, var2x) -> var1x + var1.getValue(var2x);
      }

      IFloatRange var2 = this.loadPitchSet();
      class="kw">return var2 != null ? (var1x, var2x) -> var2.getValue(var2x) : (var0, var1x) -> var0;
   }

   @Nullable
   class="kw">protected IFloatRange loadYawAdd() {
      IFloatRange var1 = null;
      if (this.has("YawAdd")) {
         var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("YawAdd"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
      }

      class="kw">return var1;
   }

   @Nullable
   class="kw">protected IFloatRange loadPitchAdd() {
      IFloatRange var1 = null;
      if (this.has("PitchAdd")) {
         var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("PitchAdd"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
      }

      class="kw">return var1;
   }

   @Nullable
   class="kw">protected IFloatRange loadYawSet() {
      IFloatRange var1 = null;
      if (this.has("YawSet")) {
         var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("YawSet"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
      }

      class="kw">return var1;
   }

   @Nullable
   class="kw">protected IFloatRange loadPitchSet() {
      IFloatRange var1 = null;
      if (this.has("PitchSet")) {
         var1 = new FloatRangeJsonLoader<>(this.seed, this.dataFolder, this.get("PitchSet"), 0.0F, var0 -> var0 * (float) (Math.PI / 180.0)).load();
      }

      class="kw">return var1;
   }

   class="kw">protected double loadChance() {
      double var1 = 1.0;
      if (this.has("Chance")) {
         var1 = this.get("Chance").getAsDouble();
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected CaveYawMode loadYawMode() {
      CaveYawMode var1 = CaveYawMode.NODE;
      if (this.has("YawMode")) {
         var1 = CaveYawMode.valueOf(this.get("YawMode").getAsString());
      }

      class="kw">return var1;
   }

   @Nonnull
   class="kw">protected Vector3d loadVector(@Nonnull Vector3d var1, @Nonnull JsonElement var2) {
      JsonArray var3 = var2.getAsJsonArray();
      var1.x = var3.get(0).getAsDouble();
      var1.y = var3.get(1).getAsDouble();
      var1.z = var3.get(2).getAsDouble();
      class="kw">return var1;
   }

   class="kw">public class="kw">interface Constants {
      String KEY_NODE = "Node";
      String KEY_SEED = "Seed";
      String KEY_WEIGHTS = "Weights";
      String KEY_ANCHOR = "Anchor";
      String KEY_OFFSET = "Offset";
      String KEY_ROTATION = "Rotation";
      String KEY_CHILDREN_LIMIT = "ChildrenLimit";
      String KEY_REPEAT = "Repeat";
      String KEY_PITCH_ADD = "PitchAdd";
      String KEY_PITCH_SET = "PitchSet";
      String KEY_YAW_ADD = "YawAdd";
      String KEY_YAW_SET = "YawSet";
      String KEY_CHANCE = "Chance";
      String KEY_YAW_MODE = "YawMode";
      String ERROR_WEIGHTS_ARRAY = "'Weights' must be an array if set";
      String ERROR_ENTRY_WEIGHT_SIZE = "Weight array size is different from node name array.";
      String ERROR_NO_NODES = "There are no valid nodes in this child entry!";
   }
}