EnvironmentContainerJsonLoader class

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

Файл: com/hypixel/hytale/server/worldgen/loader/container/EnvironmentContainerJsonLoader.java

extends: JsonLoader<SeedStringResource, EnvironmentContainer>

Поля (38)

МодификаторыТипИмя
String ERROR_LOADING_ENTRY
String ERROR_NAMES_NOT_FOUND
String ERROR_NO_VALUE_NOISE
String ERROR_WEIGHT_SIZE
String KEY_DEFAULT
String KEY_ENTRIES
String KEY_ENTRY_NOISE
String KEY_NAMES
String KEY_NOISE_MASK
String KEY_WEIGHTS
String SEED_INDEX_SUFFIX
JsonElement var1
var1
var1
var1
var1
JsonArray var1
IWeightedMap var1
var1
var1
var1
IWeightedMap var1
WeightedMap.Builder var1
String var10
String var11
int var12
int var13
WeightedMap.Builder var2
JsonElement var2
String var3
JsonArray var3
int var4
JsonArray var4
WeightedMap.Builder var5
String var6
int var7
ModifyEvent.SeedGenerator var8
double var8

Методы (21)

МодификаторыВозвратСигнатура
public DefaultEnvironmentContainerEntryLoaderpublic DefaultEnvironmentContainerEntryLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3)
public EnvironmentContainerEntryJsonLoaderpublic EnvironmentContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var3)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find names. Keyword: Names")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Tint weights array size does not fit color array size.")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var6)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var11)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var10)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find value noise. Keyword: Noise")
abstract for for(int var3 = 0; var3 < var1.size()
abstract for for(int var5 = 0; var5 < var3.size()
if if(var4 == Integer.MIN_VALUE)
if if(var7 == Integer.MIN_VALUE)
if if(var13 == Integer.MIN_VALUE)
if if(var12 == Integer.MIN_VALUE)
public EnvironmentContainer.DefaultEnvironmentContainerEntry loadpublic EnvironmentContainer.DefaultEnvironmentContainerEntry load()
public EnvironmentContainer.EnvironmentContainerEntry loadpublic EnvironmentContainer.EnvironmentContainerEntry load()
protected IWeightedMap<Integer> loadIdMappingprotected IWeightedMap<Integer> loadIdMapping()
protected ICoordinateCondition loadMapConditionprotected ICoordinateCondition loadMapCondition()
protected NoiseProperty loadValueNoiseprotected NoiseProperty loadValueNoise()
abstract super super(var1, var2, var3)

Исходный код

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

class="kw">import com.google.gson.JsonArray;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvent;
class="kw">import com.hypixel.hytale.builtin.worldgen.modifier.event.ModifyEvents;
class="kw">import com.hypixel.hytale.common.map.IWeightedMap;
class="kw">import com.hypixel.hytale.common.map.WeightedMap;
class="kw">import com.hypixel.hytale.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.procedurallib.condition.ICoordinateCondition;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.NoiseMaskConditionJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.NoisePropertyJsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.procedurallib.property.NoiseProperty;
class="kw">import com.hypixel.hytale.server.core.asset.type.environment.config.Environment;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.container.EnvironmentContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.BiomeFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.util.ConstantNoiseProperty;
class="kw">import com.hypixel.hytale.server.worldgen.util.ListPool;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class EnvironmentContainerJsonLoader class="kw">extends JsonLoader<SeedStringResource, EnvironmentContainer> {
   @Nonnull
   class="kw">protected class="kw">final BiomeFileContext biomeContext;

   class="kw">public EnvironmentContainerJsonLoader(SeedString<SeedStringResource> var1, Path var2, JsonElement var3, @Nonnull BiomeFileContext var4) {
      super(var1, var2, var3);
      this.biomeContext = var4;
   }

   @Nonnull
   class="kw">public EnvironmentContainer load() {
      class="kw">return new EnvironmentContainer(this.loadDefault(), this.loadEntries());
   }

   @Nonnull
   class="kw">protected EnvironmentContainer.DefaultEnvironmentContainerEntry loadDefault() {
      JsonElement var1;
      if (this.json == null || this.json.isJsonNull() || this.json.isJsonArray()) {
         var1 = null;
      } else if (this.json.isJsonObject() && this.has("Default")) {
         var1 = this.get("Default");
      } else if (!this.json.isJsonPrimitive() && !this.json.isJsonObject()) {
         var1 = null;
      } else {
         var1 = this.json;
      }

      class="kw">return new EnvironmentContainerJsonLoader.DefaultEnvironmentContainerEntryLoader(this.seed, this.dataFolder, var1).load();
   }

   @Nonnull
   class="kw">protected EnvironmentContainer.EnvironmentContainerEntry[] loadEntries() {
      JsonArray var1 = this.mustGetArray("Entries", EMPTY_ARRAY);

      try (ListPool.Resource var2 = EnvironmentContainer.ENTRY_POOL.acquire(var1.size())) {
         for (int var3 = 0; var3 < var1.size(); var3++) {
            try {
               var2.add(
                  new EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader(
                        this.seed.append(String.format("-%s", var3)), this.dataFolder, var1.get(var3)
                     )
                     .load()
               );
            } catch (Throwable var6) {
               throw new Error(String.format("Failed to load TintContainerEntry #%s", var3), var6);
            }
         }

         ModifyEvent.SeedGenerator var8 = new ModifyEvent.SeedGenerator<>(this.seed);
         ModifyEvent.dispatch(
            ModifyEvents.BiomeEnvironments.class,
            new ModifyEvents.BiomeEnvironments(
               this.seed,
               this.biomeContext,
               var2,
               var2x -> new EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader(var8.next(), this.dataFolder, this.loadFile(var2x)).load()
            )
         );
         class="kw">return var2.toArray();
      }
   }

   class="kw">public class="kw">interface Constants {
      String KEY_DEFAULT = "Default";
      String KEY_ENTRIES = "Entries";
      String KEY_NAMES = "Names";
      String KEY_WEIGHTS = "Weights";
      String KEY_ENTRY_NOISE = "Noise";
      String KEY_NOISE_MASK = "NoiseMask";
      String ERROR_NAMES_NOT_FOUND = "Could not find names. Keyword: Names";
      String ERROR_WEIGHT_SIZE = "Tint weights array size does not fit color array size.";
      String ERROR_NO_VALUE_NOISE = "Could not find value noise. Keyword: Noise";
      String ERROR_LOADING_ENTRY = "Failed to load TintContainerEntry #%s";
      String SEED_INDEX_SUFFIX = "-%s";
   }

   class="kw">protected class="kw">static class DefaultEnvironmentContainerEntryLoader class="kw">extends EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader {
      class="kw">public DefaultEnvironmentContainerEntryLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
         super(var1, var2, var3);
      }

      @Nonnull
      class="kw">public EnvironmentContainer.DefaultEnvironmentContainerEntry load() {
         IWeightedMap var1;
         if (this.json == null || this.json.isJsonNull()) {
            WeightedMap.Builder var5 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
            var5.put(0, 1.0);
            var1 = var5.build();
         } else if (this.json.isJsonPrimitive()) {
            WeightedMap.Builder var2 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
            String var3 = this.json.getAsString();
            int var4 = Environment.getAssetMap().getIndex(var3);
            if (var4 == Integer.MIN_VALUE) {
               throw new IllegalArgumentException("Unknown key! " + var3);
            }

            var2.put(var4, 1.0);
            var1 = var2.build();
         } else {
            var1 = this.loadIdMapping();
         }

         class="kw">return new EnvironmentContainer.DefaultEnvironmentContainerEntry(var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO);
      }
   }

   class="kw">protected class="kw">static class EnvironmentContainerEntryJsonLoader class="kw">extends JsonLoader<SeedStringResource, EnvironmentContainer.EnvironmentContainerEntry> {
      class="kw">public EnvironmentContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
         super(var1.append(".EnvironmentContainer"), var2, var3);
      }

      @Nonnull
      class="kw">public EnvironmentContainer.EnvironmentContainerEntry load() {
         IWeightedMap var1 = this.loadIdMapping();
         class="kw">return new EnvironmentContainer.EnvironmentContainerEntry(
            var1, var1.size() > 1 ? this.loadValueNoise() : ConstantNoiseProperty.DEFAULT_ZERO, this.loadMapCondition()
         );
      }

      @Nonnull
      class="kw">protected IWeightedMap<Integer> loadIdMapping() {
         WeightedMap.Builder var1 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
         if (this.json == null || this.json.isJsonNull()) {
            var1.put(0, 1.0);
         } else if (this.json.isJsonObject()) {
            if (!this.has("Names")) {
               throw new IllegalArgumentException("Could not find names. Keyword: Names");
            }

            JsonElement var2 = this.get("Names");
            if (var2.isJsonArray()) {
               JsonArray var3 = var2.getAsJsonArray();
               JsonArray var4 = this.has("Weights") ? this.get("Weights").getAsJsonArray() : null;
               if (var4 != null && var4.size() != var3.size()) {
                  throw new IllegalArgumentException("Tint weights array size does not fit color array size.");
               }

               for (int var5 = 0; var5 < var3.size(); var5++) {
                  String var6 = var3.get(var5).getAsString();
                  int var7 = Environment.getAssetMap().getIndex(var6);
                  if (var7 == Integer.MIN_VALUE) {
                     throw new IllegalArgumentException("Unknown key! " + var6);
                  }

                  double var8 = var4 == null ? 1.0 : var4.get(var5).getAsDouble();
                  var1.put(var7, var8);
               }
            } else {
               String var11 = var2.getAsString();
               int var13 = Environment.getAssetMap().getIndex(var11);
               if (var13 == Integer.MIN_VALUE) {
                  throw new IllegalArgumentException("Unknown key! " + var11);
               }

               var1.put(var13, 1.0);
            }
         } else {
            String var10 = this.json.getAsString();
            int var12 = Environment.getAssetMap().getIndex(var10);
            if (var12 == Integer.MIN_VALUE) {
               throw new IllegalArgumentException("Unknown key! " + var10);
            }

            var1.put(var12, 1.0);
         }

         class="kw">return var1.build();
      }

      @Nullable
      class="kw">protected NoiseProperty loadValueNoise() {
         if (!this.has("Noise")) {
            throw new IllegalArgumentException("Could not find value noise. Keyword: Noise");
         } else {
            class="kw">return new NoisePropertyJsonLoader<>(this.seed, this.dataFolder, this.get("Noise")).load();
         }
      }

      @Nonnull
      class="kw">protected ICoordinateCondition loadMapCondition() {
         class="kw">return new NoiseMaskConditionJsonLoader<>(this.seed, this.dataFolder, this.get("NoiseMask")).load();
      }
   }
}