From 2ad9ae3c7fb6b4560877cdc1eb1bf7ea795f2fd8 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Sun, 31 May 2026 23:04:08 +0200 Subject: [PATCH] Fix Advancements Placements --- CommonCore/SQL/src/de/steamwar/sql/EventFight.kt | 7 ++++++- .../steamwar/velocitycore/advancements/Advancements.java | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt b/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt index 34288b7d..bdbce609 100644 --- a/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt +++ b/CommonCore/SQL/src/de/steamwar/sql/EventFight.kt @@ -151,7 +151,12 @@ class EventFight(id: EntityID) : IntEntity(id), Comparable { fun countPlacement(fighter: SteamwarUser, placement: Int) = useDb { exec( - "SELECT COUNT(*) AS PlacementCount FROM FightPlayer INNER JOIN Fight F on FightPlayer.FightID = F.FightID INNER JOIN EventFight EF on F.FightID = EF.Fight INNER JOIN TeamTeilnahme TT on TT.EventID = EF.EventID WHERE UserID = ? AND Placement = ?", + """ + SELECT COUNT(DISTINCT EventFight.EventID) AS PlacementCount FROM TeamTeilnahme + INNER JOIN EventFight ON EventFight.EventID = TeamTeilnahme.EventID + INNER JOIN FightPlayer ON FightPlayer.FightID = EventFight.Fight + WHERE (IF(FightPlayer.Team = 1, EventFight.TeamBlue, EventFight.TeamRed)) = TeamTeilnahme.TeamID AND UserID = ? AND Placement = ? + """.trimIndent(), args = listOf(IntegerColumnType() to fighter.id.value, IntegerColumnType() to placement) ) { if (it.next()) { diff --git a/VelocityCore/src/de/steamwar/velocitycore/advancements/Advancements.java b/VelocityCore/src/de/steamwar/velocitycore/advancements/Advancements.java index 846e05f0..bb1909ec 100644 --- a/VelocityCore/src/de/steamwar/velocitycore/advancements/Advancements.java +++ b/VelocityCore/src/de/steamwar/velocitycore/advancements/Advancements.java @@ -196,7 +196,7 @@ public class Advancements { 2f + (placementCount - 1f), yCoord ), - Advancement.HidePolicy.WITH_PREVIOUS, + placementCount == 1 ? Advancement.HidePolicy.WITH_PREVIOUS : Advancement.HidePolicy.PREVIOUS_UNFINISHED, 1, user -> EventFight.countPlacement(user, placement) >= finalPlacementCount ? 1 : 0 );