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