From 552a3016029c0acd903498944edd23cd05e6aeb5 Mon Sep 17 00:00:00 2001 From: Oliver Date: Thu, 17 Apr 2025 21:22:32 +0200 Subject: [PATCH] fn: Add interface for skin generation queues --- .../main/java/de/oliver/fancynpcs/FancyNpcs.java | 4 +++- .../fancynpcs/skins/SkinGenerationQueue.java | 12 ++++++++++++ .../de/oliver/fancynpcs/skins/SkinManagerImpl.java | 14 +++++++++----- .../fancynpcs/skins/mineskin/MineSkinQueue.java | 3 ++- .../oliver/fancynpcs/skins/mojang/MojangQueue.java | 3 ++- .../fancynpcs/tests/api/SkinManagerTest.java | 4 +++- 6 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java index f4cfbecf..089748ed 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/FancyNpcs.java @@ -35,6 +35,8 @@ import de.oliver.fancynpcs.skins.SkinManagerImpl; import de.oliver.fancynpcs.skins.SkinUtils; import de.oliver.fancynpcs.skins.cache.SkinCacheFile; import de.oliver.fancynpcs.skins.cache.SkinCacheMemory; +import de.oliver.fancynpcs.skins.mineskin.MineSkinQueue; +import de.oliver.fancynpcs.skins.mojang.MojangQueue; import de.oliver.fancynpcs.tests.PlaceholderApiEnv; import de.oliver.fancynpcs.tracker.TurnToPlayerTracker; import de.oliver.fancynpcs.tracker.VisibilityTracker; @@ -209,7 +211,7 @@ public class FancyNpcs extends JavaPlugin implements FancyNpcsPlugin { actionManager.registerAction(new NeedPermissionAction()); actionManager.registerAction(new PlaySoundAction()); - skinManager = new SkinManagerImpl(new SkinCacheFile(), new SkinCacheMemory()); + skinManager = new SkinManagerImpl(new SkinCacheFile(), new SkinCacheMemory(), MojangQueue.get(), MineSkinQueue.get()); OldSkinCacheMigrator.migrate(); textConfig = new TextConfig("#E33239", "#AD1D23", "#81E366", "#E3CA66", "#E36666", ""); diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java new file mode 100644 index 00000000..61cae6fd --- /dev/null +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java @@ -0,0 +1,12 @@ +package de.oliver.fancynpcs.skins; + +import java.util.concurrent.ScheduledFuture; + +public interface SkinGenerationQueue { + + void run(); + + void add(R request); + + ScheduledFuture getScheduler(); +} diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinManagerImpl.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinManagerImpl.java index 34e44608..7cb718af 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinManagerImpl.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinManagerImpl.java @@ -37,10 +37,14 @@ public class SkinManagerImpl implements SkinManager, Listener { private final SkinCache fileCache; private final SkinCache memCache; + private final SkinGenerationQueue mojangQueue; + private final SkinGenerationQueue mineSkinQueue; - public SkinManagerImpl(SkinCache fileCache, SkinCache memCache) { + public SkinManagerImpl(SkinCache fileCache, SkinCache memCache, SkinGenerationQueue mojangQueue, SkinGenerationQueue mineSkinQueue) { this.fileCache = fileCache; this.memCache = memCache; + this.mojangQueue = mojangQueue; + this.mineSkinQueue = mineSkinQueue; File skinsDir = new File(SKINS_DIRECTORY); if (!skinsDir.exists()) { @@ -82,11 +86,11 @@ public class SkinManagerImpl implements SkinManager, Listener { return cached; } - MojangQueue.get().add(new MojangQueue.SkinRequest(uuid.toString(), variant)); + mojangQueue.add(new MojangQueue.SkinRequest(uuid.toString(), variant)); // GenerateRequest genReq = GenerateRequest.user(uuid); // genReq.variant(Variant.valueOf(variant.name())); -// MineSkinQueue.get().add(new MineSkinQueue.SkinRequest(uuid.toString(), genReq)); +// mineSkinQueue.add(new MineSkinQueue.SkinRequest(uuid.toString(), genReq)); return new SkinData(uuid.toString(), variant); } @@ -120,7 +124,7 @@ public class SkinManagerImpl implements SkinManager, Listener { throw new SkinLoadException(SkinLoadException.Reason.INVALID_URL, "(URL = '" + url + "')"); } genReq.variant(Variant.valueOf(variant.name())); - MineSkinQueue.get().add(new MineSkinQueue.SkinRequest(url, genReq)); + mineSkinQueue.add(new MineSkinQueue.SkinRequest(url, genReq)); return new SkinData(url, variant); } @@ -138,7 +142,7 @@ public class SkinManagerImpl implements SkinManager, Listener { GenerateRequest genReq = GenerateRequest.upload(file); genReq.variant(Variant.valueOf(variant.name())); - MineSkinQueue.get().add(new MineSkinQueue.SkinRequest(filePath, genReq)); + mineSkinQueue.add(new MineSkinQueue.SkinRequest(filePath, genReq)); return new SkinData(filePath, variant); } diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mineskin/MineSkinQueue.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mineskin/MineSkinQueue.java index 7594f58f..553c997c 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mineskin/MineSkinQueue.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mineskin/MineSkinQueue.java @@ -3,6 +3,7 @@ package de.oliver.fancynpcs.skins.mineskin; import de.oliver.fancynpcs.FancyNpcs; import de.oliver.fancynpcs.api.skins.SkinData; import de.oliver.fancynpcs.api.skins.SkinGeneratedEvent; +import de.oliver.fancynpcs.skins.SkinGenerationQueue; import de.oliver.fancynpcs.skins.SkinManagerImpl; import org.mineskin.data.SkinInfo; import org.mineskin.data.Variant; @@ -13,7 +14,7 @@ import java.util.Queue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class MineSkinQueue { +public class MineSkinQueue implements SkinGenerationQueue { private static MineSkinQueue INSTANCE; private final MineSkinAPI api; diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mojang/MojangQueue.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mojang/MojangQueue.java index 4b6e5981..11cfee4c 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mojang/MojangQueue.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/mojang/MojangQueue.java @@ -3,6 +3,7 @@ package de.oliver.fancynpcs.skins.mojang; import de.oliver.fancynpcs.FancyNpcs; import de.oliver.fancynpcs.api.skins.SkinData; import de.oliver.fancynpcs.api.skins.SkinGeneratedEvent; +import de.oliver.fancynpcs.skins.SkinGenerationQueue; import de.oliver.fancynpcs.skins.SkinManagerImpl; import de.oliver.fancynpcs.skins.mineskin.RatelimitException; @@ -11,7 +12,7 @@ import java.util.Queue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class MojangQueue { +public class MojangQueue implements SkinGenerationQueue { private static MojangQueue INSTANCE; diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/tests/api/SkinManagerTest.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/tests/api/SkinManagerTest.java index f7feb9a0..e796b429 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/tests/api/SkinManagerTest.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/tests/api/SkinManagerTest.java @@ -4,6 +4,8 @@ import de.oliver.fancynpcs.FancyNpcs; import de.oliver.fancynpcs.api.skins.SkinData; import de.oliver.fancynpcs.skins.SkinManagerImpl; import de.oliver.fancynpcs.skins.cache.SkinCacheMemory; +import de.oliver.fancynpcs.skins.mineskin.MineSkinQueue; +import de.oliver.fancynpcs.skins.mojang.MojangQueue; import de.oliver.plugintests.annotations.FPBeforeEach; import de.oliver.plugintests.annotations.FPTest; import org.bukkit.entity.Player; @@ -19,7 +21,7 @@ public class SkinManagerTest { @FPBeforeEach public void setUp(Player player) { - skinFetcher = new SkinManagerImpl(new SkinCacheMemory(), new SkinCacheMemory()); + skinFetcher = new SkinManagerImpl(new SkinCacheMemory(), new SkinCacheMemory(), MojangQueue.get(), MineSkinQueue.get()); } @FPTest(name = "Test fetch skin by UUID")