@@ -7,15 +7,19 @@ import com.noxcrew.sheeplib.GuiGraphicsExt
77import com.noxcrew.sheeplib.dialog.title.DialogTitleWidget
88import com.noxcrew.sheeplib.theme.Theme
99import com.noxcrew.sheeplib.theme.Themed
10+ import net.minecraft.ChatFormatting
1011import net.minecraft.client.Minecraft
1112import net.minecraft.client.gui.GuiGraphics
1213import net.minecraft.client.gui.components.AbstractWidget
1314import net.minecraft.client.gui.layouts.Layout
1415import net.minecraft.client.renderer.RenderPipelines
16+ import net.minecraft.network.chat.Component
1517import net.minecraft.util.ARGB
1618import net.minecraft.util.Mth
1719import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval
20+ import org.slf4j.LoggerFactory
1821import 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 }
0 commit comments