From ac428c73b672bbfb67fd7d23b6386edb7749a21e Mon Sep 17 00:00:00 2001 From: urFate Date: Sat, 2 Apr 2022 18:11:00 +0300 Subject: [PATCH 1/3] Add active potion effects HUD --- .../gui/hudgui/elements/player/Effects.kt | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt diff --git a/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt new file mode 100644 index 000000000..6869a4890 --- /dev/null +++ b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt @@ -0,0 +1,31 @@ +package com.lambda.client.gui.hudgui.elements.player + +import com.lambda.client.event.SafeClientEvent +import com.lambda.client.gui.hudgui.LabelHud +import com.lambda.client.util.color.ColorConverter +import com.lambda.client.util.text.RomanNumerals +import net.minecraft.potion.* +import net.minecraft.client.resources.I18n + +internal object Effects : LabelHud( + name = "Effects", + category = Category.PLAYER, + description = "Displays active effects" +) { + + private val romanNumerals by setting("Roman Numerals", true) + private val coloredEffectNames by setting("Colored Effect Names", true) + + override fun SafeClientEvent.updateText() { + player.activePotionEffects.forEach{ + val amplifier = if (romanNumerals) RomanNumerals.numberToRoman(it.amplifier + 1) else (it.amplifier + 1).toString() + val duration = Potion.getPotionDurationString(it, 1f) + val color = if (coloredEffectNames) ColorConverter.hexToRgb(it.potion.liquidColor) else secondaryColor + val name = I18n.format(it.potion.name) + + displayText.add(name, color) + displayText.add(amplifier, primaryColor) + displayText.addLine("(${duration})", primaryColor) + } + } +} From c1dff6f65eb7c5e9c47a627e1cc64ddffc53195a Mon Sep 17 00:00:00 2001 From: urFate Date: Sun, 3 Apr 2022 14:43:48 +0300 Subject: [PATCH 2/3] Sort by ascending duration --- .../com/lambda/client/gui/hudgui/elements/player/Effects.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt index 6869a4890..7edcf1a0b 100644 --- a/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt +++ b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt @@ -17,7 +17,9 @@ internal object Effects : LabelHud( private val coloredEffectNames by setting("Colored Effect Names", true) override fun SafeClientEvent.updateText() { - player.activePotionEffects.forEach{ + val potionComparator = Comparator{ pot1: PotionEffect, pot2: PotionEffect -> pot1.duration - pot2.duration } + + player.activePotionEffects.sortedWith(potionComparator).forEach { val amplifier = if (romanNumerals) RomanNumerals.numberToRoman(it.amplifier + 1) else (it.amplifier + 1).toString() val duration = Potion.getPotionDurationString(it, 1f) val color = if (coloredEffectNames) ColorConverter.hexToRgb(it.potion.liquidColor) else secondaryColor From 9d2a60cbf0dbe5dfdf503166b125d042b6fe9468 Mon Sep 17 00:00:00 2001 From: Constructor Date: Thu, 7 Apr 2022 22:45:40 +0200 Subject: [PATCH 3/3] Simplify comparator --- .../com/lambda/client/gui/hudgui/elements/player/Effects.kt | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt index 7edcf1a0b..49d226d33 100644 --- a/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt +++ b/src/main/kotlin/com/lambda/client/gui/hudgui/elements/player/Effects.kt @@ -17,9 +17,7 @@ internal object Effects : LabelHud( private val coloredEffectNames by setting("Colored Effect Names", true) override fun SafeClientEvent.updateText() { - val potionComparator = Comparator{ pot1: PotionEffect, pot2: PotionEffect -> pot1.duration - pot2.duration } - - player.activePotionEffects.sortedWith(potionComparator).forEach { + player.activePotionEffects.sortedBy { it.duration }.forEach { val amplifier = if (romanNumerals) RomanNumerals.numberToRoman(it.amplifier + 1) else (it.amplifier + 1).toString() val duration = Potion.getPotionDurationString(it, 1f) val color = if (coloredEffectNames) ColorConverter.hexToRgb(it.potion.liquidColor) else secondaryColor