Constants interface

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

Файл: com/hypixel/hytale/server/worldgen/loader/prefab/WeightedPrefabMapJsonLoader.java

Поля (3)

МодификаторыТипИмя
String ERROR_ENTRY_NO_PREFAB
String ERROR_ENTRY_WEIGHT_SIZE
String ERROR_NO_PREFABS

Исходный код

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

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.JsonLoader;
class="kw">import com.hypixel.hytale.procedurallib.json.SeedString;
class="kw">import com.hypixel.hytale.server.worldgen.SeedStringResource;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabLoader;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
class="kw">import java.nio.file.Path;
class="kw">import javax.annotation.Nonnull;

class="kw">public class WeightedPrefabMapJsonLoader class="kw">extends JsonLoader<SeedStringResource, IWeightedMap<WorldGenPrefabSupplier>> {
   class="kw">protected class="kw">final String prefabsKey;
   class="kw">protected class="kw">final String weightsKey;

   class="kw">public WeightedPrefabMapJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, String var4, String var5) {
      super(var1.append(".WeightedPrefabMap"), var2, var3);
      this.prefabsKey = var4;
      this.weightsKey = var5;
   }

   class="kw">public IWeightedMap<WorldGenPrefabSupplier> load() {
      WorldGenPrefabLoader var1 = this.seed.get().getLoader();
      WeightedMap.Builder var2 = WeightedMap.builder(WorldGenPrefabSupplier.EMPTY_ARRAY);
      if (!this.has(this.prefabsKey)) {
         throw new IllegalArgumentException(this.prefabsKey);
      }

      JsonElement var3 = this.get(this.prefabsKey);
      if (var3.isJsonArray()) {
         JsonArray var4 = var3.getAsJsonArray();
         JsonArray var5 = this.has(this.weightsKey) ? this.get(this.weightsKey).getAsJsonArray() : null;
         if (var5 != null && var4.size() != var5.size()) {
            throw new IllegalArgumentException("Weight array size is different from prefab name array.");
         }

         for (int var6 = 0; var6 < var4.size(); var6++) {
            JsonElement var7 = var4.get(var6);
            String var8 = var7.getAsString();
            WorldGenPrefabSupplier[] var9 = var1.get(var8);
            double var10 = var5 != null ? var5.get(var6).getAsDouble() / var9.length : 1.0;

            for (WorldGenPrefabSupplier var15 : var9) {
               var2.put(var15, var10);
            }
         }
      } else {
         String var16 = var3.getAsString();
         WorldGenPrefabSupplier[] var17 = var1.get(var16);

         for (WorldGenPrefabSupplier var21 : var17) {
            var2.put(var21, 1.0);
         }
      }

      if (var2.size() <= 0) {
         throw new IllegalArgumentException("Prefabs are defined but could not find a valid entry!");
      } else {
         class="kw">return var2.build();
      }
   }

   class="kw">public class="kw">interface Constants {
      String ERROR_ENTRY_NO_PREFAB = "Could not find prefab names. Keyword: %s";
      String ERROR_ENTRY_WEIGHT_SIZE = "Weight array size is different from prefab name array.";
      String ERROR_NO_PREFABS = "Prefabs are defined but could not find a valid entry!";
   }
}