@@ -9,13 +9,19 @@ import net.ccbluex.liquidbounce.event.UpdateEvent
99import net.ccbluex.liquidbounce.event.handler
1010import net.ccbluex.liquidbounce.features.module.Category
1111import net.ccbluex.liquidbounce.features.module.Module
12+ import net.ccbluex.liquidbounce.features.module.modules.movement.InvMove
1213import net.ccbluex.liquidbounce.injection.forge.mixins.gui.MixinGuiContainerAccessor
1314import net.minecraft.client.gui.inventory.GuiContainer
15+ import net.minecraft.client.settings.GameSettings
16+ import net.minecraft.client.settings.KeyBinding
1417import org.lwjgl.input.Mouse
1518import java.awt.Color
1619
1720object BetterInventory : Module(" BetterInventory" , Category .OTHER , Category .SubCategory .MISCELLANEOUS , gameDetecting = false ) {
1821
22+ private val moveWhileOpen by boolean(" MoveWhileOpen" , true )
23+ .describe(" Keep walking, sprinting and jumping while an inventory or chest screen is open." )
24+
1925 val highlightClicked by boolean(" HighlightClicked" , true )
2026 .describe(" Highlight the last slot you clicked." )
2127 val highlightMode by choices(" HighlightMode" , arrayOf(" Border" , " Fill" ), " Border" ) { highlightClicked }
@@ -30,15 +36,28 @@ object BetterInventory : Module("BetterInventory", Category.OTHER, Category.SubC
3036
3137 private var leftHeld = false
3238 private var rightHeld = false
39+ private var drivingMovement = false
40+
41+ private val movementBindings = arrayOf(
42+ mc.gameSettings.keyBindForward,
43+ mc.gameSettings.keyBindBack,
44+ mc.gameSettings.keyBindLeft,
45+ mc.gameSettings.keyBindRight,
46+ mc.gameSettings.keyBindJump,
47+ mc.gameSettings.keyBindSprint
48+ )
3349
3450 val onUpdate = handler<UpdateEvent > {
3551 val screen = mc.currentScreen as ? GuiContainer ? : run {
3652 clickedSlot = - 1
3753 leftHeld = false
3854 rightHeld = false
55+ releaseMovement()
3956 return @handler
4057 }
4158
59+ driveMovement()
60+
4261 val leftDown = Mouse .isButtonDown(0 )
4362 val rightDown = Mouse .isButtonDown(1 )
4463
@@ -52,4 +71,27 @@ object BetterInventory : Module("BetterInventory", Category.OTHER, Category.SubC
5271 leftHeld = leftDown
5372 rightHeld = rightDown
5473 }
74+
75+ /* * Presses the movement bindings while a container is open, yielding to the dedicated InvMove module. */
76+ private fun driveMovement () {
77+ if (! moveWhileOpen || InvMove .handleEvents()) {
78+ releaseMovement()
79+ return
80+ }
81+ drivingMovement = true
82+ for (binding in movementBindings) binding.pressed = isPhysicallyDown(binding)
83+ }
84+
85+ private fun releaseMovement () {
86+ if (! drivingMovement) return
87+ drivingMovement = false
88+ for (binding in movementBindings) binding.pressed = isPhysicallyDown(binding)
89+ }
90+
91+ private fun isPhysicallyDown (binding : KeyBinding ): Boolean =
92+ if (binding.keyCode < 0 ) Mouse .isButtonDown(binding.keyCode + 100 ) else GameSettings .isKeyDown(binding)
93+
94+ override fun onDisable () {
95+ releaseMovement()
96+ }
5597}
0 commit comments