DefaultEnvironmentContainerEntryLoader class

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

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

extends: EnvironmentContainerJsonLoader.EnvironmentContainerEntryJsonLoader

Поля (8)

МодификаторыТипИмя
IWeightedMap var1
var1
var1
var1
WeightedMap.Builder var2
String var3
int var4
WeightedMap.Builder var5

Методы (4)

МодификаторыВозвратСигнатура
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown key! " + var3)
if if(var4 == Integer.MIN_VALUE)
public EnvironmentContainer.DefaultEnvironmentContainerEntry loadpublic EnvironmentContainer.DefaultEnvironmentContainerEntry load()
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();
      }
   }
}