BlockyAnimation class

Пакет: com.hypixel.hytale.server.core.asset.common

Файл: com/hypixel/hytale/server/core/asset/common/BlockyAnimationCache.java

Поля (3)

МодификаторыТипИмя
public static final BuilderCodec<BlockyAnimationCache.BlockyAnimation> CODEC
public static final double FRAMES_PER_SECOND
private int duration

Методы (4)

МодификаторыВозвратСигнатура
public int getDurationFramespublic int getDurationFrames()
public double getDurationMillispublic double getDurationMillis()
public double getDurationSecondspublic double getDurationSeconds()
public String toStringpublic String toString()

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.asset.common;

class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.ExtraInfo;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.util.RawJsonReader;
class="kw">import com.hypixel.hytale.common.util.CompletableFutureUtil;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.sneakythrow.SneakyThrow;
class="kw">import java.io.IOException;
class="kw">import java.nio.charset.StandardCharsets;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BlockyAnimationCache {
   class="kw">public class="kw">static class="kw">final HytaleLogger LOGGER = HytaleLogger.forEnclosingClass();
   class="kw">private class="kw">static class="kw">final Map<String, BlockyAnimationCache.BlockyAnimation> animations = new ConcurrentHashMap<>();

   class="kw">public BlockyAnimationCache() {
   }

   @Nonnull
   class="kw">public class="kw">static CompletableFuture<BlockyAnimationCache.BlockyAnimation> get(String var0) {
      BlockyAnimationCache.BlockyAnimation var1 = animations.get(var0);
      if (var1 != null) {
         class="kw">return CompletableFuture.completedFuture(var1);
      }

      CommonAsset var2 = CommonAssetRegistry.getByName(var0);
      class="kw">return var2 == null ? CompletableFuture.completedFuture(null) : get0(var2);
   }

   @Nonnull
   class="kw">public class="kw">static CompletableFuture<BlockyAnimationCache.BlockyAnimation> get(@Nonnull CommonAsset var0) {
      BlockyAnimationCache.BlockyAnimation var1 = animations.get(var0.getName());
      class="kw">return var1 != null ? CompletableFuture.completedFuture(var1) : get0(var0);
   }

   @Nullable
   class="kw">public class="kw">static BlockyAnimationCache.BlockyAnimation getNow(String var0) {
      BlockyAnimationCache.BlockyAnimation var1 = animations.get(var0);
      if (var1 != null) {
         class="kw">return var1;
      }

      CommonAsset var2 = CommonAssetRegistry.getByName(var0);
      class="kw">return var2 == null ? null : get0(var2).join();
   }

   class="kw">public class="kw">static BlockyAnimationCache.BlockyAnimation getNow(@Nonnull CommonAsset var0) {
      BlockyAnimationCache.BlockyAnimation var1 = animations.get(var0.getName());
      class="kw">return var1 != null ? var1 : get0(var0).join();
   }

   @Nonnull
   class="kw">private class="kw">static CompletableFuture<BlockyAnimationCache.BlockyAnimation> get0(@Nonnull CommonAsset var0) {
      String var1 = var0.getName();
      class="kw">return CompletableFutureUtil._catch(var0.getBlob().thenApply(var1x -> {
         String var2 = new String(var1x, StandardCharsets.UTF_8);
         RawJsonReader var3 = RawJsonReader.fromJsonString(var2);

         try {
            ExtraInfo var4 = ExtraInfo.THREAD_LOCAL.get();
            BlockyAnimationCache.BlockyAnimation var5 = BlockyAnimationCache.BlockyAnimation.CODEC.decodeJson(var3, var4);
            var4.getValidationResults().logOrThrowValidatorExceptions(LOGGER);
            animations.put(var1, var5);
            class="kw">return var5;
         } catch (IOException var6) {
            throw SneakyThrow.sneakyThrow(var6);
         }
      }));
   }

   class="kw">public class="kw">static void invalidate(String var0) {
      animations.remove(var0);
   }

   class="kw">public class="kw">static class BlockyAnimation {
      class="kw">public class="kw">static class="kw">final BuilderCodec<BlockyAnimationCache.BlockyAnimation> CODEC = BuilderCodec.builder(
            BlockyAnimationCache.BlockyAnimation.class, BlockyAnimationCache.BlockyAnimation::new
         )
         .addField(new KeyedCodec<>("duration", Codec.INTEGER, true, true), (var0, var1) -> var0.duration = var1, var0 -> var0.duration)
         .build();
      class="kw">public class="kw">static class="kw">final double FRAMES_PER_SECOND = 60.0;
      class="kw">private int duration;

      class="kw">public BlockyAnimation() {
      }

      class="kw">public int getDurationFrames() {
         class="kw">return this.duration;
      }

      class="kw">public double getDurationMillis() {
         class="kw">return this.duration * 1000.0 / 60.0;
      }

      class="kw">public double getDurationSeconds() {
         class="kw">return this.duration / 60.0;
      }

      @Nonnull
      @Override
      class="kw">public String toString() {
         class="kw">return "BlockyAnimation{duration=" + this.duration + "}";
      }
   }
}