FileContextLoader class

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

Файл: com/hypixel/hytale/server/worldgen/loader/context/FileContextLoader.java

Поля (24)

МодификаторыТипИмя
int BIOME_SEARCH_DEPTH
String ERROR_LIST_FILES
String ERROR_ZONE_VALIDATION
String IDENTIFIER_DISABLE
String INFO_ZONE_IS_DISABLED
final Comparator<AssetPath> ZONES_ORDER
int ZONE_SEARCH_DEPTH
FileLoadingContext var1
String var1
String var1
Path var2
AssetPath var2
String var2
List var3
JsonObject var3
ZoneFileContext var3
int var3
List var4
int var4
String var6
ZoneFileContext var7
BiomeFileContext.Type var7
String var8
BiomeFileContext var9

Методы (11)

МодификаторыВозвратСигнатура
abstract throw new Errorthrow new Error("Failed to validate zones!", var8)
abstract throw new Errorthrow new Error("Failed to open Categories.json", var4)
for for(AssetPath var5 : var3)
for for(AssetPath var6 : var4)
for for(String var3 : var1)
static boolean isValidBiomeFileboolean isValidBiomeFile(@Nonnull AssetPath var0)
static boolean isValidZoneFileboolean isValidZoneFile(@Nonnull AssetPath var0)
static void loadPrefabCategoriesvoid loadPrefabCategories(@Nonnull Path var0, @Nonnull FileLoadingContext var1)
abstract loadPrefabCategories loadPrefabCategories(this.dataFolder, var1)
static void validateZonesvoid validateZones(@Nonnull FileLoadingContext var0, @Nonnull Set<String> var1)
abstract validateZones validateZones(var1, this.zoneRequirement)

Исходный код

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

class="kw">import com.google.gson.JsonObject;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.procedurallib.file.AssetPath;
class="kw">import com.hypixel.hytale.procedurallib.file.FileIO;
class="kw">import com.hypixel.hytale.procedurallib.json.JsonLoader;
class="kw">import com.hypixel.hytale.server.worldgen.prefab.PrefabCategory;
class="kw">import java.io.IOException;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.function.Predicate;
class="kw">import java.util.function.UnaryOperator;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;

class="kw">public class FileContextLoader {
   class="kw">private class="kw">static class="kw">final Comparator<AssetPath> ZONES_ORDER = AssetPath.COMPARATOR;
   class="kw">private class="kw">static class="kw">final Comparator<AssetPath> BIOME_ORDER = Comparator.comparing(BiomeFileContext::getBiomeType).thenComparing(AssetPath.COMPARATOR);
   class="kw">private class="kw">static class="kw">final UnaryOperator<AssetPath> DISABLED_FILE = FileContextLoader::getDisabledFilePath;
   class="kw">private class="kw">static class="kw">final Predicate<AssetPath> ZONE_FILE_MATCHER = FileContextLoader::isValidZoneFile;
   class="kw">private class="kw">static class="kw">final Predicate<AssetPath> BIOME_FILE_MATCHER = FileContextLoader::isValidBiomeFile;
   class="kw">private class="kw">final String name;
   class="kw">private class="kw">final Path dataFolder;
   class="kw">private class="kw">final Set<String> zoneRequirement;

   class="kw">public FileContextLoader(String var1, Path var2, Set<String> var3) {
      this.name = var1;
      this.dataFolder = var2;
      this.zoneRequirement = var3;
   }

   @Nonnull
   class="kw">public FileLoadingContext load() {
      FileLoadingContext var1 = new FileLoadingContext(this.name, this.dataFolder);
      Path var2 = this.dataFolder.resolve("Zones");

      try {
         List var3 = FileIO.list(var2, ZONE_FILE_MATCHER, DISABLED_FILE);
         var3.sort(ZONES_ORDER);

         for (AssetPath var5 : var3) {
            String var6 = var5.getFileName();
            if (this.zoneRequirement.contains(var6)) {
               ZoneFileContext var7 = loadZoneContext(var6, var5.filepath(), var1);
               var1.getZones().register(var6, var7);
            }
         }
      } catch (IOException var9) {
         ((HytaleLogger.Api)HytaleLogger.getLogger().at(Level.SEVERE).withCause(var9)).log("Failed to load zones");
      }

