From 097b26f9cc53926426ffc7a97068c4f11fa2c391 Mon Sep 17 00:00:00 2001 From: Thatsmusic99 <25277367+thatsmusic99@users.noreply.github.com> Date: Wed, 21 Jun 2023 19:49:13 +0100 Subject: [PATCH] fix: async UUID grabbing in offline mode --- .../thatsmusic99/headsplus/commands/AddHead.java | 4 ++-- .../headsplus/listeners/PlayerJoinListener.java | 3 +-- .../headsplus/managers/AutograbManager.java | 11 +++++++++++ 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/main/java/io/github/thatsmusic99/headsplus/commands/AddHead.java b/src/main/java/io/github/thatsmusic99/headsplus/commands/AddHead.java index c1653c1a..c2583d14 100644 --- a/src/main/java/io/github/thatsmusic99/headsplus/commands/AddHead.java +++ b/src/main/java/io/github/thatsmusic99/headsplus/commands/AddHead.java @@ -51,7 +51,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command return true; } HeadsPlus hp = HeadsPlus.get(); - HPUtils.getOfflinePlayer(args[0]).thenAccept(player -> { + HPUtils.getOfflinePlayer(args[0]).thenAcceptAsync(player -> { String uuid = player.getUniqueId().toString(); if (!hp.getServer().getOnlineMode()) { hp.getLogger().warning("Server is in offline mode, player may have an invalid account! Attempting" + @@ -61,7 +61,7 @@ public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command if (AutograbManager.grabProfile(uuid, sender, true)) { hpc.sendMessage("commands.addhead.head-adding", sender, "{player}", player.getName()); } - }); + }, HeadsPlus.async); return true; } else { if (sender.hasPermission("headsplus.addhead.texture")) { diff --git a/src/main/java/io/github/thatsmusic99/headsplus/listeners/PlayerJoinListener.java b/src/main/java/io/github/thatsmusic99/headsplus/listeners/PlayerJoinListener.java index da3698a2..323e0e17 100644 --- a/src/main/java/io/github/thatsmusic99/headsplus/listeners/PlayerJoinListener.java +++ b/src/main/java/io/github/thatsmusic99/headsplus/listeners/PlayerJoinListener.java @@ -32,8 +32,7 @@ public void onEvent(PlayerJoinEvent e) { if (!hp.getServer().getOnlineMode()) { hp.getLogger().warning("Server is in offline mode, player may have an invalid account! Attempting to " + "grab UUID..."); - String uuid = AutograbManager.grabUUID(player.getName(), 3, null); - AutograbManager.grabProfile(uuid); + AutograbManager.grabProfileUUID(player.getName()); } else { AutograbManager.grabTexture(player, false, null); } diff --git a/src/main/java/io/github/thatsmusic99/headsplus/managers/AutograbManager.java b/src/main/java/io/github/thatsmusic99/headsplus/managers/AutograbManager.java index d7aae2b1..9325491a 100644 --- a/src/main/java/io/github/thatsmusic99/headsplus/managers/AutograbManager.java +++ b/src/main/java/io/github/thatsmusic99/headsplus/managers/AutograbManager.java @@ -12,6 +12,7 @@ import org.bukkit.ChatColor; import org.bukkit.OfflinePlayer; import org.bukkit.command.CommandSender; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.json.simple.JSONObject; import org.json.simple.JSONValue; @@ -24,6 +25,9 @@ import java.nio.charset.StandardCharsets; import java.util.*; +/** + * Used to manage the texture autograbber. + */ public class AutograbManager { // texture lookups need to be protected from spam @@ -89,6 +93,13 @@ public static boolean grabProfile(@Nullable String id, CommandSender callback, b return true; } + public static void grabProfileUUID(@NotNull String name) { + Bukkit.getScheduler().runTaskAsynchronously(HeadsPlus.get(), () -> { + String uuid = grabUUID(name, 3, null); + grabProfile(uuid); + }); + } + public static void grabProfile(@Nullable String id) { grabProfile(id, null, false); }