Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
858553d
initial logger hud
beanbag44 Aug 21, 2025
2fccb8c
add logs
beanbag44 Aug 21, 2025
52f3af1
settings in the module
beanbag44 Aug 21, 2025
5e80a86
background
beanbag44 Aug 21, 2025
fdd5c91
better auto scroll and background alpha setting
beanbag44 Aug 21, 2025
f35adad
log chat warnings too
beanbag44 Aug 21, 2025
b4fb18a
lot type and state when starting and breaking block
beanbag44 Aug 21, 2025
03adc96
logger gui improvements
beanbag44 Aug 21, 2025
859e0d2
BreakInfo toString and more debug statements / edits
beanbag44 Aug 21, 2025
2787e2d
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Aug 22, 2025
fb96e62
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Aug 24, 2025
fb7da09
Merge remote-tracking branch 'NeoLambda/feature/manager-loggers' into…
beanbag44 Aug 31, 2025
b4afde9
place manager logs and other manager debug logger hud elements
beanbag44 Aug 31, 2025
61ebb81
all individual manager debug logger toggles inside one hud module
beanbag44 Sep 1, 2025
a988f1e
hotbar manager debug logs
beanbag44 Sep 1, 2025
98f9f87
log new stage before processing request
beanbag44 Sep 1, 2025
e6f2076
interaction manager logs
beanbag44 Sep 1, 2025
b16b248
rotation manager logs
beanbag44 Sep 2, 2025
df165b2
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 2, 2025
1f2a1a4
fix treeNode label / id argument order and inline textColored logic w…
beanbag44 Sep 5, 2025
f8beaff
a start to log contexts
beanbag44 Sep 5, 2025
282f90f
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 8, 2025
ee5a026
compile fixes
beanbag44 Sep 8, 2025
5603b69
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 8, 2025
a9c13ea
empty replace for sameLine calls
beanbag44 Sep 9, 2025
e86389e
BreakRequest toLogContext
beanbag44 Sep 9, 2025
d77d2e1
InteractRequest toLogContext
beanbag44 Sep 9, 2025
8f85012
InventoryRequest toLogContext
beanbag44 Sep 9, 2025
3804abb
PlaceRequest toLogContext
beanbag44 Sep 9, 2025
10df72d
RotationRequest toLogContext
beanbag44 Sep 9, 2025
b629941
BreakInfo and SwapInfo toLogContext
beanbag44 Sep 9, 2025
ca437fa
InteractionInfo toLogContext
beanbag44 Sep 9, 2025
dbdab88
PlaceInfo toLogContext
beanbag44 Sep 9, 2025
a5d4eb4
toLogContext for all manager contexts
beanbag44 Sep 9, 2025
582f1b3
value builder function
beanbag44 Sep 9, 2025
9a45a50
group build function
beanbag44 Sep 9, 2025
42eef99
annotation correction
beanbag44 Sep 9, 2025
aa6966c
better break manager logs and fancy styling
beanbag44 Sep 10, 2025
276dea2
hopefully better sameLine builder function
beanbag44 Sep 10, 2025
33ec725
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 14, 2025
77fecd7
use hud window
beanbag44 Sep 14, 2025
2183814
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 14, 2025
e409a2e
improved interaction manager logs
beanbag44 Sep 14, 2025
6ec157b
improved place manager logs
beanbag44 Sep 14, 2025
54d5c15
improved rotation manager logs
beanbag44 Sep 14, 2025
b93e060
move logger settings to hud module settings. This also saves the sett…
beanbag44 Sep 14, 2025
3f6dee3
Merge branch '1.21.5' into feature/manager-loggers
beanbag44 Sep 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 149 additions & 5 deletions src/main/kotlin/com/lambda/gui/dsl/ImGuiBuilder.kt
Original file line number Diff line number Diff line change
Expand Up @@ -39,15 +39,147 @@ package com.lambda.gui.dsl
import com.lambda.gui.components.ClickGuiLayout
import com.lambda.gui.dsl.ImGuiBuilder.text
import com.lambda.util.math.Vec2d
import imgui.*
import imgui.ImGui.*
import imgui.flag.*
import imgui.type.*
import imgui.ImDrawList
import imgui.ImFont
import imgui.ImGui
import imgui.ImGui.begin
import imgui.ImGui.beginChild
import imgui.ImGui.beginCombo
import imgui.ImGui.beginDragDropSource
import imgui.ImGui.beginDragDropTarget
import imgui.ImGui.beginGroup
import imgui.ImGui.beginMainMenuBar
import imgui.ImGui.beginMenu
import imgui.ImGui.beginMenuBar
import imgui.ImGui.beginPopup
import imgui.ImGui.beginPopupContextItem
import imgui.ImGui.beginPopupContextVoid
import imgui.ImGui.beginPopupContextWindow
import imgui.ImGui.beginPopupModal
import imgui.ImGui.beginTabBar
import imgui.ImGui.beginTabItem
import imgui.ImGui.beginTooltip
import imgui.ImGui.calcTextSize
import imgui.ImGui.collapsingHeader
import imgui.ImGui.colorButton
import imgui.ImGui.colorEdit4
import imgui.ImGui.colorPicker4
import imgui.ImGui.dragFloat
import imgui.ImGui.dragInt
import imgui.ImGui.end
import imgui.ImGui.endChild
import imgui.ImGui.endCombo
import imgui.ImGui.endDragDropSource
import imgui.ImGui.endDragDropTarget
import imgui.ImGui.endGroup
import imgui.ImGui.endMainMenuBar
import imgui.ImGui.endMenu
import imgui.ImGui.endMenuBar
import imgui.ImGui.endPopup
import imgui.ImGui.endTabBar
import imgui.ImGui.endTabItem
import imgui.ImGui.endTooltip
import imgui.ImGui.getBackgroundDrawList
import imgui.ImGui.getColorU32
import imgui.ImGui.getContentRegionAvail
import imgui.ImGui.getCursorPosX
import imgui.ImGui.getCursorPosY
import imgui.ImGui.getFont
import imgui.ImGui.getFontSize
import imgui.ImGui.getForegroundDrawList
import imgui.ImGui.getFrameHeight
import imgui.ImGui.getFrameHeightWithSpacing
import imgui.ImGui.getIO
import imgui.ImGui.getItemID
import imgui.ImGui.getItemRectMaxX
import imgui.ImGui.getItemRectMaxY
import imgui.ImGui.getItemRectMinX
import imgui.ImGui.getItemRectMinY
import imgui.ImGui.getStyle
import imgui.ImGui.getVersion
import imgui.ImGui.getWindowContentRegionMaxX
import imgui.ImGui.getWindowContentRegionMaxY
import imgui.ImGui.getWindowDrawList
import imgui.ImGui.getWindowHeight
import imgui.ImGui.getWindowPos
import imgui.ImGui.getWindowPosX
import imgui.ImGui.getWindowPosY
import imgui.ImGui.getWindowSize
import imgui.ImGui.getWindowViewport
import imgui.ImGui.getWindowWidth
import imgui.ImGui.image
import imgui.ImGui.inputDouble
import imgui.ImGui.inputFloat
import imgui.ImGui.inputFloat2
import imgui.ImGui.inputFloat3
import imgui.ImGui.inputFloat4
import imgui.ImGui.isAnyItemActive
import imgui.ImGui.isAnyItemFocused
import imgui.ImGui.isAnyItemHovered
import imgui.ImGui.isItemActivated
import imgui.ImGui.isItemActive
import imgui.ImGui.isItemClicked
import imgui.ImGui.isItemDeactivated
import imgui.ImGui.isItemDeactivatedAfterEdit
import imgui.ImGui.isItemEdited
import imgui.ImGui.isItemFocused
import imgui.ImGui.isItemHovered
import imgui.ImGui.isItemToggledOpen
import imgui.ImGui.isMouseClicked
import imgui.ImGui.isWindowAppearing
import imgui.ImGui.isWindowCollapsed
import imgui.ImGui.isWindowHovered
import imgui.ImGui.plotHistogram
import imgui.ImGui.popFont
import imgui.ImGui.popID
import imgui.ImGui.popItemWidth
import imgui.ImGui.popStyleColor
import imgui.ImGui.popStyleVar
import imgui.ImGui.popTextWrapPos
import imgui.ImGui.pushFont
import imgui.ImGui.pushID
import imgui.ImGui.pushItemWidth
import imgui.ImGui.pushStyleColor
import imgui.ImGui.pushStyleVar
import imgui.ImGui.pushTextWrapPos
import imgui.ImGui.setClipboardText
import imgui.ImGui.setCursorPosX
import imgui.ImGui.setCursorPosY
import imgui.ImGui.sliderFloat
import imgui.ImGui.sliderInt
import imgui.ImGui.textColored
import imgui.ImGui.textUnformatted
import imgui.ImGui.treeNode
import imgui.ImGui.treePop
import imgui.ImGuiIO
import imgui.ImGuiStyle
import imgui.ImGuiTextFilter
import imgui.ImGuiViewport
import imgui.ImVec2
import imgui.flag.ImDrawListFlags
import imgui.flag.ImGuiCol
import imgui.flag.ImGuiColorEditFlags
import imgui.flag.ImGuiComboFlags
import imgui.flag.ImGuiDir
import imgui.flag.ImGuiHoveredFlags
import imgui.flag.ImGuiInputTextFlags
import imgui.flag.ImGuiMouseButton
import imgui.flag.ImGuiPopupFlags
import imgui.flag.ImGuiSelectableFlags
import imgui.flag.ImGuiTabBarFlags
import imgui.flag.ImGuiTreeNodeFlags
import imgui.flag.ImGuiWindowFlags
import imgui.type.ImBoolean
import imgui.type.ImDouble
import imgui.type.ImFloat
import imgui.type.ImInt
import imgui.type.ImString
import net.minecraft.util.math.Vec2f
import net.minecraft.util.math.Vec3d
import net.minecraft.util.math.Vec3i
import java.awt.Color
import kotlin.reflect.KMutableProperty0
import imgui.ImGui.plotLines

