Constants interface

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

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

Поля (6)

МодификаторыТипИмя
int BIOME_SEARCH_DEPTH
String ERROR_LIST_FILES
String ERROR_ZONE_VALIDATION
String IDENTIFIER_DISABLE
String INFO_ZONE_IS_DISABLED
int ZONE_SEARCH_DEPTH

Исходный код

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