summaryrefslogtreecommitdiff
path: root/src/main/java/at/hannibal2/skyhanni/features/misc
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/hannibal2/skyhanni/features/misc')
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/RenderColumn.kt6
-rw-r--r--src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt38
2 files changed, 34 insertions, 10 deletions
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/RenderColumn.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/RenderColumn.kt
index 2ee1e3442..894dee93b 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/RenderColumn.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/RenderColumn.kt
@@ -1,8 +1,6 @@
package at.hannibal2.skyhanni.features.misc.compacttablist
-class RenderColumn {
-
- val lines = mutableListOf<TabLine>()
+class RenderColumn(val lines: MutableList<TabLine> = mutableListOf()) {
fun size(): Int {
return lines.size
@@ -15,4 +13,4 @@ class RenderColumn {
fun getMaxWidth(): Int {
return lines.maxOfOrNull { it.getWidth() } ?: 0
}
-} \ No newline at end of file
+}
diff --git a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt
index d5cc7f875..b796b6e79 100644
--- a/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt
+++ b/src/main/java/at/hannibal2/skyhanni/features/misc/compacttablist/TabListRenderer.kt
@@ -1,8 +1,11 @@
package at.hannibal2.skyhanni.features.misc.compacttablist
import at.hannibal2.skyhanni.SkyHanniMod
+import at.hannibal2.skyhanni.events.SkipTabListLineEvent
import at.hannibal2.skyhanni.mixins.transformers.AccessorGuiPlayerTabOverlay
import at.hannibal2.skyhanni.utils.LorenzUtils
+import at.hannibal2.skyhanni.utils.StringUtils.matches
+import at.hannibal2.skyhanni.utils.repopatterns.RepoPattern
import net.minecraft.client.Minecraft
import net.minecraft.client.gui.Gui
import net.minecraft.client.gui.ScaledResolution
@@ -91,18 +94,31 @@ object TabListRenderer {
}
var middleX = x
+ var lastTitle = null as TabLine?
+ var lastSubTitle = null as TabLine?
for (column in columns) {
var middleY = if (config.hideAdverts) headerY else headerY + padding + 2
+ val filteredColumn = column.lines.filterTo(mutableListOf()) { tabLine ->
+ if (tabLine.type == TabStringType.TITLE) {
+ lastSubTitle = null
+ lastTitle = tabLine
+ }
+ if (tabLine.type == TabStringType.SUB_TITLE) {
+ lastSubTitle = tabLine
+ }
+ !SkipTabListLineEvent(tabLine, lastSubTitle, lastTitle).postAndCatch()
+ }.let(::RenderColumn)
+
Gui.drawRect(
middleX - padding + 1,
middleY - padding + 1,
- middleX + column.getMaxWidth() + padding - 2,
- middleY + column.size() * lineHeight + padding - 2,
+ middleX + filteredColumn.getMaxWidth() + padding - 2,
+ middleY + filteredColumn.size() * lineHeight + padding - 2,
0x20AAAAAA
)
- for (tabLine in column.lines) {
+ for (tabLine in filteredColumn.lines) {
val savedX = middleX
val hideIcons = config.advancedPlayerList.hidePlayerIcons && !AdvancedPlayerList.ignoreCustomTabList()
@@ -125,7 +141,7 @@ object TabListRenderer {
if (tabLine.type == TabStringType.TITLE) {
minecraft.fontRendererObj.drawStringWithShadow(
text,
- middleX + column.getMaxWidth() / 2f - tabLine.getWidth() / 2f,
+ middleX + filteredColumn.getMaxWidth() / 2f - tabLine.getWidth() / 2f,
middleY.toFloat(),
0xFFFFFF
)
@@ -140,7 +156,7 @@ object TabListRenderer {
middleY += lineHeight
middleX = savedX
}
- middleX += column.getMaxWidth() + columnSpacing
+ middleX += filteredColumn.getMaxWidth() + columnSpacing
}
if (footer.isNotEmpty()) {
@@ -156,4 +172,14 @@ object TabListRenderer {
}
}
}
-} \ No newline at end of file
+
+ val fireSaleRegex by RepoPattern.pattern("tablist.firesaletitle", "^§b§lFire Sales: §r§f\\([0-9]+\\)$")
+
+ @SubscribeEvent
+ fun hideFireFromTheTabListBecauseWhoWantsThose(event: SkipTabListLineEvent) {
+ if (config.hideFiresales && event.lastSubTitle != null && fireSaleRegex.matches(event.lastSubTitle.text)) {
+ event.cancel()
+ }
+ }
+
+}