AssetPackUtil interface

Пакет: com.hypixel.hytale.builtin.hytalegenerator.plugin.editor

Файл: com/hypixel/hytale/builtin/hytalegenerator/plugin/editor/AssetPackUtil.java

Поля (15)

МодификаторыТипИмя
String ASSET_STORE_TYPE
String var2
AssetModule var3
String var3
AssetPack var4
PluginManifest var4
AssetStore var4
String var4
Path var5
Path var5
Path var6
Path var6
BsonDocument var7
String var7
String var8

Методы (5)

МодификаторыВозвратСигнатура
static <T extends JsonAssetWithMap<String, M>, M extends AssetMap<String, T>> void exportAsset<T extends JsonAssetWithMap<String, M>, M extends AssetMap<String, T>> void exportAsset(@Nonnull AssetPack var0, @Nonnull String var1, @Nonnull BsonDocument var2, @Nonnull Class<T> var3)
static Path getStorePathPath getStorePath(@Nonnull Path var0, @Nonnull String var1, @Nonnull AssetStore<?, ?, ?> var2)
if if(var5 == null)
if if(var4 == null)
if if(var6 == null)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.plugin.editor;

class="kw">import com.hypixel.hytale.assetstore.AssetMap;
class="kw">import com.hypixel.hytale.assetstore.AssetPack;
class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.common.plugin.PluginManifest;
class="kw">import com.hypixel.hytale.common.semver.Semver;
class="kw">import com.hypixel.hytale.common.semver.SemverRange;
class="kw">import com.hypixel.hytale.common.util.PathUtil;
class="kw">import com.hypixel.hytale.server.core.asset.AssetModule;
class="kw">import com.hypixel.hytale.server.core.plugin.PluginManager;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import java.io.IOException;
class="kw">import java.nio.file.Files;
class="kw">import java.nio.file.Path;
class="kw">import java.nio.file.StandardOpenOption;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">import org.bson.json.JsonWriterSettings;

class="kw">public class="kw">interface AssetPackUtil {
   String ASSET_STORE_TYPE = "Server";
   String INSTANCES_PATH = "Instances";
   Semver DEFAULT_VERSION = new Semver(1L, 0L, 0L);
   JsonWriterSettings JSON_SETTINGS = JsonWriterSettings.builder().indent(true).build();

   @Nonnull
   class="kw">static CompletableFuture<AssetPack> getOrCreatePack(@Nonnull String var0, @Nonnull String var1) {
      String var2 = var0 + ":" + var1;
      AssetModule var3 = AssetModule.get();
      AssetPack var4 = var3.getAssetPack(var2);
      class="kw">return var4 != null
         ? CompletableFuture.completedFuture(var4)
         : CompletableFuture.supplyAsync(
            SneakyThrow.sneakySupplier(
               () -> {
                  PluginManifest var4 = new PluginManifest(
                     var0, var1, DEFAULT_VERSION, null, List.of(), null, null, SemverRange.WILDCARD, Map.of(), Map.of(), Map.of(), List.of(), false
                  );
                  Path var5 = PathUtil.resolveName(PluginManager.MODS_PATH, var0 + "." + var1);
                  if (var5 == null) {
                     throw new IOException(String.format("AssetPack path '%s' is not a child of mods path '%s'", var0 + "." + var1, PluginManager.MODS_PATH));
                  }

                  Path var6 = var5.resolve("manifest.json");
                  if (!Files.exists(var5)) {
                     Files.createDirectories(var5);
                  }

                  if (!Files.exists(var6)) {
                     BsonDocument var7 = PluginManifest.CODEC.encode(var4, new ExtraInfo()).asDocument();
                     String var8 = var7.toJson(JSON_SETTINGS);
                     Files.writeString(var6, var8);
                  }

                  var3.registerPack(var2, var5, var4, AssetPack.PackSource.RUNTIME);
                  class="kw">return Objects.requireNonNull(var3.getAssetPack(var2));
               }
            )
         );
   }

   class="kw">static <T class="kw">extends JsonAssetWithMap<String, M>, M class="kw">extends AssetMap<String, T>> void exportAsset(
      @Nonnull AssetPack var0, @Nonnull String var1, @Nonnull BsonDocument var2, @Nonnull Class<T> var3
   ) class="kw">throws IOException {
      if (var0.isImmutable()) {
         throw new IOException(String.format("Cannot write asset to immutable AssetPack: %s", var0.getName()));
      }

      AssetStore var4 = AssetRegistry.getAssetStore(var3);
      if (var4 == null) {
         throw new IllegalArgumentException(String.format("AssetStore not found for type '%s'", var3.getName()));
      }

      Path var5 = getStorePath(var0.getRoot(), "Server", var4);
      Path var6 = PathUtil.resolvePathWithinDir(var5, var1 + var4.getExtension());
      if (var6 == null) {
         throw new IOException(String.format("Asset path for '%s' is not within store path '%s'", var1, var5));
      }

      if (!Files.exists(var6)) {
         if (!Files.exists(var5)) {
            Files.createDirectories(var5);
            var4.addFileMonitor(var0.getName(), var5);
         }

         if (!Files.exists(var6.getParent())) {
            Files.createDirectories(var6.getParent());
         }

         String var7 = var2.toJson(JSON_SETTINGS);
         Files.writeString(var6, var7, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
         var4.loadAssetsFromPaths(var0.getName(), List.of(var6));
      }
   }

   class="kw">static Path getStorePath(@Nonnull Path var0, @Nonnull String var1, @Nonnull AssetStore<?, ?, ?> var2) {
      String var3 = var0.getFileSystem().getSeparator();
      String var4 = var2.getPath().replace("\\", var3).replace("/", var3);
      class="kw">return var0.resolve(var1).resolve(var4);
   }
}