      try {
         validateZones(var1, this.zoneRequirement);
      } catch (Error var8) {
         throw new Error("Failed to validate zones!", var8);
      }

      loadPrefabCategories(this.dataFolder, var1);
      class="kw">return var1;
   }

   class="kw">protected class="kw">static void loadPrefabCategories(@Nonnull Path var0, @Nonnull FileLoadingContext var1) {
      AssetPath var2 = FileIO.resolve(var0.resolve("PrefabCategories.json"));
      if (FileIO.exists(var2)) {
         try {
            JsonObject var3 = FileIO.load(var2, JsonLoader.JSON_OBJ_LOADER);
            PrefabCategory.parse(var3, var1.getPrefabCategories()::register);
         } catch (IOException var4) {
            throw new Error("Failed to open Categories.json", var4);
         }
      }
   }

   @Nonnull
   class="kw">protected class="kw">static ZoneFileContext loadZoneContext(String var0, @Nonnull Path var1, @Nonnull FileLoadingContext var2) {
      try {
         ZoneFileContext var3 = var2.createZone(var0, var1);
         List var4 = FileIO.list(var1, BIOME_FILE_MATCHER, DISABLED_FILE);
         var4.sort(BIOME_ORDER);

         for (AssetPath var6 : var4) {
            BiomeFileContext.Type var7 = BiomeFileContext.getBiomeType(var6);
            String var8 = parseName(var6, var7);
            BiomeFileContext var9 = var3.createBiome(var8, var6.filepath(), var7);
            var3.getBiomes(var7).register(var8, var9);
         }

         class="kw">return var3;
      } catch (IOException var10) {
         throw new Error(String.format("Failed to list files in: %s", var1), var10);
      }
   }

   @Nonnull
   class="kw">protected class="kw">static AssetPath getDisabledFilePath(@Nonnull AssetPath var0) {
      String var1 = var0.getFileName();
      class="kw">return var1.startsWith("!") ? var0.rename(var1.substring(1)) : var0;
   }

   class="kw">protected class="kw">static boolean isValidZoneFile(@Nonnull AssetPath var0) {
      class="kw">return Files.isDirectory(var0.filepath()) && Files.exists(var0.filepath().resolve("Zone.json"));
   }

   class="kw">protected class="kw">static boolean isValidBiomeFile(@Nonnull AssetPath var0) {
      if (Files.isDirectory(var0.filepath())) {
         class="kw">return false;
      }

      String var1 = var0.getFileName();

      for (BiomeFileContext.Type var5 : BiomeFileContext.Type.values()) {
         if (var1.endsWith(var5.getSuffix()) && var1.startsWith(var5.getPrefix())) {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   class="kw">protected class="kw">static void validateZones(@Nonnull FileLoadingContext var0, @Nonnull Set<String> var1) class="kw">throws Error {
      for (String var3 : var1) {
         var0.getZones().get(var3);
      }
   }

   @Nonnull
   class="kw">private class="kw">static String parseName(@Nonnull AssetPath var0, @Nonnull BiomeFileContext.Type var1) {
      String var2 = var0.getFileName();
      int var3 = var1.getPrefix().length();
      int var4 = var2.length() - var1.getSuffix().length();
      class="kw">return var2.substring(var3, var4);
   }

   class="kw">public class="kw">interface Constants {
      int ZONE_SEARCH_DEPTH = 1;
      int BIOME_SEARCH_DEPTH = 1;
      String IDENTIFIER_DISABLE = "!";
      String INFO_ZONE_IS_DISABLED = "Zone \"%s\" is disabled. Remove \"!\" from folder name to enable it.";
      String ERROR_LIST_FILES = "Failed to list files in: %s";
      String ERROR_ZONE_VALIDATION = "Failed to validate zones!";
   }
}