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