TintContainerJsonLoader class

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

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

extends: JsonLoader<SeedStringResource, TintContainer>

Поля (33)

МодификаторыТипИмя
int DEFAULT_TINT_COLOR
String ERROR_COLORS_NOT_FOUND
String ERROR_LOADING_ENTRY
String ERROR_NO_VALUE_NOISE
String ERROR_WEIGHT_SIZE
String KEY_COLORS
String KEY_DEFAULT
String KEY_ENTRIES
String KEY_ENTRY_NOISE
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
WeightedMap.Builder var2
JsonElement var2
WeightedMap.Builder var3
JsonArray var3
JsonArray var4
int var6
double var7
ModifyEvent.SeedGenerator var8
int var9

Методы (13)

МодификаторыВозвратСигнатура
public DefaultTintContainerEntryJsonLoaderpublic DefaultTintContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3)
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find colors. Keyword: Colors")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Tint weights array size does not fit color array size.")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Could not find value noise. Keyword: Noise")
abstract return new ObjectArrayListreturn new ObjectArrayList(var2)
public TintContainerEntryJsonLoaderpublic TintContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3)
abstract for for(int var3 = 0; var3 < var1.size()
abstract for for(int var5 = 0; var5 < var3.size()
public TintContainer.DefaultTintContainerEntry loadpublic TintContainer.DefaultTintContainerEntry load()
public TintContainer.TintContainerEntry loadpublic TintContainer.TintContainerEntry load()
protected IWeightedMap<Integer> loadColorMappingprotected IWeightedMap<Integer> loadColorMapping()
protected ICoordinateCondition loadMapConditionprotected ICoordinateCondition loadMapCondition()
protected NoiseProperty loadValueNoiseprotected NoiseProperty loadValueNoise()

Исходный код

Показать/скрыть
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.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.container.TintContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.BiomeFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.loader.util.ColorUtil;
class="kw">import com.hypixel.hytale.server.worldgen.util.ConstantNoiseProperty;
class="kw">import com.hypixel.hytale.server.worldgen.util.ListPool;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.nio.file.Path;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class TintContainerJsonLoader class="kw">extends JsonLoader<SeedStringResource, TintContainer> {
   @Nonnull
   class="kw">private class="kw">final BiomeFileContext biomeContext;

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

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

   @Nonnull
   class="kw">protected TintContainer.DefaultTintContainerEntry 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 TintContainerJsonLoader.DefaultTintContainerEntryJsonLoader(this.seed, this.dataFolder, var1).load();
   }

   @Nonnull
   class="kw">protected List<TintContainer.TintContainerEntry> loadEntries() {
      JsonArray var1 = this.mustGetArray("Entries", EMPTY_ARRAY);

      try (ListPool.Resource var2 = TintContainer.ENTRY_POOL.acquire(var1.size())) {
         for (int var3 = 0; var3 < var1.size(); var3++) {
            try {
               var2.add(
                  new TintContainerJsonLoader.TintContainerEntryJsonLoader(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.BiomeTints.class,
            new ModifyEvents.BiomeTints(
               this.seed,
               this.biomeContext,
               var2,
               var2x -> new TintContainerJsonLoader.TintContainerEntryJsonLoader(var8.next(), this.dataFolder, this.loadFile(var2x)).load()
            )
         );
         class="kw">return new ObjectArrayList(var2);
      }
   }

   class="kw">public class="kw">interface Constants {
      String KEY_DEFAULT = "Default";
      String KEY_ENTRIES = "Entries";
      String KEY_COLORS = "Colors";
      String KEY_WEIGHTS = "Weights";
      String KEY_ENTRY_NOISE = "Noise";
      String KEY_NOISE_MASK = "NoiseMask";
      String ERROR_COLORS_NOT_FOUND = "Could not find colors. Keyword: Colors";
      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";
      int DEFAULT_TINT_COLOR = 16711680;
   }

   class="kw">protected class="kw">static class DefaultTintContainerEntryJsonLoader class="kw">extends TintContainerJsonLoader.TintContainerEntryJsonLoader {
      class="kw">public DefaultTintContainerEntryJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3) {
         super(var1.append(".DefaultTintContainerEntry"), var2, var3);
      }

      @Nonnull
      class="kw">public TintContainer.DefaultTintContainerEntry load() {
         IWeightedMap var1;
         if (this.json == null || this.json.isJsonNull()) {
            WeightedMap.Builder var3 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
            var3.put(16711680, 1.0);
            var1 = var3.build();
         } else if (this.json.isJsonPrimitive()) {
            WeightedMap.Builder var2 = WeightedMap.builder(ArrayUtil.EMPTY_INTEGER_ARRAY);
            var2.put(ColorUtil.hexString(this.json.getAsString()), 1.0);
            var1 = var2.build();
         } else {
            var1 = this.loadColorMapping();
         }

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

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

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

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

            JsonElement var2 = this.get("Colors");
            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++) {
                  int var6 = ColorUtil.hexString(var3.get(var5).getAsString());
                  double var7 = var4 == null ? 1.0 : var4.get(var5).getAsDouble();
                  var1.put(var6, var7);
               }
            } else {
               int var9 = ColorUtil.hexString(var2.getAsString());
               var1.put(var9, 1.0);
            }
         } else {
            var1.put(ColorUtil.hexString(this.json.getAsString()), 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();
      }
   }
}