From a8fd1ad99ffd0059dc11ba26552d034dad6cb21b Mon Sep 17 00:00:00 2001
From: IceTank <61137113+IceTank@users.noreply.github.com>
Date: Mon, 2 Feb 2026 02:20:49 +0100
Subject: [PATCH] feat(AutoWalk): Add basic AutoWalk module
---
.../module/modules/movement/AutoWalk.kt | 79 +++++++++++++++++++
1 file changed, 79 insertions(+)
create mode 100644 src/main/kotlin/com/lambda/module/modules/movement/AutoWalk.kt
diff --git a/src/main/kotlin/com/lambda/module/modules/movement/AutoWalk.kt b/src/main/kotlin/com/lambda/module/modules/movement/AutoWalk.kt
new file mode 100644
index 000000000..1fb095055
--- /dev/null
+++ b/src/main/kotlin/com/lambda/module/modules/movement/AutoWalk.kt
@@ -0,0 +1,79 @@
+/*
+ * Copyright 2026 Lambda
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package com.lambda.module.modules.movement
+
+import com.lambda.event.events.MovementEvent
+import com.lambda.event.events.TickEvent
+import com.lambda.event.listener.SafeListener.Companion.listen
+import com.lambda.module.Module
+import com.lambda.module.tag.ModuleTag
+import com.lambda.util.Timer
+import com.lambda.util.player.MovementUtils.update
+import kotlin.time.DurationUnit
+import kotlin.time.toDuration
+
+class AutoWalk : Module(
+ name = "AutoWalk",
+ description = "Automatically makes your character walk forward",
+ tag = ModuleTag.MOVEMENT,
+) {
+ val pause by setting("Enable Pause", false)
+ val pauseTime by setting("Pause Time", 0, 0..200, 5, unit = "ms") { pause }
+ val pauseInterval by setting("Pause Interval", 0, 0..5000, 100, unit = "ms") { pause }
+
+ var pauseTimer = Timer()
+ val pauseIntervalTimer = Timer()
+
+ var state = State.Walking
+
+ init {
+ listen {
+ if (!pause) return@listen
+ when (state) {
+ State.Walking -> {
+ if (!pauseIntervalTimer.timePassed(pauseInterval.toDuration(DurationUnit.MILLISECONDS))) return@listen
+ pauseIntervalTimer.reset()
+ pauseTimer.reset()
+ state = State.Pausing
+ }
+ State.Pausing -> {
+ if (!pauseTimer.timePassed(pauseTime.toDuration(DurationUnit.MILLISECONDS))) return@listen
+ pauseTimer.reset()
+ pauseIntervalTimer.reset()
+ state = State.Walking
+ }
+ }
+ }
+
+ onEnable {
+ pauseTimer.reset()
+ pauseIntervalTimer.reset()
+ state = State.Walking
+ }
+
+ listen { event ->
+ if (pause && state == State.Pausing) return@listen
+ event.input.update(forward = 1.0)
+ }
+ }
+
+ enum class State {
+ Walking,
+ Pausing
+ }
+}
\ No newline at end of file