From f929e7d5f286dd0dac337e350c8296a888bcbe4b Mon Sep 17 00:00:00 2001 From: tastybento Date: Wed, 23 Oct 2024 20:46:17 -0700 Subject: [PATCH 1/2] Possible fix for #326 --- .../managers/ChallengesManager.java | 32 +++++++++++-------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/main/java/world/bentobox/challenges/managers/ChallengesManager.java b/src/main/java/world/bentobox/challenges/managers/ChallengesManager.java index 39d68895..a61e175c 100644 --- a/src/main/java/world/bentobox/challenges/managers/ChallengesManager.java +++ b/src/main/java/world/bentobox/challenges/managers/ChallengesManager.java @@ -113,32 +113,36 @@ public class ChallengesManager * This comparator orders challenges by their level, order and name. */ private final Comparator challengeComparator = (o1, o2) -> { + // Get the levels ChallengeLevel o1Level = this.getLevel(o1.getLevel()); ChallengeLevel o2Level = this.getLevel(o2.getLevel()); - if (o1Level == null && o2Level == null) - { + // Handle null levels consistently + if (o1Level == null && o2Level == null) { + // Both levels are null, compare by order return Integer.compare(o1.getOrder(), o2.getOrder()); - } - else if (o1Level == null) - { + } else if (o1Level == null) { + // If o1 level is null, it should be ordered lower return -1; - } - else if (o2Level == null) - { + } else if (o2Level == null) { + // If o2 level is null, it should be ordered lower return 1; } - else if (o1Level.equals(o2Level)) - { + + // If both levels are non-null, compare their orders + int levelComparison = Integer.compare(o1Level.getOrder(), o2Level.getOrder()); + + // If levels are the same, compare by challenge order + if (levelComparison == 0) { return Integer.compare(o1.getOrder(), o2.getOrder()); } - else - { - return Integer.compare(o1Level.getOrder(), o2Level.getOrder()); - } + + // Return the level comparison result + return levelComparison; }; + // --------------------------------------------------------------------- // Section: Constructor // --------------------------------------------------------------------- From 7ae721a066530f91591701d25403494b43fe40d3 Mon Sep 17 00:00:00 2001 From: tastybento Date: Wed, 23 Oct 2024 21:10:26 -0700 Subject: [PATCH 2/2] Add a ConversationAbandonedListener --- .../world/bentobox/challenges/panel/ConversationUtils.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/world/bentobox/challenges/panel/ConversationUtils.java b/src/main/java/world/bentobox/challenges/panel/ConversationUtils.java index 76873acd..270528f9 100644 --- a/src/main/java/world/bentobox/challenges/panel/ConversationUtils.java +++ b/src/main/java/world/bentobox/challenges/panel/ConversationUtils.java @@ -119,6 +119,9 @@ public String getPromptText(@NotNull ConversationContext conversationContext) withFirstPrompt(confirmationPrompt). withLocalEcho(false). withTimeout(90). + // Use null value in consumer to detect if user has abandoned conversation. + addConversationAbandonedListener(ConversationUtils.getAbandonListener(consumer, user)) + . buildConversation(user.getPlayer()). begin(); }