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);
}
}