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 index 61cae6fd..5be9fae9 100644 --- a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationQueue.java @@ -2,11 +2,13 @@ package de.oliver.fancynpcs.skins; import java.util.concurrent.ScheduledFuture; -public interface SkinGenerationQueue { +public interface SkinGenerationQueue { void run(); - void add(R request); + void add(SkinGenerationRequest request); + + void clear(); ScheduledFuture getScheduler(); } diff --git a/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationRequest.java b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationRequest.java new file mode 100644 index 00000000..7fa9b596 --- /dev/null +++ b/plugins/fancynpcs/src/main/java/de/oliver/fancynpcs/skins/SkinGenerationRequest.java @@ -0,0 +1,35 @@ +package de.oliver.fancynpcs.skins; + +import de.oliver.fancynpcs.api.skins.SkinData; +import org.mineskin.request.GenerateRequest; + +public class SkinGenerationRequest { + + private final String id; + private final SkinData.SkinVariant variant; + private final GenerateRequest mineskinRequest; + + public SkinGenerationRequest(String id, SkinData.SkinVariant variant, GenerateRequest mineskinRequest) { + this.id = id; + this.variant = variant; + this.mineskinRequest = mineskinRequest; + } + + public SkinGenerationRequest(String id, SkinData.SkinVariant variant) { + this.id = id; + this.variant = variant; + this.mineskinRequest = null; + } + + public String getID() { + return id; + } + + public SkinData.SkinVariant getVariant() { + return variant; + } + + public GenerateRequest getMineskinRequest() { + return mineskinRequest; + } +} 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 7cb718af..a92516cc 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 @@ -10,8 +10,6 @@ import de.oliver.fancynpcs.api.skins.SkinLoadException; import de.oliver.fancynpcs.api.skins.SkinManager; import de.oliver.fancynpcs.skins.cache.SkinCache; import de.oliver.fancynpcs.skins.cache.SkinCacheData; -import de.oliver.fancynpcs.skins.mineskin.MineSkinQueue; -import de.oliver.fancynpcs.skins.mojang.MojangQueue; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.lushplugins.chatcolorhandler.ChatColorHandler; @@ -37,10 +35,10 @@ public class SkinManagerImpl implements SkinManager, Listener { private final SkinCache fileCache; private final SkinCache memCache; - private final SkinGenerationQueue mojangQueue; - private final SkinGenerationQueue mineSkinQueue; + private final SkinGenerationQueue mojangQueue; + private final SkinGenerationQueue mineSkinQueue; - public SkinManagerImpl(SkinCache fileCache, SkinCache memCache, SkinGenerationQueue mojangQueue, SkinGenerationQueue mineSkinQueue) { + public SkinManagerImpl(SkinCache fileCache, SkinCache memCache, SkinGenerationQueue mojangQueue, SkinGenerationQueue mineSkinQueue) { this.fileCache = fileCache; this.memCache = memCache; this.mojangQueue = mojangQueue; @@ -86,7 +84,7 @@ public class SkinManagerImpl implements SkinManager, Listener { return cached; } - mojangQueue.add(new MojangQueue.SkinRequest(uuid.toString(), variant)); + mojangQueue.add(new SkinGenerationRequest(uuid.toString(), variant)); // GenerateRequest genReq = GenerateRequest.user(uuid); // genReq.variant(Variant.valueOf(variant.name())); @@ -124,7 +122,7 @@ public class SkinManagerImpl implements SkinManager, Listener { throw new SkinLoadException(SkinLoadException.Reason.INVALID_URL, "(URL = '" + url + "')"); } genReq.variant(Variant.valueOf(variant.name())); - mineSkinQueue.add(new MineSkinQueue.SkinRequest(url, genReq)); + mineSkinQueue.add(new SkinGenerationRequest(url, variant, genReq)); return new SkinData(url, variant); } @@ -142,7 +140,7 @@ public class SkinManagerImpl implements SkinManager, Listener { GenerateRequest genReq = GenerateRequest.upload(file); genReq.variant(Variant.valueOf(variant.name())); - mineSkinQueue.add(new MineSkinQueue.SkinRequest(filePath, genReq)); + mineSkinQueue.add(new SkinGenerationRequest(filePath, variant, 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 553c997c..22337f18 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 @@ -4,21 +4,21 @@ 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.SkinGenerationRequest; import de.oliver.fancynpcs.skins.SkinManagerImpl; import org.mineskin.data.SkinInfo; import org.mineskin.data.Variant; -import org.mineskin.request.GenerateRequest; import java.util.LinkedList; import java.util.Queue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class MineSkinQueue implements SkinGenerationQueue { +public class MineSkinQueue implements SkinGenerationQueue { private static MineSkinQueue INSTANCE; private final MineSkinAPI api; - private final Queue queue; + private final Queue queue; private ScheduledFuture scheduler; private long nextRequestTime = System.currentTimeMillis(); @@ -38,6 +38,7 @@ public class MineSkinQueue implements SkinGenerationQueue getScheduler() { return scheduler; } - public record SkinRequest(String id, GenerateRequest request) { - } } 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 11cfee4c..1740532b 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 @@ -4,6 +4,7 @@ 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.SkinGenerationRequest; import de.oliver.fancynpcs.skins.SkinManagerImpl; import de.oliver.fancynpcs.skins.mineskin.RatelimitException; @@ -12,11 +13,11 @@ import java.util.Queue; import java.util.concurrent.ScheduledFuture; import java.util.concurrent.TimeUnit; -public class MojangQueue implements SkinGenerationQueue { +public class MojangQueue implements SkinGenerationQueue { private static MojangQueue INSTANCE; - private final Queue queue; + private final Queue queue; private final MojangAPI api; private ScheduledFuture scheduler; private long nextRequestTime = System.currentTimeMillis(); @@ -36,6 +37,7 @@ public class MojangQueue implements SkinGenerationQueue return INSTANCE; } + @Override public void run() { scheduler = SkinManagerImpl.EXECUTOR.scheduleWithFixedDelay(this::pollMany, 5, 1, TimeUnit.SECONDS); } @@ -56,15 +58,15 @@ public class MojangQueue implements SkinGenerationQueue return; } - SkinRequest req = this.queue.poll(); + SkinGenerationRequest req = this.queue.poll(); if (req == null) { return; } try { - FancyNpcs.getInstance().getFancyLogger().debug("Fetching skin from Mojang: " + req.uuid()); - SkinData skinData = this.api.fetchSkin(req.uuid(), req.variant()); - new SkinGeneratedEvent(req.uuid(), skinData).callEvent(); + FancyNpcs.getInstance().getFancyLogger().debug("Fetching skin from Mojang: " + req.getID()); + SkinData skinData = this.api.fetchSkin(req.getID(), req.getVariant()); + new SkinGeneratedEvent(req.getID(), skinData).callEvent(); } catch (RatelimitException e) { this.nextRequestTime = e.getNextRequestTime(); this.queue.add(req); @@ -75,10 +77,11 @@ public class MojangQueue implements SkinGenerationQueue this.nextRequestTime = System.currentTimeMillis(); } - public void add(SkinRequest req) { + @Override + public void add(SkinGenerationRequest req) { // check if request is already in queue - for (SkinRequest r : this.queue) { - if (r.uuid().equals(req.uuid())) { + for (SkinGenerationRequest r : this.queue) { + if (r.getID().equals(req.getID())) { return; } } @@ -86,15 +89,14 @@ public class MojangQueue implements SkinGenerationQueue this.queue.add(req); } + @Override public void clear() { this.queue.clear(); } + @Override public ScheduledFuture getScheduler() { return scheduler; } - public record SkinRequest(String uuid, SkinData.SkinVariant variant) { - } - }