Constants interface

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

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

Поля (7)

МодификаторыТипИмя
String KEY_CONFIG
String KEY_ENTRIES
String KEY_ENTRY_NAME
String KEY_PREFAB
String KEY_WEIGHTS
String NO_NAME
String SEED_INDEX_SUFFIX

Исходный код

Показать/скрыть
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.common.map.IWeightedMap;
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.container.UniquePrefabContainer;
class="kw">import com.hypixel.hytale.server.worldgen.loader.WorldGenPrefabSupplier;
class="kw">import com.hypixel.hytale.server.worldgen.loader.context.ZoneFileContext;
class="kw">import com.hypixel.hytale.server.worldgen.loader.prefab.WeightedPrefabMapJsonLoader;
class="kw">import com.hypixel.hytale.server.worldgen.loader.prefab.unique.UniquePrefabConfigurationJsonLoader;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.PrefabCategory;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.unique.UniquePrefabConfiguration;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.unique.UniquePrefabGenerator;
class="kw">import com.hypixel.hytale.server.worldgen.util.LogUtil;
class="kw">import java.nio.file.Path;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class UniquePrefabContainerJsonLoader class="kw">extends JsonLoader<SeedStringResource, UniquePrefabContainer> {
   class="kw">public class="kw">static class="kw">final UniquePrefabGenerator[] EMPTY_GENERATORS = new UniquePrefabGenerator[0];
   class="kw">protected class="kw">final ZoneFileContext zoneContext;

   class="kw">public UniquePrefabContainerJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, ZoneFileContext var4) {
      super(var1.append(".UniquePrefabContainer"), var2, var3);
      this.zoneContext = var4;
   }

   @Nonnull
   class="kw">public UniquePrefabContainer load() {
      UniquePrefabGenerator[] var1;
      if (this.json != null && !this.json.isJsonNull()) {
         JsonArray var2 = this.get("Entries").getAsJsonArray();
         var1 = new UniquePrefabGenerator[var2.size()];

         for (int var3 = 0; var3 < var2.size(); var3++) {
            var1[var3] = new UniquePrefabContainerJsonLoader.UniquePrefabGeneratorJsonLoader(
                  this.seed.append(String.format("-%s", var3)), this.dataFolder, var2.get(var3), this.zoneContext
               )
               .load();
         }
      } else {
         var1 = EMPTY_GENERATORS;
      }

      class="kw">return new UniquePrefabContainer(this.seed.hashCode(), var1);
   }

   class="kw">public class="kw">interface Constants {
      String KEY_ENTRIES = "Entries";
      String KEY_CONFIG = "Config";
      String KEY_PREFAB = "Prefab";
      String KEY_WEIGHTS = "Weights";
      String KEY_ENTRY_NAME = "Name";
      String NO_NAME = "NO_NAME_GIVEN";
      String SEED_INDEX_SUFFIX = "-%s";
   }

   class="kw">protected class="kw">static class UniquePrefabGeneratorJsonLoader class="kw">extends JsonLoader<SeedStringResource, UniquePrefabGenerator> {
      class="kw">protected class="kw">final ZoneFileContext zoneContext;

      class="kw">public UniquePrefabGeneratorJsonLoader(@Nonnull SeedString<SeedStringResource> var1, Path var2, JsonElement var3, ZoneFileContext var4) {
         super(var1.append(".UniquePrefabGenerator"), var2, var3);
         this.zoneContext = var4;
      }

      @Nonnull
      class="kw">public UniquePrefabGenerator load() {
         class="kw">return new UniquePrefabGenerator(this.loadName(), this.loadCategory(), this.loadPrefabs(), this.loadConfiguration(), this.zoneContext.getId());
      }

      class="kw">public String loadName() {
         String var1 = "NO_NAME_GIVEN";
         if (this.has("Name")) {
            var1 = this.get("Name").getAsString();
         }

         class="kw">return var1;
      }

      class="kw">protected PrefabCategory loadCategory() {
         String var1 = this.mustGetString("Category", "");
         if (var1.isEmpty()) {
            class="kw">return PrefabCategory.UNIQUE;
         } else if (!this.zoneContext.getParentContext().getPrefabCategories().contains(var1)) {
            LogUtil.getLogger().at(Level.WARNING).log("Could not find prefab category: %s, defaulting to None", var1);
            class="kw">return PrefabCategory.UNIQUE;
         } else {
            class="kw">return this.zoneContext.getParentContext().getPrefabCategories().get(var1);
         }
      }

      @Nonnull
      class="kw">public UniquePrefabConfiguration loadConfiguration() {
         class="kw">return new UniquePrefabConfigurationJsonLoader(this.seed, this.dataFolder, this.get("Config"), this.zoneContext).load();
      }

      @Nullable
      class="kw">public IWeightedMap<WorldGenPrefabSupplier> loadPrefabs() {
         class="kw">return new WeightedPrefabMapJsonLoader(this.seed, this.dataFolder, this.json, "Prefab", "Weights").load();
      }
   }
}