CaveNodeChildEntryJsonLoader class

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

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

extends: JsonLoader<SeedStringResource, CaveNodeType.CaveNodeChildEntry>

Поля (59)

МодификаторыТипИмя
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
final CaveNodeTypeStorage storage
WeightedMap.Builder var1
Vector3d var1
var1
Vector3d var1
var1
PrefabRotation[] var1
var1
var1
IDoubleRange var1
var1
IFloatRange var1
IFloatRange var1
IFloatRange var1
var1
IFloatRange var1
var1
IFloatRange var1
var1
IFloatRange var1
var1
double var1
var1
CaveYawMode var1
var1
CaveNodeType var10
JsonElement var2
JsonElement var2
IFloatRange var2
IFloatRange var2
JsonArray var3
String var3
JsonArray var3
JsonArray var3
JsonArray var4
var4
var4
String var4
JsonElement var5
JsonElement var6
CaveNodeType var7
double var8

Методы (9)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("'Weights' must be an array if set")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Weight array size is different from node name array.")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("There are no valid nodes in this child entry!")
abstract throw errorthrow error("Invalid cave node type entry: %d", var1)
for for(int var4 = 0; var4 < var1.length; var4++)
abstract for for(int var11 = 0; var11 < var3.size()
if if(var1 != null)
if if(var1 != null)
protected double loadChancedouble loadChance()

Исходный код

Показать/скрыть
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!";
   }
}