Skip to content

Commit 1a750e3

Browse files
authored
fix: Respect dialog background opacity, catch popup init errors (#33)
* fix: Respect dialog background opacity * fix: Catch dialog init errors on popup * 1.4.1
1 parent a29e154 commit 1a750e3

File tree

3 files changed

+20
-3
lines changed

3 files changed

+20
-3
lines changed

api/src/main/kotlin/com/noxcrew/sheeplib/dialog/Dialog.kt

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,19 @@ import com.noxcrew.sheeplib.GuiGraphicsExt
77
import com.noxcrew.sheeplib.dialog.title.DialogTitleWidget
88
import com.noxcrew.sheeplib.theme.Theme
99
import com.noxcrew.sheeplib.theme.Themed
10+
import net.minecraft.ChatFormatting
1011
import net.minecraft.client.Minecraft
1112
import net.minecraft.client.gui.GuiGraphics
1213
import net.minecraft.client.gui.components.AbstractWidget
1314
import net.minecraft.client.gui.layouts.Layout
1415
import net.minecraft.client.renderer.RenderPipelines
16+
import net.minecraft.network.chat.Component
1517
import net.minecraft.util.ARGB
1618
import net.minecraft.util.Mth
1719
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval
20+
import org.slf4j.LoggerFactory
1821
import java.io.Closeable
22+
import kotlin.reflect.jvm.jvmName
1923

2024
/**
2125
* A base class for an interactable element present on the HUD.
@@ -55,7 +59,16 @@ public abstract class Dialog(
5559
* @see [popup]
5660
*/
5761
public fun popup(dialog: Dialog, replace: Boolean = false) {
58-
dialog.initIfNeeded()
62+
try {
63+
dialog.initIfNeeded()
64+
} catch (ex: Throwable) {
65+
Minecraft.getInstance().gui.chat.addMessage(
66+
Component.translatable("sheeplib.error").withStyle { it.withColor(ChatFormatting.RED) }
67+
)
68+
LoggerFactory.getLogger("SheepLib").error("Exception while initialising ${dialog::class.jvmName}:\n" + ex.stackTraceToString())
69+
return
70+
}
71+
5972
parent.let { p ->
6073
if (replace && p == null) {
6174
DialogContainer += dialog
@@ -185,7 +198,7 @@ public abstract class Dialog(
185198
y,
186199
x + getWidth(),
187200
y + getHeight(),
188-
ARGB.color(if (isPopupFocused()) (255 * POPUP_FOCUSED_OPACITY).toInt() else 255, baseColor)
201+
if (isPopupFocused()) ARGB.color(ARGB.alpha(baseColor) * POPUP_FOCUSED_OPACITY, baseColor) else baseColor
189202
)
190203
if (theme.dialogBorders) graphics.renderOutline(x, y, getWidth(), getHeight(), theme.colors.border)
191204
}

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import org.gradle.accessors.dm.LibrariesForLibs
22

3-
val VERSION = "1.4.0"
3+
val VERSION = "1.4.1"
44

55
allprojects {
66
group = "com.noxcrew.sheeplib"

buildSrc/src/main/kotlin/sheeplib.fabric.gradle.kts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ plugins {
66
kotlin("jvm")
77
}
88

9+
base {
10+
archivesName = "sheeplib-${project.name}"
11+
}
12+
913
// https://github.com/gradle/gradle/issues/15383#issuecomment-779893192
1014
internal val Project.libs get() = project.extensions.getByName("libs") as LibrariesForLibs
1115

0 commit comments

Comments
 (0)