typealias ProcedureBlock = ImGuiBuilder.() -> Unit
typealias WrappedBlock<In, Out> = ImGuiBuilder.(In) -> Out
Expand Down Expand Up @@ -312,6 +444,18 @@ object ImGuiBuilder {
@ImGuiDsl
fun text(text: String) = textUnformatted(text)

/**
* Text with coloring
*
* @param text The text to display
*/
@ImGuiDsl
fun textColored(text: String, color: Color) {
val floats = floatArrayOf(0f, 0f, 0f, 0f)
val (r, g, b, a) = color.getColorComponents(floats)
textColored(r, g, b, a, text)
}

/**
* Text with disabled coloring.
*
Expand Down Expand Up @@ -1171,7 +1315,7 @@ object ImGuiBuilder {
*/
@ImGuiDsl
inline fun treeNode(label: String, id: String, block: ProcedureBlock) {
if (treeNode(label, id)) {
if (treeNode(id, label)) {
block()
treePop()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,11 @@ import com.lambda.graphics.renderer.esp.DirectionMask
import com.lambda.graphics.renderer.esp.DirectionMask.exclude
import com.lambda.graphics.renderer.esp.ShapeBuilder
import com.lambda.interaction.material.StackSelection
import com.lambda.interaction.request.LogContext
import com.lambda.interaction.request.LogContext.Companion.LogContextBuilder
import com.lambda.interaction.request.LogContext.Companion.getLogContextBuilder
import com.lambda.interaction.request.breaking.BreakConfig
import com.lambda.interaction.request.breaking.BreakRequest
import com.lambda.interaction.request.hotbar.HotbarManager
import com.lambda.interaction.request.hotbar.HotbarRequest
import com.lambda.interaction.request.rotating.RotationRequest
import com.lambda.util.BlockUtils.emptyState
import net.minecraft.block.BlockState
Expand All @@ -42,7 +43,7 @@ data class BreakContext(
var instantBreak: Boolean,
override var cachedState: BlockState,
val sortMode: BreakConfig.SortMode
) : BuildContext() {
) : BuildContext(), LogContext {
private val baseColor = Color(222, 0, 0, 25)
private val sideColor = Color(222, 0, 0, 100)

Expand Down Expand Up @@ -76,10 +77,16 @@ data class BreakContext(
box(blockPos, cachedState, baseColor, sideColor, DirectionMask.ALL.exclude(result.side))
}

fun requestSwap(breakRequest: BreakRequest, minKeepTicks: Int = 0): Boolean =
HotbarRequest(
hotbarIndex,
breakRequest.hotbar,
breakRequest.hotbar.keepTicks.coerceAtLeast(minKeepTicks)
).submit(false).done
}
override fun getLogContextBuilder(): LogContextBuilder.() -> Unit = {
group("Break Context") {
text(blockPos.getLogContextBuilder())
text(result.getLogContextBuilder())
text(rotation.getLogContextBuilder())
value("Hotbar Index", hotbarIndex)
value("Instant Break", instantBreak)
value("Cached State", cachedState)
value("Expected State", expectedState)
value("Sort Mode", sortMode)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@ package com.lambda.interaction.construction.context

import com.lambda.graphics.renderer.esp.DirectionMask.mask
import com.lambda.graphics.renderer.esp.ShapeBuilder
import com.lambda.interaction.request.LogContext
import com.lambda.interaction.request.LogContext.Companion.LogContextBuilder
import com.lambda.interaction.request.LogContext.Companion.getLogContextBuilder
import com.lambda.interaction.request.Request.Companion.submit
import com.lambda.interaction.request.hotbar.HotbarManager
import com.lambda.interaction.request.hotbar.HotbarRequest
Expand All @@ -36,7 +39,7 @@ class InteractionContext(
override var hotbarIndex: Int,
override var cachedState: BlockState,
override val expectedState: BlockState,
) : BuildContext() {
) : BuildContext(), LogContext {
private val baseColor = Color(35, 254, 79, 25)
private val sideColor = Color(35, 254, 79, 100)

Expand Down Expand Up @@ -68,4 +71,15 @@ class InteractionContext(
val validRotation = if (request.rotate) submit(rotation, false).done else true
return hotbarRequest.done && validRotation
}

override fun getLogContextBuilder(): LogContextBuilder.() -> Unit = {
group("Interaction Context") {
text(blockPos.getLogContextBuilder())
text(result.getLogContextBuilder())
text(rotation.getLogContextBuilder())
value("Hotbar Index", hotbarIndex)
value("Cached State", cachedState)
value("Expected State", expectedState)
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,18 +18,17 @@
package com.lambda.interaction.construction.context

import com.lambda.Lambda.mc
import com.lambda.context.SafeContext
import com.lambda.graphics.renderer.esp.DirectionMask
import com.lambda.graphics.renderer.esp.DirectionMask.exclude
import com.lambda.graphics.renderer.esp.DirectionMask.mask
import com.lambda.graphics.renderer.esp.ShapeBuilder
import com.lambda.interaction.request.LogContext
import com.lambda.interaction.request.LogContext.Companion.LogContextBuilder
import com.lambda.interaction.request.LogContext.Companion.getLogContextBuilder
import com.lambda.interaction.request.Request.Companion.submit
import com.lambda.interaction.request.hotbar.HotbarManager
import com.lambda.interaction.request.hotbar.HotbarRequest
import com.lambda.interaction.request.placing.PlaceRequest
import com.lambda.interaction.request.rotating.RotationRequest
import com.lambda.util.BlockUtils
import com.lambda.util.BlockUtils.blockState
import net.minecraft.block.BlockState
import net.minecraft.util.hit.BlockHitResult
import net.minecraft.util.math.BlockPos
Expand All @@ -45,7 +44,7 @@ data class PlaceContext(
val sneak: Boolean,
val insideBlock: Boolean,
val currentDirIsValid: Boolean = false
) : BuildContext() {
) : BuildContext(), LogContext {
private val baseColor = Color(35, 188, 254, 25)
private val sideColor = Color(35, 188, 254, 100)

Expand Down Expand Up @@ -83,4 +82,18 @@ data class PlaceContext(
} else true
return hotbarRequest.done && validRotation
}
}

override fun getLogContextBuilder(): LogContextBuilder.() -> Unit = {
group("Place Context") {
text(blockPos.getLogContextBuilder())
text(result.getLogContextBuilder())
text(rotation.getLogContextBuilder())
value("Hotbar Index", hotbarIndex)
value("Cached State", cachedState)
value("Expected State", expectedState)
value("Sneak", sneak)
value("Inside Block", insideBlock)
value("Current Dir Is Invalid", currentDirIsValid)
}
}
}
Loading