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!";
}
}