From e3e3191e6cbc36b087be72f411b70779db5129b0 Mon Sep 17 00:00:00 2001 From: BONNe Date: Sun, 3 Nov 2019 22:45:24 +0200 Subject: [PATCH] Fix a bug with challenge deletion. If challenge has been left in a level, then system did not remove challenge from it and was kept as ghost challenge, preventing from completing level. --- .../bentobox/challenges/ChallengesManager.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/main/java/world/bentobox/challenges/ChallengesManager.java b/src/main/java/world/bentobox/challenges/ChallengesManager.java index bca29bf..2cc3aa2 100644 --- a/src/main/java/world/bentobox/challenges/ChallengesManager.java +++ b/src/main/java/world/bentobox/challenges/ChallengesManager.java @@ -1669,11 +1669,22 @@ public class ChallengesManager { if (this.challengeCacheData.containsKey(challenge.getUniqueId())) { + // First remove challenge from its owner level. + + if (!challenge.getLevel().equals(FREE)) + { + ChallengeLevel level = this.getLevel(challenge.getLevel()); + + if (level != null) + { + this.removeChallengeFromLevel(challenge, level); + } + } + + // Afterwards remove challenge from the database. + this.challengeCacheData.remove(challenge.getUniqueId()); this.challengeDatabase.deleteObject(challenge); - - this.addon.getPlugin().getPlaceholdersManager(). - unregisterPlaceholder("challenges_challenge_repetition_count_" + challenge.getUniqueId()); } }