UniquePrefabGeneratorJsonLoader class

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

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

extends: JsonLoader<SeedStringResource, UniquePrefabGenerator>

Поля (4)

МодификаторыТипИмя
String var1
var1
String var1
protected final ZoneFileContext zoneContext

Методы (5)

МодификаторыВозвратСигнатура
public UniquePrefabGenerator loadpublic UniquePrefabGenerator load()
protected PrefabCategory loadCategoryprotected PrefabCategory loadCategory()
public UniquePrefabConfiguration loadConfigurationpublic UniquePrefabConfiguration loadConfiguration()
public String loadNamepublic String loadName()
public IWeightedMap<WorldGenPrefabSupplier> loadPrefabspublic IWeightedMap<WorldGenPrefabSupplier> loadPrefabs()

Исходный код

Показать/скрыть
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();
      }
   }
}