diff --git a/build.gradle.kts b/build.gradle.kts index 6634efc..3d41004 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -24,11 +24,16 @@ labyMod { minecraft { registerVersions( "1.8.9", + "1.12.2", + "1.16.5", "1.17.1", "1.18.2", "1.19.2", "1.19.3", - "23w04a" + "1.19.4", + "1.20.1", + "1.20.2", + "1.20.4" ) { version, provider -> configureRun(provider, version) } diff --git a/core/src/main/java/net/crazy/badges/core/Badges.java b/core/src/main/java/net/crazy/badges/core/Badges.java index 431d0c1..8ce565b 100644 --- a/core/src/main/java/net/crazy/badges/core/Badges.java +++ b/core/src/main/java/net/crazy/badges/core/Badges.java @@ -24,7 +24,7 @@ public class Badges extends LabyAddon { public final ExecutorService executor = Executors.newFixedThreadPool(6); - public final LinkedHashMap badges = new LinkedHashMap<>(); + public LinkedHashMap badges = new LinkedHashMap<>(); public final HashMap> playerCache = new HashMap<>(); public BadgeUtil badgeUtil; diff --git a/core/src/main/java/net/crazy/badges/core/badges/BadgeUtil.java b/core/src/main/java/net/crazy/badges/core/badges/BadgeUtil.java index 01a9baa..3895e01 100644 --- a/core/src/main/java/net/crazy/badges/core/badges/BadgeUtil.java +++ b/core/src/main/java/net/crazy/badges/core/badges/BadgeUtil.java @@ -3,7 +3,10 @@ import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; -import java.util.UUID; + +import java.util.*; +import java.util.stream.Collectors; + import net.crazy.badges.core.Badges; import net.labymod.api.util.io.web.URLResolver; import net.labymod.api.util.io.web.WebResponse; @@ -39,6 +42,8 @@ public void success(JsonElement result) { Badge badge = new Badge(addon, id, uuid, name, description); addon.badges.put(uuid, badge); } + + addon.badges = sortBadgesByID(addon.badges); } @Override @@ -48,4 +53,15 @@ public void failed(WebRequestException exception) { } })); } + + private LinkedHashMap sortBadgesByID(LinkedHashMap badges) { + return badges.entrySet().stream() + .sorted(Comparator.comparing(entry -> entry.getValue().getId())) + .collect(Collectors.toMap( + Map.Entry::getKey, + Map.Entry::getValue, + (e1, e2) -> e1, + LinkedHashMap::new + )); + } } diff --git a/core/src/main/java/net/crazy/badges/core/tags/BadgeTag.java b/core/src/main/java/net/crazy/badges/core/tags/BadgeTag.java index 1df46fb..79c19dd 100644 --- a/core/src/main/java/net/crazy/badges/core/tags/BadgeTag.java +++ b/core/src/main/java/net/crazy/badges/core/tags/BadgeTag.java @@ -1,6 +1,8 @@ package net.crazy.badges.core.tags; import java.util.LinkedList; +import java.util.UUID; + import net.crazy.badges.core.Badges; import net.crazy.badges.core.badges.Badge; import net.labymod.api.client.entity.Entity; @@ -35,17 +37,16 @@ public void render(Stack stack, Entity livingEntity) { return; } - LinkedList badges = addon.playerCache.get(player.getUniqueId()); + LinkedList badges = new LinkedList<>(addon.playerCache.get(player.getUniqueId())); - if (badges == null) { + if (badges.isEmpty()) { return; } if (addon.configuration().compact()) { - badges.removeIf(badge -> - (badge.getId() == 9 && hasBadge(badges, 10)) || - (badge.getId() == 10 && hasBadge(badges, 11)) || - (badge.getId() == 11 && hasBadge(badges, 13))); + badges.removeIf(badge -> badge.getId() == 9 && hasBadge(badges, 10)); // Remove 'Streak I' if user also has 'Streak II' + badges.removeIf(badge -> badge.getId() == 10 && hasBadge(badges, 11)); // Remove 'Streak II' if user also has 'Streak III' + badges.removeIf(badge -> badge.getId() == 11 && hasBadge(badges, 13)); // Remove 'Streak III' if user also has 'Highest Streak' } int amount = badges.size(); diff --git a/settings.gradle.kts b/settings.gradle.kts index 3ac33ca..c3b3522 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,7 @@ rootProject.name = "badges" pluginManagement { - val labyGradlePluginVersion = "0.3.25" + val labyGradlePluginVersion = "0.3.43" plugins { id("net.labymod.gradle") version (labyGradlePluginVersion) }