diff --git a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java index 8ebad613..e1d47e04 100644 --- a/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java +++ b/common/src/main/java/com/hibiscusmc/hmccosmetics/database/types/SQLData.java @@ -10,6 +10,7 @@ import org.bukkit.Color; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.HashMap; import java.util.Map; import java.util.UUID; @@ -28,14 +29,20 @@ public abstract class SQLData extends Data { if (rs.next()) { String rawData = rs.getString("COSMETICS"); Map> cosmetics = deserializeData(user, rawData); + // Load cosmetics, put them into the addedCosmetic hashmap + HashMap addedCosmetics = new HashMap<>(); for (Map cosmeticColors : cosmetics.values()) { for (Cosmetic cosmetic : cosmeticColors.keySet()) { - Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { - // This can not be async. - user.addPlayerCosmetic(cosmetic, cosmeticColors.get(cosmetic)); - }); + addedCosmetics.put(cosmetic, cosmeticColors.get(cosmetic)); } } + // Run a task on the main thread, adding the cosmetics to the player + Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> { + // This can not be async. + for (Cosmetic cosmetic : addedCosmetics.keySet()) { + user.addPlayerCosmetic(cosmetic, addedCosmetics.get(cosmetic)); + } + }); } } catch (SQLException e) { e.printStackTrace();