diff --git a/src/main/java/org/saturnclient/cosmetics/Cloaks.java b/src/main/java/org/saturnclient/cosmetics/Cloaks.java index 177c866..9aa5fc0 100644 --- a/src/main/java/org/saturnclient/cosmetics/Cloaks.java +++ b/src/main/java/org/saturnclient/cosmetics/Cloaks.java @@ -157,37 +157,7 @@ public class Cloaks { public static IdentifierRef getCurrentCloakTexture(String cloakName) { if (Arrays.asList(ANIMATED_CLOAKS).contains(cloakName)) { - List frames = animatedCloaks.get(cloakName); - if (frames == null || frames.isEmpty()) { - return null; - } - - long currentTime = System.currentTimeMillis(); - long lastTime = lastFrameTime.getOrDefault(cloakName, currentTime); - int currentFrame = 0; - - long elapsedTime = currentTime - lastTime; - long totalTime = 0; - for (int i = 0; i < frames.size(); i++) { - totalTime += frames.get(i).getDelayMs(); - if (elapsedTime < totalTime) { - currentFrame = i; - break; - } - } - - if (elapsedTime >= totalTime) { - lastFrameTime.put(cloakName, currentTime); - currentFrame = 0; - } - - IdentifierRef identifier = frames.get(currentFrame).getTextureId(); - - if (identifier == null) { - return IdentifierRef.ofSaturn("textures/cloaks/" + cloakName + ".png"); - } - - return identifier; + return IdentifierRef.ofSaturn("textures/cloaks/" + cloakName + ".gif"); } else { return IdentifierRef.ofSaturn("textures/cloaks/" + cloakName + ".png"); } diff --git a/src/main/java/org/saturnclient/cosmetics/utils/GifUtils.java b/src/main/java/org/saturnclient/cosmetics/utils/GifUtils.java index 527d1ad..3335b3e 100644 --- a/src/main/java/org/saturnclient/cosmetics/utils/GifUtils.java +++ b/src/main/java/org/saturnclient/cosmetics/utils/GifUtils.java @@ -4,6 +4,7 @@ import java.io.InputStream; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Queue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentLinkedQueue; @@ -13,7 +14,7 @@ import org.saturnclient.common.provider.Providers; import org.saturnclient.common.ref.asset.IdentifierRef; public class GifUtils { - public static Map loadedCache = new ConcurrentHashMap<>(); + public static Map> loadedCache = new ConcurrentHashMap<>(); private static final Queue QUEUE = new ConcurrentLinkedQueue<>(); private static volatile boolean RUNNING = false; @@ -23,16 +24,18 @@ public class GifUtils { String g = gif.toString(); if (!loadedCache.containsKey(g)) { - loadedCache.put(g, null); + loadedCache.put(g, Optional.empty()); } - if (loadedCache.get(g) == null) { + Optional loadedData = loadedCache.get(g); + + if (loadedData.isEmpty()) { return IdentifierRef.of(g.replace(".gif", ".png")); } long now = System.currentTimeMillis(); - GifData data = loadedCache.get(g); + GifData data = loadedData.get(); long t = now % data.totalDuration; @@ -122,7 +125,7 @@ public class GifUtils { // Apply on main thread Providers.saturn.getClient().executeOnThread(() -> { - loadedCache.put(id.toString(), data); + loadedCache.put(id.toString(), Optional.of(data)); }); } catch (Exception e) {