AssetStoreTypeHandler class
Пакет: com.hypixel.hytale.builtin.asseteditor.assettypehandler
Файл: com/hypixel/hytale/builtin/asseteditor/assettypehandler/AssetStoreTypeHandler.java
extends: JsonTypeHandler
Поля (9)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
HytaleLogger |
LOGGER |
|
|
break |
|
|
break |
|
|
break |
|
|
break |
|
Schema |
var1 |
|
AssetUpdateQuery.RebuildCacheBuilder |
var2 |
|
Object |
var6 |
|
JsonAssetWithMap |
var7 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var5 != null) |
|
|
if if(this.cachedDefaultUpdateQuery == null) |
|
|
if if(var1 == null) |
|
|
switch switch(var6) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.asseteditor.assettypehandler;
class="kw">import com.hypixel.hytale.assetstore.AssetStore;
class="kw">import com.hypixel.hytale.assetstore.AssetUpdateQuery;
class="kw">import com.hypixel.hytale.assetstore.map.JsonAssetWithMap;
class="kw">import com.hypixel.hytale.builtin.asseteditor.AssetEditorPlugin;
class="kw">import com.hypixel.hytale.builtin.asseteditor.AssetPath;
class="kw">import com.hypixel.hytale.builtin.asseteditor.EditorClient;
class="kw">import com.hypixel.hytale.builtin.asseteditor.util.AssetPathUtil;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.metadata.ui.UIRebuildCaches;
class="kw">import com.hypixel.hytale.common.util.PathUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.logger.sentry.SkipSentryException;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorAssetType;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorEditorType;
class="kw">import com.hypixel.hytale.protocol.packets.asseteditor.AssetEditorPopupNotificationType;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import java.nio.file.Path;
class="kw">import java.util.Collections;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.bson.BsonDocument;
class="kw">public class AssetStoreTypeHandler class="kw">extends JsonTypeHandler {
class="kw">private class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
@Nonnull
class="kw">private class="kw">final AssetStore assetStore;
class="kw">public AssetStoreTypeHandler(@Nonnull AssetStore var1) {
super(
new AssetEditorAssetType(
var1.getAssetClass().getSimpleName(),
null,
false,
PathUtil.toUnixPathString(AssetPathUtil.PATH_DIR_SERVER.resolve(var1.getPath())),
var1.getExtension(),
AssetEditorEditorType.JsonConfig
)
);
this.assetStore = var1;
}
@Nonnull
class="kw">public AssetStore getAssetStore() {
class="kw">return this.assetStore;
}
@Nonnull
@Override
class="kw">public AssetTypeHandler.AssetLoadResult loadAssetFromDocument(AssetPath var1, Path var2, BsonDocument var3, AssetUpdateQuery var4, EditorClient var5) {
try {
Object var6 = this.assetStore.decodeFilePathKey(var1.path());
JsonAssetWithMap var7 = this.assetStore.decode(var1.packId(), var6, var3.clone());
this.assetStore.loadAssets(var1.packId(), Collections.singletonList(var7), var4, true);
} catch (Exception var8) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(new SkipSentryException(var8))).log("Failed to load asset: %s", var1);
if (var5 != null) {
var5.sendPopupNotification(
AssetEditorPopupNotificationType.Error,
Message.translation("server.assetEditor.messages.failedToDecodeAsset").param("message", var8.getMessage())
);
}
class="kw">return AssetTypeHandler.AssetLoadResult.ASSETS_UNCHANGED;
}
class="kw">return AssetTypeHandler.AssetLoadResult.ASSETS_CHANGED;
}
@Nonnull
@Override
class="kw">public AssetTypeHandler.AssetLoadResult unloadAsset(@Nonnull AssetPath var1, @Nonnull AssetUpdateQuery var2) {
this.assetStore.removeAssets(var1.packId(), true, Collections.singleton(this.assetStore.decodeFilePathKey(var1.path())), var2);
class="kw">return AssetTypeHandler.AssetLoadResult.ASSETS_CHANGED;
}
@Nonnull
@Override
class="kw">public AssetTypeHandler.AssetLoadResult restoreOriginalAsset(@Nonnull AssetPath var1, @Nonnull AssetUpdateQuery var2) {
try {
this.assetStore.loadAssetsFromPaths(var1.packId(), Collections.singletonList(var1.path()), var2, true);
} catch (Exception var4) {
((HytaleLogger.Api)LOGGER.at(Level.WARNING).withCause(new SkipSentryException(var4))).log("Failed to restore asset: %s", var1);
class="kw">return AssetTypeHandler.AssetLoadResult.ASSETS_UNCHANGED;
}
class="kw">return AssetTypeHandler.AssetLoadResult.ASSETS_CHANGED;
}
@Nonnull
@Override
class="kw">public AssetUpdateQuery getDefaultUpdateQuery() {
if (this.cachedDefaultUpdateQuery == null) {
Schema var1 = AssetEditorPlugin.get().getSchema(this.config.id + ".json");
if (var1 == null) {
class="kw">return AssetUpdateQuery.DEFAULT;
}
AssetUpdateQuery.RebuildCacheBuilder var2 = AssetUpdateQuery.RebuildCache.builder();
if (var1.getHytale().getUiRebuildCaches() != null) {
for (UIRebuildCaches.ClientCache var6 : var1.getHytale().getUiRebuildCaches()) {
class="kw">switch (var6) {
case MODELS:
var2.setModels(true);
break;
case MODEL_TEXTURES:
var2.setModelTextures(true);
break;
case ITEM_ICONS:
var2.setItemIcons(true);
break;
case BLOCK_TEXTURES:
var2.setBlockTextures(true);
break;
case MAP_GEOMETRY:
var2.setMapGeometry(true);
}
}
}
this.cachedDefaultUpdateQuery = new AssetUpdateQuery(var2.build());
}
class="kw">return this.cachedDefaultUpdateQuery;
}
}